Make sure ansible_become treated as a boolean (#70484) (#70526)

* Make sure ansible_become treated as a boolean

(cherry picked from commit 8aca464b8b)
pull/70714/head
David Shrewsbury 4 years ago committed by GitHub
parent a5c0b11913
commit 94a81f7b44
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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
@ -909,7 +910,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:

@ -0,0 +1,5 @@
[local]
testhost ansible_connection=local ansible_become=no ansible_become_user=ansibletest1
[all:vars]
ansible_python_interpreter="{{ ansible_playbook_python }}"

@ -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…
Cancel
Save