Hello,

I need to use an Ansible playbook to dynamically generate Ansible group_var 
type file. Here is my inventory file:

[group1]
server1.example.com
server2.example.com

[group2]
server3.example.com
server4.example.com

The generated mygroupvars file is expected to be:

group1_var: xyzabcdefghi
group2_var: abcejrje2ljree

The random string is produced by dd command like below:

dd if=/dev/urandom count=1 2>/dev/null | uuencode -m - | sed -ne 2p | cut 
-c -20 | perl -p -i -e 's/\\+/x/g' | perl -p -i -e 's/\\//L/g'

uuencode is from sharutils package on CentOS 7

Here is my playbook:

- name: dummy
  hosts: localhost
  gather_facts: no

  tasks:

    - name: create file
      file:
        dest: mygroupvars
        state: touch
      delegate_to: localhost

    - name: Generate random string
      shell:  "dd if=/dev/urandom count=1 2>/dev/null | uuencode -m - | sed 
-ne 2p | cut -c -20 | perl -p -i -e 's/\+/x/g' | perl -p -i -e 's/\//L/g'"
      register: op

    - name: debug
      debug:
        msg: "{{ op }}"

    - name: append
      lineinfile:
        dest: mygroupvars
        line: "{{ op.stdout_lines }}"
        insertafter: EOF
      delegate_to: localhost

This playbook only generates one random string, and writes it to 
mygroupvars file. I need to loop through inventory file, based on number of 
groups in inventory file, generate the same number of random string 
matching number of groups, and write them all to mygroupvars file using the 
group_var file format. It is key/value pair. The key contains group name 
with suffix _var. The values come from random string generated. 

How can I accomplish it?

Thank you!

- Xinhuan

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/f40ff918-de62-4049-a075-a61ff787140dn%40googlegroups.com.

Reply via email to