Ansible pattern匹配

Ansible pattern匹配

1. patterns模式

  • pattern可以更方便的指定特定的主机或组
  • 执行临时命令或者剧本的时候可以使用的模式
ansible <pattern> -m <module_name> -a "<module options>"

# in Playbook
- name: restart webservers
  hosts: webservers

2. pattern用法

DescriptionPattern(s)Targets
所有主机all(or *)
一个主机host1
多主机host1:host2(or hots1,host2)
一个组webservers
多组webservers:dbservershosts in webserver + hosts in dbservers
排除组webservers:!atlantahosts in webservers not in atlanta
交集组webservers:&staginghosts not only in webserver but also in staging

3. patterns局限

  • patterns依赖于inventory,若host或group不在inventory仓库,则不能使用pattern。
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: Could not match supplied host pattern, ignoring: *.not_in_inventory.com
  • pattern必须遵守inventory语法规则,若定义了别名,则必须使用别名
[WARNING]: Could not match supplied host pattern, ignoring: 127.0.0.2

4. 高级pattern选项

  • 在patterns使用变量
# ansible-playbook 通过 -e 可以接受变量,在pattern中使用: {{ 变量 }}

webservers:!{{ excluded }}:&{{ required }}
  • 在patterns使用组位置参数
[webservers]
cobweb
webbing
weber

# 通过下标切割选择对应的组
webservers[0]       # == cobweb
webservers[-1]      # == weber
webservers[0:2]     # == webservers[0],webservers[1]
                    # == cobweb,webbing
webservers[1:]      # == webbing,weber
webservers[:3]      # == cobweb,webbing,weber
  • 在patterns中使用正则
# 以 ~ 开始的模式将会被认定为正则表达式
~(web|db).*\.example\.com

5. patterns 和 ansible-playbook标志

  • 命令行的优先级比 playbook 高,通过指定命令行选项可以覆盖 playbook 中的定义。 举例:你在 playbook 中定义 hosts: all,但在命令行中指定 -i 127.0.0.2 , 命令行会覆盖 playbook 中的定义。 这种方式甚至在 Inventory 中没有定义目标主机都可行。
# 可以使用 --limit 标识指定特定的目标主机
ansible-playbook site.yml --limit datacenter2

# 可以使用 --limit 从一个文件中读取主机列表, 使用时在文件名前加 @
ansible-playbook site.yml --limit @retry_hosts.txt

# 如果 RETRY_FILES_ENABLED 设置 True, 当 ansible-playbook 执行失败的主机记录到以 retry 结尾的文件中。这个文件在每次 ansible-playook 执行结束后都会被覆盖。
ansible-playbook site.yml –limit @site.retry
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值