模板

时间:2016-01-03 05:50:46

标签: python ansible ansible-playbook

如何将Ansible中的变量循环到模板中以创建多个虚拟主机? (注意:Ansible文档不适合我)。

如果我将所有变量都移到剧本中,那就会失去去耦的目的。

但是,如果我必须执行上述操作,我仍然不确定如何将dict[key].value应用于with_items循环到模板中。这是我的来源:

/vars.yml

apache_vhosts:
  happy:
    ssl: true
    server_name: happy.com
    directory_name: happy
  pappy:
    ssl: false
    server_name: pappy.com
    directory_name: pappy

/roles/apache2/tasks/main.yml

- name: make projects vhost
  template: src=projects.conf.j2
            dest=/etc/apache2/sites-available/projects.conf
            owner=root
            group=root
  with_items:
    apache_vhosts

/roles/apache2/templates/vhost.j2

<VirtualHost *:80>
    DirectoryIndex index.php
    DocumentRoot {{ apache_vhost_folder }}/{{ directory_name}}
    ...

我不确定这是如何运作的。我有dict而不是list(如果我可以列出一个更容易的列表),但我也不确定如何在{{1}中获得index }或dict

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:1)

当您使用循环(with_items)时,每个项目都将以item的形式提供。这也将在您的模板中提供。然后,您可以像这样访问它:

{{ item["directory_name"] }}