《Ansible权威指南》一 2.6 Ansible与正则

本节书摘来自华章出版社《Ansible权威指南》一书中的第2章,第2.6节,作者 李松涛 魏 巍 甘 捷 更多章节内容可以访问云栖社区“华章计算机”公众号查看。



2.6 Ansible与正则

正则表达式(Patterns)是各类高级语言的必定支持的方法之一,Ansible也不例外。其Patterns功能等同于正则表达式,语法使用也和正则类同,这大大便利了运维的使用。其对于Ansible的灵活性有着极大贡献,该功能同样支持Ansible-playbook。其用法也非常简单

ansible pattern_goes_here -m module_name -a arguments

该功能主要针对Inventory的主机列表使用,我们通过一些案例可以更好地了解其功能及用法。在如下示例中主要针对webservers进行正则匹配:

 重启webservers组所有主机的httpd服务

ansible webservers -m service -a name=httpd state=restarted

(1)All(全量)匹配

匹配所有主机,all或号功能相同。如检测所有主机存活情况。

 all和功能相同,但号需引起来

ansible all –m ping

ansible  -m ping

检查192.168.1.024网段所有主机存活状况。

ansible 192.168.1. -m ping

(2)逻辑或(or)匹配

如我们希望同时对多台主机或多个组同时执行,相互之间用“”(冒号)分隔即可。

web1web2

使用方式如下:

ansible web1web2 -m ping

(3)逻辑非(!)匹配

逻辑非用感叹号(!)表示,主要针对多重条件的匹配规则,使用方式如下:

 所有在webservers组但不在phoenix组的主机

webservers!phoenix

(4)逻辑与(&)匹配

和逻辑非一样,逻辑与也主要针对多重条件的匹配规则,只是逻辑上的判断不同。逻辑与使用&表示,请看如下示例:

 webservers组和staging组中同时存在的主机

webservers&staging

(5)多条件组合

Ansible同样支持多条件的复杂组合,该情况企业应用不多,这里做简单举例说明。

 webservers和dbservers两个组中的所有主机在staging组中存在且在 phoenix组中不存在的主机

webserversdbservers&staging!phoenix

(6)模糊匹配

通配符在Ansible表示0个或多个任意字符,主要应用于一些模糊规则匹配,在平时的使用中应用频率非常高,请参考如下示例:

 所有以.magedu.com结尾的主机均符合

.magedu.com

 one开头.com结尾的所有主机和dbservers组中的所有主机

one.comdbservers

(7)域切割

Ansible底层基于Python,因此也支持域切割。Python字符串域切割的示例如下:

str = '12345678'

print str[01]

通过[01]即可获取数值1。该功能在Ansible中也支持,以如下Inventory内容为例:

[webservers]

cobweb

webbing

weber

通过截取数组下标可以获得对应变量值。

webservers[0]   # == cobweb

webservers[-1]  # == weber

webservers[01]  # == webservers[0],webservers[1]

                 # == cobweb,webbing

webservers[1]   # == webbing,weber

(8)正则匹配

Ansible同样完整支持正则匹配功能,“~”开始表示正则匹配。

~(webdb)..example.com

检测beta.example.com、web.example.com、green.example.com、beta.example.org、web.example.org、green.example.org的存活,使用如下匹配模式:

ansible ~(betawebgreen).example.(comorg) -m ping

检测Inventory中所有以192.168开头的服务器存活信息:

ansible ~192.168.[0-9]{2}.[0-9]{2,} -m ping

关于Ansible的正则功能到此结束,相信大家在浏览的过程中对其灵活程度也会有所感触,在对Ansible的实际应用过程中也会不断地加深对其理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值