Devi Naga
Devi Naga

Reputation: 13

Execute playbook with different sudo users on different hosts

There are two hosts in the host list DEV and QA host

I need to execute playbook with dev_sudo_user for development env and qa_sudo_user for QA environment parallely

inventory details

[hostlist]
host1 ansible_become_user=dev_sudo_user
host2 ansible_become_user=qa_sudo_user

---
- hosts: hostlist
  connection: ssh
  gather_facts: false
  remote_user: abcd  
  serial: 1   
  become: true


  tasks:
  - name: run Script
    shell: python apps.py
    register: result
  - debug: var=result

I am able to get result for one host. I want result for both hosts

Upvotes: 1

Views: 1153

Answers (1)

ilias-sp
ilias-sp

Reputation: 6705

you have to use the become and become_user arguments. see example and output below.

hosts files with the variable as you had:

[test_group]
rhel-green  become_user=root
rhel-blue   become_user=devops

playbook:

- hosts: test_group
  gather_facts: false

  tasks:
    - name: step 1
      shell: "id"
      register: shell_output
      become_user: "{{ become_user }}"
      become: true

    - debug:
        var: shell_output.stdout

execution output:

[root@ansible]# ansible-playbook -i hosts become_loop.yml 

PLAY [test_group] ***************************************************************************************************************************************************************************************************

TASK [step 1] *******************************************************************************************************************************************************************************************************
changed: [rhel-blue]
changed: [rhel-green]

TASK [debug] ********************************************************************************************************************************************************************************************************
ok: [rhel-green] => {
    "shell_output.stdout": "uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023"
}
ok: [rhel-blue] => {
    "shell_output.stdout": "uid=1000(devops) gid=1000(devops) groups=1000(devops) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023"
}

PLAY RECAP **********************************************************************************************************************************************************************************************************
rhel-blue                  : ok=2    changed=1    unreachable=0    failed=0   
rhel-green                 : ok=2    changed=1    unreachable=0    failed=0   

[root@ansible]# 

Upvotes: 1

Related Questions