Ansible教程:ping模块 作者:马育民 • 2026-09-20 21:36 • 阅读:10001 # 介绍 校验两点: 1. **SSH登录能否成功** 2. **受控节点有可用Python解释器** 模块全名:`ansible.builtin.ping`,属于内置核心模块,Linux/类Unix主机使用 **重点:不是 ICMP ping!** 不是网络层 ping # 原理 1. Ansible 通过 **SSH** 连接目标主机 2. 将ping模块脚本传输到远程主机执行 3. 在远程主机尝试调用Python,验证Python环境可用 4. 成功返回 `pong`;失败抛出异常(SSH拒绝、密码错误、无Python、权限不足等) # 返回值 - `ping`:字符串,成功默认返回 `"pong"` - `changed: false`:ping模块**不会修改远程主机任何文件/状态**,永远不会产生变更 - `ansible_facts`:顺带返回远程主机Python解释器信息(`discovered_interpreter_python`) 成功示例输出: [](https://www.malaoshi.top/upload/0/3/1GW45FnKYN5O.png) ```json 192.168.1.100 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" } ``` # 例子:指定ip列表 **注意:** 必须有 `,` 否则报错,有 `,` 表示列表 ```bash ansible all -i 192.168.58.138, -m ping ``` [](https://www.malaoshi.top/upload/0/3/1GW45FnKYN5O.png) # 例子:自定义 inventory(推荐) ### 创建文件 新建 `ansible_client.ini` ```ini [web] 192.168.58.138 ansible_user=user ``` **解释:** - `[web]`:主机组名,可以一次性管理组内所有机器 - `ansible_user`:ssh登录的用户名,可省略 **提示:**执行命令时用 `-i ansible_client.ini` 指定。 ### 测试所有的组内被控端 ```bash ansible all -m ping -i ansible_client.ini ``` [](https://www.malaoshi.top/upload/0/3/1GW45FnKYN5O.png) ### 测试 `web` 组内被控端 ```bash ansible web -m ping -i ansible_client.ini ``` [](https://www.malaoshi.top/upload/0/3/1GW45FnKYN5O.png) # 例子:修改默认 hosts ### 修改 hosts 文件 ```bash sudo nano /etc/ansible/hosts ``` 在文件末尾添加分组: ```ini [web] 192.168.58.138 ansible_user=user ``` **解释:** - `[web]`:主机组名,可以一次性管理组内所有机器 - `ansible_user`:ssh登录的用户名,可省略 ### 测试所有的组内被控端: ```bash ansible all -m ping ``` [](https://www.malaoshi.top/upload/0/3/1GW45FnKYN5O.png) ### 测试 `web` 组内被控端: ```bash ansible web -m ping ``` [](https://www.malaoshi.top/upload/0/3/1GW45FnKYN5O.png) # 五、常见失败原因 1. **SSH 无法连通**:防火墙拦截、端口不是22、IP不可达、密钥不对、账号密码错误 2. **受控节点无Python**:最小化安装CentOS/RHEL,没有python2/python3,ping直接报错 3. **Python版本/解释器识别问题**:Ansible找不到python,需要在inventory指定 `ansible_python_interpreter=/usr/bin/python3` 4. **sudo权限问题**:不需要sudo,ping不需要root权限,普通用户SSH登录即可 5. **主机密钥确认**:首次ssh连接,需要手动ssh登录一次接受host key,或配置`host_key_checking=False` # 查看官方文档命令 ```bash ansible-doc ping ``` 原文出处:/show_1GW45GbSJxyU.html