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:没有归入任何自定义分组的主机
posted @ 2026-07-10 16:49  huangSir-devops  阅读(19)  评论(0)    收藏  举报
作者:你的名字
出处:你的博客链接
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。