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

Ansible:为列表变量的每个成员运行角色?,ansible,ansible-playbook,Ansible,Ansible Playbook,变量定义为: ports: - 8092 - 8093 我想在同一台服务器上部署我的应用程序的两个独立实例,并将Apache配置为实例之间的负载平衡器。下面是一个伪代码剧本: - hosts: servers roles: - app port={{item}} with_items: ports - configure-apache 似乎带有\u项的在此上下文中不起作用 虽然可以对角色运行两次,每次都使用硬编码端口,然后对apache角色使用的端口列

变量定义为:

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

- hosts: servers
  roles:
    - app port={{item}}
      with_items: ports
    - configure-apache
似乎带有\u项的
在此上下文中不起作用

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


感谢您的建议。

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

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

- include: instance.yml
   with_items: "{{ports}}"
   loop_control:
     loop_var: port
可能重复的