Make sure ansible_become treated as a boolean (#70484)
* Make sure ansible_become treated as a boolean
This commit is contained in:
parent
7525503512
commit
8aca464b8b
6 changed files with 27 additions and 1 deletions
3
changelogs/fragments/70484-bool-ansible-become.yaml
Normal file
3
changelogs/fragments/70484-bool-ansible-become.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
bugfixes:
|
||||||
|
- The `ansible_become` value was not being treated as a boolean value when set in an INI format
|
||||||
|
inventory file (fixes bug https://github.com/ansible/ansible/issues/70476).
|
|
@ -19,6 +19,7 @@ from ansible import constants as C
|
||||||
from ansible.errors import AnsibleError, AnsibleParserError, AnsibleUndefinedVariable, AnsibleConnectionFailure, AnsibleActionFail, AnsibleActionSkip
|
from ansible.errors import AnsibleError, AnsibleParserError, AnsibleUndefinedVariable, AnsibleConnectionFailure, AnsibleActionFail, AnsibleActionSkip
|
||||||
from ansible.executor.task_result import TaskResult
|
from ansible.executor.task_result import TaskResult
|
||||||
from ansible.executor.module_common import get_action_args_with_defaults
|
from ansible.executor.module_common import get_action_args_with_defaults
|
||||||
|
from ansible.module_utils.parsing.convert_bool import boolean
|
||||||
from ansible.module_utils.six import iteritems, string_types, binary_type
|
from ansible.module_utils.six import iteritems, string_types, binary_type
|
||||||
from ansible.module_utils.six.moves import xrange
|
from ansible.module_utils.six.moves import xrange
|
||||||
from ansible.module_utils._text import to_text, to_native
|
from ansible.module_utils._text import to_text, to_native
|
||||||
|
@ -818,7 +819,7 @@ class TaskExecutor:
|
||||||
raise AnsibleError("the connection plugin '%s' was not found" % conn_type)
|
raise AnsibleError("the connection plugin '%s' was not found" % conn_type)
|
||||||
|
|
||||||
# load become plugin if needed
|
# load become plugin if needed
|
||||||
if cvars.get('ansible_become', self._task.become):
|
if boolean(cvars.get('ansible_become', self._task.become)):
|
||||||
become_plugin = self._get_become(cvars.get('ansible_become_method', self._task.become_method))
|
become_plugin = self._get_become(cvars.get('ansible_become_method', self._task.become_method))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
1
test/integration/targets/inventory_ini/aliases
Normal file
1
test/integration/targets/inventory_ini/aliases
Normal file
|
@ -0,0 +1 @@
|
||||||
|
shippable/posix/group5
|
5
test/integration/targets/inventory_ini/inventory.ini
Normal file
5
test/integration/targets/inventory_ini/inventory.ini
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
[local]
|
||||||
|
testhost ansible_connection=local ansible_become=no ansible_become_user=ansibletest1
|
||||||
|
|
||||||
|
[all:vars]
|
||||||
|
ansible_python_interpreter="{{ ansible_playbook_python }}"
|
5
test/integration/targets/inventory_ini/runme.sh
Executable file
5
test/integration/targets/inventory_ini/runme.sh
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
ansible-playbook -v -i inventory.ini test_ansible_become.yml
|
|
@ -0,0 +1,11 @@
|
||||||
|
- hosts: testhost
|
||||||
|
gather_facts: no
|
||||||
|
tasks:
|
||||||
|
- name: Test proper bool evaluation of ansible_become (issue #70476)
|
||||||
|
shell: whoami
|
||||||
|
register: output
|
||||||
|
|
||||||
|
- name: Assert we are NOT the become user specified
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "output.stdout != 'ansibletest1'"
|
Loading…
Reference in a new issue