Reputation: 67
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
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