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使用Flask框架获取当前查询参数的方法
Mar 21 Python
Python中的id()函数指的什么
Oct 17 Python
python实现学生信息管理系统
Apr 05 Python
Python工厂函数用法实例分析
May 14 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
使用matplotlib中scatter方法画散点图
Mar 19 Python
Python玩转加密的技巧【推荐】
May 13 Python
Python 绘制酷炫的三维图步骤详解
Jul 12 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
python怎么删除缓存文件
Jul 19 Python
python des,aes,rsa加解密的实现
Jan 16 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实现的DES加密解密实例代码
2016/04/06 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
HTML的select控件美化
2017/03/27 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
Python functools模块学习总结
2015/05/09 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
python绘制条形图方法代码详解
2017/12/19 Python
点球小游戏python脚本
2018/05/22 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
python plotly画柱状图代码实例
2019/12/13 Python
python基于event实现线程间通信控制
2020/01/13 Python
keras中的backend.clip用法
2020/05/22 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
新闻系毕业生推荐信
2013/11/16 职场文书
物业客服专员岗位职责
2013/11/30 职场文书
演讲稿怎么写才完美
2014/01/02 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
认购协议书范本
2014/04/22 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
运动会3000米加油稿
2015/07/21 职场文书