模板中的 Ansible 全局 vars.yml 循环任务

Ansible global vars.yml loop Task in Template

如何将 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(如果我可以列出它可能会更容易),但我也不确定如何在 [=16] 中获得 index =] 或 list.

如有任何建议,我们将不胜感激!

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

{{ item["directory_name"] }}