我实际上正在编写一个ansible playbook,用于自动安装Docker Container,在主机上有几个相同的实例,但差别很小。
我有一个带有“Customers”的变量文件,每个客户都有一个自己的docker容器,我的想法是:我有一堆主机,ansible每个主机部署5个实例,有5个不同的容器。当然,我可以使用主机名定义一个新的var,但它似乎更聪明一点,即ansible检查:“好吧,已经有5个实例,下一个主机”。
任何想法?
答案 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个调试。