概述
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
server01: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