Rocky Linux 10.2-Ansible 控制节点部署

Rocky10 DVD1 本地光盘源只有 BaseOS + AppStream,不含完整 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 执行)
  1. 系统更新,启用 CRB 源,安装 epel 源

dnf update -y
dnf config-manager --set-enabled crb
dnf install -y epel-release

image

image

安装 ansible(完整套件)

完整包(包含常用集合)

dnf install -y ansible sshpass

image

问题说明

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

image

轻量核心包(按需单独装galaxy集合)

dnf install -y ansible-core sshpass

image

✅ 结果说明

ansible-coresshpass 已经安装完成,不需要再次执行安装命令。

验证安装

ansible --version

image

✅ 安装正常

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

image

配置清单 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

image

执行完成后测试连通:

ansible all -m ping

image

pong 代表 Ansible 已经可以正常管理这台被控主机 192.168.202.101

当前状态总结
  1. ansible-core、sshpass 安装完成

  2. Inventory /etc/ansible/hosts 配置生效

  3. 网络互通、root 远程 ssh 放行、密码认证正常

  4. 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

posted on 2026-08-23 12:27  九幽提刑官  阅读(6)  评论(0)    收藏  举报

导航