《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的实际应用过程中也会不断地加深对其理解。

相关文章
|
Web App开发 运维 Python
《Ansible权威指南 》一 导读
对比主流的自动化工具SaltStack、Puppet等,Ansible给人最直观的感觉就是比较简单,而这也是笔者选择使用Ansible最重要的理由之一。因为笔者一直认为每个人精力有限,如腾讯早期的Ops技能培训希望个人同时兼备Ops和Dev的战略,但直到现在身边真正同时具备Dev和Ops能力于一身的人凤毛麟角。
4013 0
|
Shell Apache 数据安全/隐私保护
Ansible权威指南笔记(粗略)
# 在托管节点上安装 python 解释器 ansible myhost --sudo -m raw -a "yum install -y python2 python-simplejson" # 各个平台上安装 ansible http://www.
1485 0
《Ansible权威指南 》一 3.5 本章小结
Ansible Ad-Hoc在运维日常工作中的作用举足轻重,日常工作中的临时并发性操作均通过Ad-Hoc协助完成,因此我们花了很多篇幅为大家介绍其使用及企业实践。
835 0
|
JavaScript 算法 Linux
《Ansible权威指南 》一3.4 Ad-Hoc用户与组管理
用户权限管理是运维日常最重要的管理工作之一,如生产环境禁用开发和测试人员登录变更,但测试环境的用户权限仍需耗费精力维护,这项工作大公司也存在(将测试环境交给测试或开发管理并不是每个公司都能做到的,但未来是趋势)。
2783 0
|
Web App开发 JavaScript 关系型数据库
《Ansible权威指南 》一 3.3 Ad-Hoc组管理和特定主机变更
Ansible也提供了简洁但强大的组管理功能。同时,我们也可能遇到只针对这组主机中一台或某些主机做变更的场景,针对这些复杂多变的企业场景,本节我们将深入了解Ad-Hoc组管理和特定主机变更,进一步了解Ansible如何应对复杂多变的企业环境。
2429 0
|
JavaScript 前端开发 Linux
《Ansible权威指南 》一3.2 Ad-Hoc命令集介绍
本节介绍通过Ad-Hoc命令集查看系统设置,通过Ad-Hoc研究Ansible的并发特性,通过Ad-Hoc研究Ansible的模块使用。俗话说,磨刀不误砍柴工。开始之前做一些简单的初始化检查,如系统时间正确与否、磁盘容量是否充足等,是很有必要的。
2329 0
|
Linux Shell
《Ansible权威指南 》一第3章 Ansible Ad-Hoc命令集
第2章介绍了Ansible的各项元素、系列命令、Inventory基础,以及Ansible与正则的结合使用,这些内容是掌握Ansible的基础,请务必熟练掌握。在前两章的基础上,本章为大家介绍Ansible Ad-Hoc命令集,通过模拟真实的企业案例和应用场景更深入地了解Ansible。
1186 0
|
Web App开发 JavaScript 前端开发
《Ansible权威指南 》一2.6 Ansible与正则
正则表达式(Patterns)是各类高级语言的必定支持的方法之一,Ansible也不例外。其Patterns功能等同于正则表达式,语法使用也和正则类同,这大大便利了运维的使用。其对于Ansible的灵活性有着极大贡献,该功能同样支持Ansible-playbook。其用法也非常简单。
3383 0
|
JavaScript 前端开发 Linux
《Ansible权威指南 》一Ansible命令用法详解
Ansible命令行执行方式有Ad-Hoc、Ansible-playbook两种方式,Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于其提供的API开发类似的Web化产品。
4263 0
|
25天前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。