- 本书赞誉
- 前言
- 第一部分 基础篇
- 第1章 系统基础信息模块详解
- 第2章 业务服务监控详解
- 第3章 定制业务质量报表详解
- 第4章 Python 与系统安全
- 第二部分 高级篇
- 第5章 系统批量运维管理器 pexpect 详解
- 第6章 系统批量运维管理器 paramiko 详解
- 第7章 系统批量运维管理器Fabric详解
- 第8章 从零开发一个轻量级 WebServer
- 第9章 集中化管理平台 Ansible 详解
- 第10章 集中化管理平台 Saltstack 详解
- 第11章 统一网络控制器 Func 详解
- 第12章 Python 大数据应用详解
- 第三部分 案例篇
- 第13章 从零开始打造 B/S 自动化运维平台
- 第14章 打造 Linux 系统安全审计功能
- 第15章 构建分布式质量监控平台
- 第16章 构建桌面版 C/S 自动化运维平台
9.3 定义主机与组规则
Ansible通过定义好的主机与组规则(Inventory)对匹配的目标主机进行远程操作,配置规则文件默认是/etc/ansible/hosts。
9.3.1 定义主机与组
所有定义的主机与组规则都在/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
9.3.2 定义主机变量
主机可以指定变量,以便后面供Playbooks配置使用,比如定义主机hosts1及hosts2上Apache参数http_port及maxRequestsPerChild,目的是让两台主机产生Apache配置文件httpd.conf差异化,定义格式如下:
[atlanta] host1 http_port=80 maxRequestsPerChild=808 host2 http_port=303 maxRequestsPerChild=909
9.3.3 定义组变量
组变量的作用域是覆盖组所有成员,通过定义一个新块,块名由组名+“: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
提示 嵌套组只能使用在/usr/bin/ansible-playbook中,在/usr/bin/ansible中不起作用。
9.3.4 分离主机与组特定数据
为了更好规范定义的主机与组变量,Ansible支持将/etc/ansible/hosts定义的主机名与组变量单独剥离出来存放到指定的文件中,将采用YAML格式存放,存放位置规定:“/etc/ansible/group_vars/+组名”和“/etc/ansible/host_vars/+主机名”分别存放指定组名或主机名定义的变量,例如:
/etc/ansible/group_vars/dbservers /etc/ansible/group_vars/webservers /etc/ansible/host_vars/foosball
定义的dbservers变量格式为:
【/etc/ansible/group_vars/dbservers】
--- ntp_server: acme.example.org database_server: storage.example.org
提示 在Ansible 1.2及以后版本中,group_vars/和host_vars/目录可以保存在playbook目录或inventory目录,如同时存在,inventory目录的优先级高于playbook目录的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论