Ansible:为列表变量的每个成员运行角色?

时间:2016-10-06 12:02:05

标签: ansible ansible-playbook

将变量定义为:

ports:
  - 8092
  - 8093

我想在同一台服务器上部署我的应用程序的两个独立实例,并将Apache配置为实例之间的负载均衡器。这是一个伪代码剧本:

- hosts: servers
  roles:
    - app port={{item}}
      with_items: ports
    - configure-apache

似乎with_items在此上下文中不起作用。

虽然可以有两个角色运行,每个角色都有硬编码端口,然后硬编码apache角色使用的端口列表,我觉得必须有一个更优雅的解决方案使用单个定义的端口列表?

感谢收到的建议。

1 个答案:

答案 0 :(得分:2)

为了解决这个问题,我将roles/tasks/main.yml中的任务移到了一个名为roles/tasks/instance.yml

的新文件中

然后我修改了roles/tasks/main.yml以包含:

- include: instance.yml
   with_items: "{{ports}}"
   loop_control:
     loop_var: port