White Mask Guy
White Mask Guy

Reputation: 67

Ansible loop in Playbook to Create User in RHEL

I have this below code, I want to know how to loop the vars username, uid, and groups into this single Add user Task.

 ---
 - name: Add a user RHEL
   hosts: dev
   gather_facts: no
   vars:
     username:
       - secadmin
       - edpemr
     uid:
       - 1001
       - 1002
     groups:
       - wheel
       - wheel2

 tasks:
 - name: Add user "secadmin" to the remote server
   user:
     name: "{{ item.username }}"
     comment: "Privileged User"
     uid: "{{ item.uid }}"
     groups: "{{ item.groups }}"
     append: yes
     shell: /bin/bash
     generate_ssh_key: yes
     ssh_key_bits: 2048
     ssh_key_file: .ssh/id_rsa.key
   loop: {{ ?? }}

I can't change the way of vars defined, it must be like this :

   vars:
     username:
       - secadmin
       - edpemr
     uid:
       - 1001
       - 1002
     groups:
       - wheel
       - wheel2

My Expectation is : The task will run 2 times with 2 different data based on the amount of variables exist.

tasks:
- name: Add user "secadmin" to the remote server
  user:
    name: secadmin
    comment: "Privileged User"
    uid: 1001
    groups: wheel
    append: yes
    shell: /bin/bash
    generate_ssh_key: yes
    ssh_key_bits: 2048
    ssh_key_file: .ssh/id_rsa.key

tasks:
- name: Add user "secadmin" to the remote server
  user:
    name: edpemr
    comment: "Privileged User"
    uid: "1002
    groups: wheel2
    append: yes
    shell: /bin/bash
    generate_ssh_key: yes
    ssh_key_bits: 2048
    ssh_key_file: .ssh/id_rsa.key

Upvotes: 1

Views: 1226

Answers (1)

rafal1337
rafal1337

Reputation: 184

You have to create sets of the lists like:

users:
  - login: secadmin
    uid: 1001
    groups: wheel
  - login: edpemr
    uid: 1002
    groups: wheel2 

Playbook:

- hosts: localhost
  vars:
    users:
      - login: secadmin
        uid: 1001
        groups: wheel
      - login: edpemr
        uid: 1002
        groups: wheel2
  tasks:
  - name: Add users 
    user:
      name: "{{ item.login }}"
      comment: "Privileged User"
      uid: "{{ item.uid }}"
      groups: "{{ item.groups }}"
      append: yes
      shell: /bin/bash
    loop: "{{ users }}"

Upvotes: 2

Related Questions