如何在 Linux1 安装 Ansible 控制节点并管理 Linux2-9?

文章导读
在 Linux1 上安装 Ansible 并通过 SSH 免密连接管理 Linux2-9 是标准的自动化运维方案。控制节点只需安装 Ansible 核心,目标主机无需代理,依赖 SSH 和 Python 3 环境。
📋 目录
  1. 环境安装与版本注意
  2. 批量配置 SSH 免密与 Inventory
  3. 安全配置与 ansible.cfg
  4. 连通性与权限验证
  5. 常见故障排查
  6. 参考来源
A A

在 Linux1 上安装 Ansible 并通过 SSH 免密连接管理 Linux2-9 是标准的自动化运维方案。控制节点只需安装 Ansible 核心,目标主机无需代理,依赖 SSH 和 Python 3 环境。

核心结论:Ansible 基于 SSH 协议无需代理,控制节点安装 Ansible 并配置密钥认证即可管理目标主机。

  • 适用场景:多台 Linux 服务器的批量配置、应用部署和日常运维
  • 前置条件:控制节点能 SSH 连通所有目标主机,目标主机需安装 Python 3
  • 验收标准:使用 ansible ping 模块测试连通性并验证 sudo 提权

环境安装与版本注意

推荐使用系统包管理器安装,避免 pip 安装导致的环境冲突。注意 Ansible 2.12+ 版本已移除对 Python 2 的支持,目标主机必须包含 Python 3 解释器。

如何在 Linux1 安装 Ansible 控制节点并管理 Linux2-9?
# Ubuntu/Debian
sudo apt update
sudo apt install ansible

# CentOS/RHEL 8+
sudo dnf install ansible
# 或 CentOS 7
sudo yum install ansible

# 若需特定版本可使用 pip3,但需注意依赖冲突
# pip3 install ansible

批量配置 SSH 免密与 Inventory

针对 Linux2-9 共 8 台主机,手动分发密钥效率低。建议使用 Shell 循环批量分发公钥,并利用 Inventory 的范围语法定义主机列表。

如何在 Linux1 安装 Ansible 控制节点并管理 Linux2-9?
# 1. 生成密钥 (若无)
ssh-keygen -t ed25519 -N ""

# 2. 批量分发密钥 (假设 IP 段为 192.168.1.2-9,用户为 user)
for ip in 192.168.1.{2..9}; do
  ssh-copy-id -o StrictHostKeyChecking=no user@$ip
done

# 3. 编写 Inventory 文件 (hosts)
cat > hosts <

安全配置与 ansible.cfg

创建 ansible.cfg 可优化连接行为。关闭主机密钥检查可避免首次连接交互,但生产环境需警惕中间人攻击风险,建议预先收集密钥或启用严格检查。

[defaults]
# 生产环境建议设为 True 并预先管理 known_hosts
host_key_checking = False
# 指定 Inventory 文件路径
inventory = ./hosts
# 禁用 Cow 动画提升脚本执行速度
nocows = 1

连通性与权限验证

使用 ping 模块测试 Python 环境与 SSH 连通性,结合 -b 参数验证 sudo 提权配置。

# 测试连通性
ansible all -i hosts -m ping

# 验证 sudo 提权 (需配置 passwordless sudo)
ansible all -i hosts -m command -a "whoami" -b

# 预期返回
# 192.168.1.2 | SUCCESS | rc=0 >>
# root

常见故障排查

  • Python 版本错误:若报错 "Unsupported Python version",请检查目标主机是否仅安装 Python 2。Ansible 2.12+ 强制要求 Python 3。
  • SSH 密钥拦截:若批量分发失败,检查防火墙是否放行 22 端口,或 SSH 配置是否禁止公钥认证。
  • Sudo 权限不足:执行需提权命令时加 -b 参数。若提示输入密码,需配置 visudo 允许免密 sudo。
  • 主机密钥验证失败:若未关闭检查且更换过目标主机系统,需清理控制节点 ~/.ssh/known_hosts 中旧记录。

参考来源

  • Ansible 官方文档:Installation Guide - https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
  • Ansible 官方文档:Intro to Ad-Hoc Commands - https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html