Ansible——inventory 主机清单
- Ansible——inventory 主机清单
- inventory简介
- ansible配置文件的优先级
- ansible命令常用参数
- 主机清单文件hosts(/etc/ansible/hosts)
- 通过列表的方式标识主机范围
- 指定主机端口
- 使用主机名表示主机范围
- inventory 中的变量
- 主机变量
- 组变量
- 组嵌套
Ansible——inventory 主机清单
inventory简介
Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。
ansible配置文件的优先级
- 首先找执行ansible命令的当前目录中,是否有ansible.cfg文件
- 如果找不到,再找当前用户的家目录下是否有ansible.cfg
- 如果还找不到,就使用全局配置文件/etc/ansible/ansible.cfg
- 要检查当前使用的是哪个配置文件可以使用ansible --version 命令,会显示配置文件路径
ansible命令常用参数
参数 | 功能 |
---|---|
-m | 要执行的模块,默认为command |
-a | 指定模块的参数 |
-u | ssh连接的用户名,默认用root,ansible.cfg中可以配置 |
-b,–become | 变成那个用户身份,不提示密码 |
-k | 提示输入ssh登录密码,当使用密码验证的时候用 |
-s | sudo运行 |
-U | sudo到哪个用户,默认为root |
-K | 提示输入sudo密码,当不是NOPASSWD模式时使用 |
-C | 只是测试一下会改变什么内容,不会真正去执行 |
-c连接类型(default=smart) | |
-f | fork多少进程并发处理,默认为5个 |
-i | 指定hosts文件路径,默认default=/etc/ansible/hosts |
-I | 指定pattern,对已匹配的主机中再过滤一次 |
-list-host | 只打印有哪些主机会执行这个命令,不会实际执行 |
-M | 要执行的模块路径,默认为/usr/share/ansible |
-o | 压缩输出,摘要输出 |
–private-key | 私钥路径 |
-T | ssh连接超时时间,默认是10秒 |
主机清单文件hosts(/etc/ansible/hosts)
通过列表的方式标识主机范围
如果是名称类似的主机,可以使用列表的方式标识各个主机。
[webservers]
192.168.44.[10:30] #表示192.168.44.10到192.168.44.30的连续主机
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110
指定主机端口
[webservers]
192.168.44.20:8080 #指定主机192.168.44.20端口号为8080
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110
使用主机名表示主机范围
db-[a:f].example.org #支持匹配 a~f
inventory 中的变量
Inventory变量名 | 含义 |
---|---|
ansible_host | ansible连接节点时的IP地址 |
ansible_port | 连接对方的端口号,ssh连接时默认为22 |
ansible_user | 连接对方主机时使用的用户名。不指定时,将使用执行ansible或ansible-playbook命令的用户 |
ansible_password | 连接时的用户的ssh密码,仅在未使用密钥对验证的情况下有效 |
ansible_ssh_private_key_file | 指定密钥认证ssh连接时的私钥文件 |
ansible_ssh_common_args | 提供给ssh、sftp、scp命令的额外参数 |
ansible_become | 允许进行权限提升 |
ansible_become_method | 指定提升权限的方式,例如可使用sudo/su/runas等方式 |
ansible_become_user | 提升为哪个用户的权限,默认提升为root |
ansible_become_password | 提升为指定用户权限时的密码 |
主机变量
[webservers]
192.168.44.20 ansible_port=22 ansible_user=root ansible_password=123123
#ansible_port=22,指定端口号
#ansible_user=root,指定用户
#ansible_password=123123,指定密码
组变量
[webservers:vars] #表示为 webservers 组内所有主机定义变量
ansible_user=root
ansible_password=123123
[all:vars] #表示为所有组内的所有主机定义变量
ansible_port=22
组嵌套
[webservers]
192.168.44.20
[dbservers]
192.168.44.30
[testservers:children] #表示组中包含webservers和dbservers的所有主机
webservers
dbservers