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

* Make sure ansible_become treated as a boolean

(cherry picked from commit 8aca464b8b)
This commit is contained in:
David Shrewsbury 2020-07-17 15:46:33 -04:00 committed by GitHub
parent a5c0b11913
commit 94a81f7b44
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 27 additions and 1 deletions

View 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).

View file

@ -19,6 +19,7 @@ from ansible import constants as C
from ansible.errors import AnsibleError, AnsibleParserError, AnsibleUndefinedVariable, AnsibleConnectionFailure, AnsibleActionFail, AnsibleActionSkip
from ansible.executor.task_result import TaskResult
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.moves import xrange
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)
# 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))
try:

View file

@ -0,0 +1 @@
shippable/posix/group5

View 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 }}"

View file

@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -eux
ansible-playbook -v -i inventory.ini test_ansible_become.yml

View file

@ -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'"