Ansible变量每个主机只有X次

时间:2016-08-09 11:19:41

标签: docker ansible

我实际上正在编写一个ansible playbook,用于自动安装Docker Container,在主机上有几个相同的实例,但差别很小。

我有一个带有“Customers”的变量文件,每个客户都有一个自己的docker容器,我的想法是:我有一堆主机,ansible每个主机部署5个实例,有5个不同的容器。当然,我可以使用主机名定义一个新的var,但它似乎更聪明一点,即ansible检查:“好吧,已经有5个实例,下一个主机”。

任何想法?

1 个答案:

答案 0 :(得分:1)

可能的解决方案:

---
- hosts: all
  gather_facts: no
  vars:
    containers: ['cont1', 'cont2', 'cont3', 'cont4', 'cont5', 'cont6', 'cont7', 'cont8']
    per_host: 3
  tasks:
    - debug: msg='Deploy {{ item }}'
      with_items: '{{ containers[ play_hosts.index(inventory_hostname)*per_host : (play_hosts.index(inventory_hostname)+1)*per_host] }}'

这将采用containers列表的一部分,基于per_host大小,主机索引为偏移量。
因此,在此示例中,您的清单中每个主机将收到不超过3个调试。