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

文章导读
在 Linux1 上通过包管理器安装 Ansible,配置 SSH 免密登录并编写 Inventory 文件,即可实现对 Linux2-9 的批量管理。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

在 Linux1 上通过包管理器安装 Ansible,配置 SSH 免密登录并编写 Inventory 文件,即可实现对 Linux2-9 的批量管理。

先说结论:这是一套标准的无代理自动化运维方案,适合中小规模服务器批量配置。

  • 适合:需要批量执行命令、部署应用或统一配置的多台 Linux 服务器场景。
  • 先看:控制节点与受控节点之间的网络连通性及 SSH 权限配置。
  • 建议:优先使用 SSH 密钥认证,避免在脚本中硬编码密码。

命令速用版

# 1. 控制节点安装 (需 Python 环境)
pip3 install ansible

# 2. 生成 SSH 密钥 (一路回车)
ssh-keygen -t rsa

# 3. 分发密钥到受控节点 (需输入一次密码)
ssh-copy-id user@Linux2_IP

# 4. 测试连通性
ansible all -m ping

为什么会这样

Ansible 基于 SSH 协议工作,控制节点不需要在受控节点安装客户端软件(Agentless)。它通过读取 Inventory 文件知道要管理哪些主机,利用 SSH 密钥免密登录执行 Python 脚本片段来完成任务。这种架构减少了受控节点的维护负担,但要求控制节点到受控节点的 22 端口通畅且 SSH 服务正常。

分步处理

第一步:准备控制节点环境
在 Linux1 上确认 Python 环境,通常 Linux 发行版自带。使用 pip 安装 Ansible 比系统包更新更及时。

python3 `--version`
pip3 install ansible

第二步:配置 Inventory 文件
默认位置在/etc/ansible/hosts,也可自定义。将 Linux2-9 的 IP 填入。

如何在 Linux1 安装 Ansible 作为控制节点并管理 Linux2-9 受控节点?
[webservers]
192.168.1.2
192.168.1.3
# ... 依次填入直到 Linux9

第三步:配置 SSH 免密
必须确保 Linux1 能免密登录 Linux2-9。如果ssh-copy-id不可用,需手动将~/.ssh/id_rsa.pub内容追加到受控节点的~/.ssh/authorized_keys

第四步:权限配置
如果受控节点需要 sudo 权限,需在 Ansible 配置中启用become

怎么验证是否生效

使用ping模块测试连通性,返回SUCCESS即为正常。

ansible all -m ping
# 预期输出:192.168.1.2 | SUCCESS => {...}

尝试执行一个简单命令,如查看内核版本:

ansible all -m command -a "uname -r"

常见坑

  • SSH 主机密钥检查:首次连接可能因known_hosts报错,可在 ansible.cfg 中设置host_key_checking = False(测试环境)。
  • Python 版本:受控节点需有 Python 解释器(通常自带),否则需指定ansible_python_interpreter
  • 权限不足:普通用户执行系统命令需配置 sudo 免密或 Ansible 的 become 参数。
  • 防火墙:确保受控节点防火墙放行了 SSH 端口。

参考来源

  • Ansible 官方文档:Installation Guide, https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
  • Ansible 官方文档:Working with Playbooks, https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html