Python自动化运维之Ansible定义主机与组规则操作详解


Posted in Python onJune 13, 2019

本文实例讲述了Python自动化运维之Ansible定义主机与组规则操作。分享给大家供大家参考,具体如下:

一 点睛

Ansible通过定义好的主机与组规则(Inventory)对匹配的目标主机进行远程操作,配置规则文件默认是/etc/ansible/hosts

二 定义主机与组

所有定义的主机与组规则都在/etc/Ansible/hosts文件中,为ini文件格式,主机可以用域名、IP、别名进行标识,其中webservers、dbservers 为组名,紧跟着的主机为其成员。格式如下:

mail.example.com
192.168.1.21:2135
[webservers]
foo.example.com
bar.example.com
192.168.1.22
[dbservers]
one.example.com
two.example.com
three.example.com
192.168.1.23

其中,192.168.1.21:2135的意思是定义一个SSH服务端口为2135的主机。

当然我们也可以使用别名来描述一台主机。

jumper ansible_ssh_port=22 ansible_ssh_host=192.168.1.50

jumper为定义的一个别名,ansible_ssh_port为主机SSH服务端口, ansible_ssh_host为目标主机。

更多变量说明如下:

ansible_ssh_host:连接目标主机的地址。

ansible_ssh_port:连接目标主机SSH端口,端口22无需指定。

ansible_ssh_user:连接目标主机默认用户。

ansible_ssh_pass:连接目标主机默认用户密码。

ansible_connection:目标主机连接类型,可以是local、ssh或 paramiko。

ansible_ssh_private_key_file:连接目标主机的ssh私钥。

ansible_*_interpreter:指定采用非Python的其他脚本语言,如 Ruby、Perl或其他类似ansible_python_interpreter解释器。

组成员主机名称支持正则描述,例如:

[webservers]
www[01:50].example.com
[databases]
db-[a:f].example.com

三 定义主机变量

主机可以指定变量,以便后面供Playbooks配置使用,比如定义主机hosts1及hosts2上Apache参数http_port及maxRequestsPerChild,目的是让两台主机产生Apache配置文件httpd.conf差异化,定义格式如下:

[atlanta]
host1 http_port=80 maxRequestsPerChild=808
host2 http_port=303 maxRequestsPerChild=909

四 定义组变量

组变量的作用域是覆盖组所有成员,通过定义一个新块,块名由 组名+“:vars”组成,定义格式如下:

[atlanta]
host1
host2
[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com

五 嵌套组

Ansible支持组嵌套组,通过定义一个新块,块名由组名+“: children”组成,举例如下:

[atlanta]
host1
host2
[raleigh]
host2
host3
[southeast:children]
atlanta
raleigh
[southeast:vars]
some_server=foo.southeast.example.com
halon_system_timeout=30
self_destruct_countdown=60
escape_pods=2
[usa:children]
southeast
northeast
southwest
southeast

六 分离主机与组特定数据

为了更好规范定义的主机与组变量,Ansible支持 将/etc/ansible/hosts定义的主机名与组变量单独剥离出来存放到指定的文件中,将采用YAML格式存放,存放位置规定:“/etc/ansible/group_vars/+组名”和“/etc/ansible/host_vars/+主机名”分别存放指定组名或主机名定义的变量。

七 匹配目标

目标 (Patterns)匹配,格式为:ansible<pattern_goes_here>-m<module_name>-a<arguments>。

举例说明:重启webservers组的所有Apache服务。

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

<pattern_goes_here>参数的使用方法,详细规则及含义见下表:

Python自动化运维之Ansible定义主机与组规则操作详解

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python绘图库Matplotlib的安装
Jul 03 Python
详解Python2.x中对Unicode编码的使用
Apr 03 Python
Python中特殊函数集锦
Jul 27 Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 Python
Python3 模块、包调用&amp;路径详解
Oct 25 Python
mac下如何将python2.7改为python3
Jul 13 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
Nov 30 Python
Django model反向关联名称的方法
Dec 15 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
python3.7简单的爬虫实例详解
Jul 08 Python
解决django-xadmin列表页filter关联对象搜索问题
Nov 15 Python
opencv 分类白天与夜景视频的方法
Jun 05 Python
pyqt 实现在Widgets中显示图片和文字的方法
Jun 13 #Python
详解PyCharm+QTDesigner+PyUIC使用教程
Jun 13 #Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 #Python
python之pyqt5通过按钮改变Label的背景颜色方法
Jun 13 #Python
python3.4+pycharm 环境安装及使用方法
Jun 13 #Python
python自动化之Ansible的安装教程
Jun 13 #Python
PyQt5 实现给窗口设置背景图片的方法
Jun 13 #Python
You might like
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
JS request函数 用来获取url参数
2010/05/17 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
js实现全选和全不选
2020/07/28 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
从零学Python之入门(五)缩进和选择
2014/05/27 Python
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
Python字典底层实现原理详解
2019/12/18 Python
美国女孩服装购物网站:Justice
2017/03/04 全球购物
求职自荐信范文格式
2013/11/29 职场文书
业务副厂长岗位职责
2014/01/03 职场文书
会计专业自荐书
2014/07/08 职场文书
客户答谢会活动方案
2014/08/31 职场文书
学校节水倡议书
2015/04/29 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
电力培训学习心得体会
2016/01/11 职场文书
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android