Ansible中inventory配置说明

本文对常见的Ansible中Inventory配置相关内容整理如下

1.   配置文件位置

默认的文件路径为 /etc/ansible/hosts

除此之外还可以使用动态Inventory,如有这个需求可以参考Ansible中文指南网站:http://www.ansible.com.cn/docs/intro_dynamic_inventory.html

2.   配置文件格式

方括号“[]”中表示组名,其下方是主机配置,一个主机可以属于多个不同的组。

组内参数通过“[组名:vars]”格式表示。

组的包含关系通过“[组名:children]”格式表示,其下方是成员组。

3.   指定主机SSH端口

如果主机SSH端口不是默认22端口,可以在主机后添加“:端口”指明端口号,例如:abcd.example.com:9922

注:ansible使用Paramiko进行ssh连接时,不会使用你SSH配置文件中列出的端口,但是如果修改ansible使用openssh进行ssh连接时将会使用

4.   指定主机别名

如果打算给主机起别名给ansible使用,格式如下

web1 ansible_ssh_port = 3333 ansible_ssh_host = 192.168.1.2

注:实际上这是在使用主机变量

 

5.   指定主机范围

可以按照如下格式对主机名中部分字符进行范围匹配

[webservers]
www[01:50].yanruogu.com

[databases]
db-[a:f].yanruogu.com

6.   Inventory自带变量说明

ansible_ssh_host     #用于指定被管理的主机的真实IP
ansible_ssh_port     #用于指定连接到被管理主机的ssh端口号,默认是22
ansible_ssh_user     #ssh连接时默认使用的用户名
ansible_ssh_pass     #ssh连接时的密码
ansible_sudo_pass     #使用sudo连接用户时的密码
ansible_sudo_exec     #如果sudo命令不在默认路径,需要指定sudo命令路径
ansible_ssh_private_key_file     #秘钥文件路径,秘钥文件如果不想使用ssh-agent管理时可以使用此选项
ansible_shell_type     #目标系统的shell的类型,默认sh
ansible_connection     #SSH 连接的类型: local , ssh , paramiko,在 ansible 1.2 之前默认是 paramiko ,后来智能选择,优先使用基于 ControlPersist 的 ssh (支持的前提)
ansible_python_interpreter     #用来指定python解释器的路径,默认为/usr/bin/python 同样可以指定ruby 、perl 的路径
ansible_*_interpreter     #其他解释器路径,用法与ansible_python_interpreter类似,这里"*"可以是ruby或才perl等其他语言

使用方法例如:

[test]
192.168.1.1 ansible_ssh_user=root ansible_ssh_pass='P@ssw0rd'
192.168.1.2 ansible_ssh_user=breeze ansible_ssh_pass='123456'
192.168.1.3 ansible_ssh_user=bernie ansible_ssh_port=3055 ansible_ssh_pass='456789'

7.   主机变量的使用

可以在主机后边追加变量k/v,如:

[websvrs]
192.168.1.1 https_port=8443 max_threads=8

8.   组内变量的使用

通过“[组名:vars]”的方式定义组内变量

[test]
host1
host2
[test:vars]
ntp_server=192.168.1.10
proxy=192.168.1.20

 

9.   组内包含与组内变量

[haidian]
web1
web2
[yizhuang]
web4
web3
[beijing:children]
haidian
yizhuang
[beijing:vars]
ntp_server=192.168.1.10
zabbix_server=192.168.1.10
[china:children]
beijing
shanghai

上面的示例中,指定了海淀机房有web1、web2;亦庄机房有web3、web4主机;又指定了一个北京组代表北京地区数据中心,同时包含海淀和亦庄机房;为该组内的所有主机指定了2个vars变量。之后设定了一个组中国组,包含北京和上海两地数据中心。

注:vars变量主要用在ansible-playbook中,不支持ad-hoc。

 

10. 单独的变量文件或目录

在 inventory 主文件中保存所有的变量并不是最佳的方式。还可以保存在独立的文件中,这些独立文件与 inventory 文件保持关联。

配置文件名称要跟主机或组名完全相同。

主机变量文件应放在:/etc/ansible/host_vars

组内变量文件应放在:/etc/ansible/ group_vars

例如创建文件“/etc/ansible/group_vars/raleigh”来保存raleigh组的组内变量

vim /etc/ansible/group_vars/raleigh

---

ntp_server: acme.example.org

database_server: storage.example.org

如果使用变量目录,变量的目录名要跟主机或组的名字完全相同,目录内部的配置文件名可以自行命名。

注:分文件定义变量的方式只适用于 Ansible 1.4 及以上版本

例如创建目录“/etc/ansible/group_vars/raleigh/”来保存raleigh组的组内变量,那么还需要再创建一个“/etc/ansible/group_vars/raleigh/db_settings”文件保存raleigh组的数据库配置相关变量

vim /etc/ansible/group_vars/raleigh/db_settings

---

ntp_server: acme.example.org

database_server: storage.example.org

原文地址:https://www.cnblogs.com/xiaoleimagic/p/13444485.html