我有2个VPC,每个VPC都有一个VPN实例,我想共享其配置。这两个实例都有一个class
标记,其值现在为vpn_dev
,但是,它们之间的区别应该是environment
标记-一个标记为environment: default
,另一个标记为{{1 }}。
我还有2本剧本,每个VPC都有1本。我想根据environment: london
和vpn
标签的组合,在其中一个实例上完全运行class
角色,即选择具有environment
和 class: vpn_dev
。例如
environment: london
但是,这当然会在所有具有- name: Deploy developer VPN in AWS
hosts:
- tag_class_vpn_dev
- tag_environment_london
roles:
- vpn
的实例(无论class: vpn_dev
)上安装角色,在所有具有environment
的实例上和 (与environment: london
无关)。
有没有办法做到这一点?目前看来,唯一的方法似乎是拥有一个唯一标记,以唯一标识一个实例。
答案 0 :(得分:0)
默认情况下,剧本中的主机列表是“或”操作。您可以使用AND来通过以下语法托管组:
- hosts:
- tag_class_vpn_dev:&tag_environment_london
有关主机模式here
的更多信息答案 1 :(得分:0)
虽然我不建议这样做,但是可以为每个标签组合在主机上应用一些烦人的角色,因为恕我直言,这种方法不是幂等的。
此方案可能带来的风险之一是,当您重新运行此剧本时,为某些标签组合选择的主机可能与之前的运行不同,因此,此唯一标签组合组最终将有两个实例。
我推荐的方法是使用一些标记来标记应该用作VPN角色目标的主机,然后使用ansible仅将VPN角色应用于此标记所标记的主机。