Ansible 自动化运维实战系列(二):主机清单详解

📚 系列导航

👉 第一篇:概述、部署与命令
👉 第二篇:主机清单详解
👉 第三篇:常用模块详解


一:环境架构

是否管理角色主机名外网ip内网ip
管理端managerm01192.168.2.110172.16.1.110
被管理端lblb01192.168.2.102172.16.1.102
被管理端lblb02192.168.2.103172.16.1.103
被管理端webweb01192.168.2.104172.16.1.104
被管理端webweb02192.168.2.105172.16.1.105
被管理端webweb03192.168.2.106172.16.1.106
被管理端nfsnfs01192.168.2.107172.16.1.107
被管理端backupbackup192.168.2.108172.16.1.108
被管理端dbdb01192.168.2.109172.16.1.109

二:配置

/etc/ansible/hosts:Ansible 的 默认 Inventory(清单)文件,用于定义 Ansible 管理的目标主机(或节点)及其分组信息。它是 Ansible 自动化任务的核心配置文件之一。


三:案例

1)hostname

批量管理主机并执行 hostname 命令

[组名]                # 注意组名要体现出服务器的作用
ip地址 / 主机名 / 域名  # 注意主机名要能解析才行
[root@m01 ~]# vim /etc/ansible/hosts
[web]
172.16.1.104
172.16.1.105

[backup]
172.16.1.108

[nfs]
172.16.1.107

在这里插入图片描述

2)[data:children]

backupnfs 2个组合并新的组叫 data

[父组名:children]
子组1
子组2
...
[root@m01 ~]# vim /etc/ansible/hosts
[web]
172.16.1.104
172.16.1.105

[backup]
172.16.1.108

[nfs]
172.16.1.107

[data:children]
backup
nfs

在这里插入图片描述

3)免密

如果目标主机和本地(Ansible 控制机)之间 没有配置 SSH 免密登录,Ansible 在执行任务时会遇到以下情况:

# Ansible 默认使用 SSH 协议连接目标主机,若未配置免密(密钥认证)且未提供密码,会直接报错
FAILED! => {"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)."}

解决方案

  1. 指定临时密码(不推荐)

    通过 -k 参数让 Ansible 交互式提示输入密码:

    ansible all -m ping -k
    
    • 缺点:需手动输入密码,无法完全自动化。
  2. Inventory 中明文指定密码(不安全)

    /etc/ansible/hosts 中直接写入密码:

    [web]
    172.16.1.104 ansible_user=root ansible_ssh_pass=your_password  # 明文密码风险高!
    
    • 缺点:密码暴露在文件中,极不安全。
  3. 配置 SSH 密钥认证(终极方案)

    # 1. 本地生成密钥对(如果尚未生成)
    ssh-keygen -t rsa
    
    # 2. 将公钥复制到目标主机
    ssh-copy-id root@172.16.1.104
    
    # 3. 测试免密登录
    ssh root@172.16.1.104  # 应直接登录,无需密码
    
    • 效果:Ansible 自动使用密钥认证,无需密码。

4)指定hosts

ansible [组名] -i hosts文件路径 -m command -a 'hostname'

总结

本篇主要围绕 Ansible 主机清单(Inventory) 展开,内容涵盖:

✅ 主机清单的基本架构与角色划分:通过实际环境中的 IP、主机名、角色映射,帮助你理清 Ansible 管理节点与被管节点的关系。

✅ 主机清单的书写方式:包括基本的 [组名] 写法、children 子组用法、免密配置技巧等。

✅ 实战案例讲解:一步步带你配置 hosts 文件,熟悉如何按需管理目标主机,如何对不同主机分组,做到分类管理、批量执行。

掌握主机清单的编写,是玩转 Ansible 自动化运维的第一步。合理组织 inventory,将直接影响你后续的 Playbook 管理效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值