基于EC2标记组合的Ansible选择主机
我有2个VPC,每个VPC都有一个VPN实例,我想分享它的配置。两个实例都有一个基于EC2标记组合的Ansible选择主机,ansible,ansible-inventory,Ansible,Ansible Inventory,我有2个VPC,每个VPC都有一个VPN实例,我想分享它的配置。两个实例都有一个class标记,其值现在是vpn\u dev,但是,它们应该因environment标记而有所不同-一个实例有environment:default,另一个实例有environment:london 我也有2个剧本,每个VPC一个。我想根据类和环境标记的组合,在其中一个实例上运行我的vpn角色,即选择具有类:vpn\u dev和环境:伦敦的实例。例如 -名称:在AWS中部署开发者VPN 主持人: -tag_class
class
标记,其值现在是vpn\u dev
,但是,它们应该因environment
标记而有所不同-一个实例有environment:default
,另一个实例有environment:london
我也有2个剧本,每个VPC一个。我想根据类
和环境
标记的组合,在其中一个实例上运行我的vpn
角色,即选择具有类:vpn\u dev
和环境:伦敦
的实例。例如
-名称:在AWS中部署开发者VPN
主持人:
-tag_class_vpn_dev
-tag_环境_伦敦
角色:
-虚拟专用网
但是,这当然会在所有具有class:vpn\u dev
(不考虑environment
)、和的实例(不考虑class
)上安装角色
有没有办法做到这一点?目前看来,唯一的方法是使用一个标记来唯一地标识实例。默认情况下,playbook中的主机列表是OR操作。您可以使用以下语法使用和切换到主机组:
- hosts:
- tag_class_vpn_dev:&tag_environment_london
关于主机模式的更多信息对于每个标记组合,可以对一个主机应用一些ansible角色,尽管我不推荐这样做,因为这种方法不是幂等的 此场景可能存在的风险之一是,当您重新运行此playbook时,为某些标记组合选择的主机可能与以前的运行不同,因此每个唯一的标记组合组将有两个实例
我推荐的方法是使用一些标记来标记应该用作VPN角色目标的主机,然后使用ansible将VPN角色仅应用于由该标记标记的主机 像hosts这样的模板化变量:{{VAR1}{{{VAR2}}