返回介绍

9.3 定义主机与组规则

发布于 2024-01-29 22:54:23 字数 2763 浏览 0 评论 0 收藏 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文