feat(ansible): expose inventory become password

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-02 14:31:01 +00:00
parent 3e8a150375
commit cb1ffa8b64
3 changed files with 32 additions and 3 deletions

View file

@ -128,6 +128,30 @@ func TestExecutor_GetClient_Good_PlayVarsOverrideInventoryVars(t *testing.T) {
assert.Equal(t, "play-user", sshClient.user)
}
func TestExecutor_GetClient_Good_UsesInventoryBecomePassword(t *testing.T) {
e := NewExecutor("/tmp")
e.SetInventoryDirect(&Inventory{
All: &InventoryGroup{
Hosts: map[string]*Host{
"host1": {
AnsibleHost: "127.0.0.1",
AnsibleBecomePassword: "secret",
},
},
},
})
client, err := e.getClient("host1", &Play{Become: true, BecomeUser: "admin"})
require.NoError(t, err)
sshClient, ok := client.(*SSHClient)
require.True(t, ok)
become, user, pass := sshClient.BecomeState()
assert.True(t, become)
assert.Equal(t, "admin", user)
assert.Equal(t, "secret", pass)
}
func TestExecutor_GetClient_Good_UpdatesCachedBecomeState(t *testing.T) {
e := NewExecutor("/tmp")
e.SetInventoryDirect(&Inventory{

View file

@ -1147,6 +1147,9 @@ func collectHostVars(group *InventoryGroup, hostname string, vars map[string]any
if host.AnsibleConnection != "" {
vars["ansible_connection"] = host.AnsibleConnection
}
if host.AnsibleBecomePassword != "" {
vars["ansible_become_password"] = host.AnsibleBecomePassword
}
for k, v := range host.Vars {
vars[k] = v
}

View file

@ -843,9 +843,10 @@ func TestParser_GetHostVars_Good_DirectHost(t *testing.T) {
Vars: map[string]any{"global_var": "global"},
Hosts: map[string]*Host{
"myhost": {
AnsibleHost: "10.0.0.1",
AnsiblePort: 2222,
AnsibleUser: "deploy",
AnsibleHost: "10.0.0.1",
AnsiblePort: 2222,
AnsibleUser: "deploy",
AnsibleBecomePassword: "secret",
},
},
},
@ -855,6 +856,7 @@ func TestParser_GetHostVars_Good_DirectHost(t *testing.T) {
assert.Equal(t, "10.0.0.1", vars["ansible_host"])
assert.Equal(t, 2222, vars["ansible_port"])
assert.Equal(t, "deploy", vars["ansible_user"])
assert.Equal(t, "secret", vars["ansible_become_password"])
assert.Equal(t, "global", vars["global_var"])
}