ansible中的主机清单
概述
Ansible 通过主机清单定义需要管理的远程服务器,记录主机 IP / 域名、分组、变量、连接参数等信息,ansible默认读取/etc/ansible/hosts文件,并非/etc/hosts
ansible中可以将主机清单存放在指定的目录,执行时用ansible -i 指定
ansible主机清单有两种主流格式:INI 格式(传统简洁)、YAML 格式,这里主要讲解INI格式
主机清单格式
基础单主机
# 主机清单
root@master:~# cat /etc/ansible/hosts
10.37.99.63
# 测试命令
root@master:~# ansible 10.37.99.63 -m ping
10.37.99.63 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/local/bin/python3.13"
},
"changed": false,
"ping": "pong"
}
分组管理(核心功能)
- 简单分组:
# 主机清单
root@master:~# cat /etc/ansible/hosts
[web]
10.37.99.63
10.37.120.9
[db]
10.37.99.63
[es]
10.37.120.9
# 测试
root@master:~# ansible web -m ping
10.37.120.9 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/local/bin/python3.13"
},
"changed": false,
"ping": "pong"
}
10.37.99.63 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/local/bin/python3.13"
},
"changed": false,
"ping": "pong"
}
root@master:~# ansible db -m ping
10.37.99.63 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/local/bin/python3.13"
},
"changed": false,
"ping": "pong"
}
# 指定分组名称,会连接不同的远程控制机器
- 分组合并
将db和es合并为一个新组
root@master:~# cat /etc/ansible/hosts
[web]
10.37.99.63
10.37.120.9
[db]
10.37.99.63
[es]
10.37.120.9
# 这里必须使用:children当作后缀
[data:children]
db
es
# 测试
root@master:~# ansible data -m ping
10.37.120.9 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/local/bin/python3.13"
},
"changed": false,
"ping": "pong"
}
10.37.99.63 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/local/bin/python3.13"
},
"changed": false,
"ping": "pong"
}
批量主机简写
连续 IP / 数字主机快速书写
[web]
# 表示192.168.1.20 ~ 192.168.1.25共六台机器
192.168.1.[20:25]
# server01 ~ server08
server[01:08].test.com
# 自行测试
使用内置变量连接主机
案例:没有配置密钥,使用密码连接远程主机
[web]
10.0.0.7 ansible_user=root ansible_password=1 ansible_port=22
# 需要使用sshpaas
apt install -y sshpass
给组配置变量
[web]
192.168.1.10
192.168.1.11
[web:vars]
ansible_user=root
ansible_port=22
env=prod
常用内置变量
- ansible_user:SSH 登录用户
- ansible_password:SSH 登录密码
- ansible_port:SSH 登录端口
- ansible_ssh_private_key_file:SSH 登录的私钥路径
- ansible_become:是否开启sudo授权
- ansible_become_user:提权到哪个用户,默认root
- ansible_host:实际连接IP,配置主机别名时使用
特殊内置分组
- all:代表所有清单内配置好的主机,去重后的
- ungrouped:没有归入任何自定义分组的主机
本文来自博客园,作者:huangSir-devops,转载请注明原文链接:https://www.cnblogs.com/huangSir-devops/p/21337992,微信Vac6666666,欢迎交流

浙公网安备 33010602011771号