在ansible vars文件

时间:2017-10-02 13:07:05

标签: ansible yaml jinja2

我希望通过从ansible .yml vars文件传入变量来在我的给定服务器上创建多个目录。我目前正在尝试使用Jinja模板传递目录名称。 vars文件看起来像这样;

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

我希望为列出的每个客户名称创建一个目录。理想情况下,我最终会在给定文件夹中为每个' TYPOBANK' MAINBANK'等等 我现在尝试这种方式的方式如下在我的剧本中;

- 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

但是这会输出一个目录,其中所有客户名称都已组合在一起,如下所示。有关如何为每个客户创建单个目录的任何建议?谢谢

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

1 个答案:

答案 0 :(得分:1)

您无法在Ansible中的单个参数内循环。

使用loops作为Ansible的目的是:

- 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

遗憾的是,您没有提供变量的完整定义,因此您需要自定义代码以满足您的需求。