Rocky Linux 10.2-Ansible 控制节点部署
(ansible 扩展集合、sshpass 在 EPEL),分为 联网在线部署(推荐) 和 纯离线 DVD 本地源方案;架构:1 台控制节点(安装 ansible) + 多台被管理节点(仅需要 ssh+python3)
环境规划
1. 控制节点信息
-
操作系统:Rocky Linux 10.2 x86_64
-
网络:支持联网;离线场景可挂载系统 DVD 作为本地 YUM 源
-
必备软件:Python3、openssh-clients、ansible
-
功能:Ansible 管理控制端,下发任务管理多台被控主机
前置:所有主机互通,关闭防火墙 / 放行 ssh,SELinux 建议先测试环境临时关闭
setenforce 0
联网在线部署(最简生产推荐)
2.1 控制节点操作(root 执行)
-
系统更新,启用 CRB 源,安装 epel 源
dnf update -y
dnf config-manager --set-enabled crb
dnf install -y epel-release


安装 ansible(完整套件)
完整包(包含常用集合)
dnf install -y ansible sshpass

问题说明
Rocky/EL10(Enterprise Linux 10)默认 EPEL 源里没有 ansible 包,新版 Ansible 已经拆分:
✅ ansible-core(核心)
✅ ansible 不再是 rpm 包名,改为通过 pip / ansible-galaxy 安装完整集合
你执行
dnf install -y ansible sshpass报错:没有任何匹配: ansible
dnf 安装 ansible-core(推荐,系统 rpm 包)
dnf install -y ansible-core sshpass

轻量核心包(按需单独装galaxy集合)
dnf install -y ansible-core sshpass

✅ 结果说明
ansible-core 和 sshpass 已经安装完成,不需要再次执行安装命令。
验证安装
ansible --version

✅ 安装正常
ansible core 2.16.16 部署成功,路径都没问题:
主程序:/usr/bin/ansible
配置文件:/etc/ansible/ansible.cfg
集合存放目录:/usr/share/ansible/collections 和 /root/.ansible/collections
初始化 ansible 目录(新版可能不会自动生成 /etc/ansible)
mkdir -p /etc/ansible
ansible-config init --disabled > /etc/ansible/ansible.cfg

配置清单 Inventory(管理主机列表)
一键写入 inventory 完整命令(直接整条复制执行,无需手动 vim 粘贴)
一句话总结
[db] → 创建一个名叫 db 的主机分组(目前里面没机器)
[all:vars] → 设置全部主机共用的登录参数(账号、密码、提权等)
cat > /etc/ansible/hosts <<'EOF'
[web]
192.168.202.101
[db]
[all:vars]
ansible_user=root
ansible_ssh_pass="sykj697335!"
ansible_become=true
ansible_become_method=sudo
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
EOF

执行完成后测试连通:
ansible all -m ping

pong 代表 Ansible 已经可以正常管理这台被控主机 192.168.202.101
当前状态总结
-
ansible-core、sshpass 安装完成
-
Inventory /etc/ansible/hosts 配置生效
-
网络互通、root 远程 ssh 放行、密码认证正常
-
Python 解释器自动识别成功,可以执行各类模块和 playbook
往 [db] 添加一台服务器 IP(示例 IP:192.168.1.104)
完整清单模板(一键复制写入)
cat > /etc/ansible/hosts <<'EOF'
[web]
192.168.1.101
192.168.1.102
[db]
192.168.1.103
192.168.1.104
[all:vars]
ansible_user=root
# 密码方式(测试用,生产推荐密钥免密)
ansible_ssh_pass="sykj697335"
ansible_become=true
ansible_become_method=sudo
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
EOF
接下来常用测试命令参考
# 查看被控主机完整信息
ansible 192.168.202.101 -m setup
# 在被控机执行shell命令示例
ansible 192.168.202.101 -m shell -a "df -h"
# 查看inventory清单
ansible-inventory --list
浙公网安备 33010602011771号