0
votes

I am looking to create a multitude of directories on my given server by passing in vars from an ansible .yml vars file. I am currently trying to use Jinja templating to pass the directory names in. The vars file looks like this;

BTG-VELOCITY:
    type: PBSTP
    accept: 1010
GFAM:
    type: PBSTP
    connect: 1010
ONEZERO2:
    type: TRADESTREAM
GUANFABANK:
    type: FXSIM
MAINBANK:
    type: FXSIM
TYPOBANK:
    type: TRADESTREAM
TEST-BANK:
    type: PBSTP
    connect: 32620
    accept: 33620

And I wish to create a directory for each customer name listed. So ideally I will end up with a directory in a given folder for each 'TYPOBANK','MAINBANK' etc. The way I am trying to this at the minute is as follows in my playbook;

- include_vars:
    file: /home/vagrant/stunnelSimAnsPractice/roles/ns16/vars/customers.yml
    name: customers
- file:
    path: /home/vagrant/stunnelSimAnsPractice/roles/ns16/sessions/{%for cust, config in customers.items() %}{{cust}}{% endfor %}
    state: directory

But this outputs one directory with all the customer names combinded, as shown below. Any suggestions on how to create individual directories for each customer? Thank you

├── sessions
│   └── GFAMTEST-BANKBTG-VELOCITYTYPOBANKMAINBANKGUANFABANKONEZERO2
1

1 Answers

1
votes

You can't loop inside a single parameter in Ansible.

Use loops as Ansible was designed to:

- file:
    path: /home/vagrant/stunnelSimAnsPractice/roles/ns16/sessions/{{ item }}
    state: directory
  with_items:     ### and here you need to put the list containing the directory names

Unfortunately you did not provide the full definition of variables, so you need to customise the code to suite your needs.