【Ansible】测试ansible ping模块

本文介绍了在DevOps环境中,如何利用Ansible的ping模块进行自动化运维。通过配置服务器组、生成SSH密钥对、设置免密登录以及执行ping模块测试,实现了对远程Linux服务器的健康检查。这为系统运维人员提供了便捷的日常检查手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在DevOps时代,使用自动化运维工具来完成一些日常简单、重复的工作,是运维人员必须要掌握的一门技能。今天,我带大家来简单入门超级强大的Ansible的一个ping模块的使用。
        【场景1】系统运维人员A每天早上上班,要测试几十台Linux服务器有没有宕机,但是手上又没有图形化的自动化运维平台可以使用。

第1步 配置服务器组myvms(这里可以配置很多台主机,这边测试,就配置了一台虚拟机)

# vi /etc/ansible/hosts
[myvms]
192.168.223.200

第2步 在ansible服务端创建免密登录的公钥和私钥

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:N+tfsx2VIRc6grSPp7Vb5C7IbGEYhyI1nuB9gWdk8z4 root@ansible-awx
The key's randomart image is:
+---[RSA 2048]----+
|      o+ .     . |
|   . +.++ o   . .|
|  . = = o+ . + o |
|   o = +..o . + o|
|    . o SEo+ . ..|
|       . +=o+   .|
|        +.+. oo. |
|         * .+. +.|
|        . .oo.. .|
+----[SHA256]-----+

# cd ~/.ssh && ls
id_rsa  id_rsa.pub

第3步 将公钥复制到目标服务器

# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.223.200

第4步    在目标端添加ansible服务端的公钥

# cd ~/.ssh && cat ./id_rsa.pub >> authorized_keys

第5步 测试ansible ping模块

# ansible myvms -m ping
192.168.223.200 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

<think>好的,我现在需要解决用户的问题,即如何用Ansible Playbook编写任务来执行ping命令进行连通性测试。首先,我得回忆一下Ansible的基本知识,尤其是Playbook的结构和模块的使用。 用户提到的引用中有几个相关的部分。引用[2]里有一个示例Playbook,使用了ping模块,这应该是最直接的参考。示例中的test01.yml文件内容显示,Playbook的结构包括name、hosts、tasks,每个任务指定模块和参数。所以,正确的写法应该是定义一个play,指定主机,然后在tasks中使用ping模块。 另外,引用[3]提到Playbooks是YAML文件,包含任务和角色。这提醒我要确保YAML的语法正确,比如缩进和冒号的使用。同时,引用[4]提到了Python解释器的设置,这可能影响执行环境,但用户的问题主要在于编写Playbook,所以暂时不需要处理这个,除非遇到问题。 用户的需求是执行ping测试Ansibleping模块实际上并不发送ICMP请求,而是检查SSH连接和目标主机的Python环境。这一点可能需要向用户说明,避免误解。但用户的问题集中在如何编写,所以重点放在结构上。 接下来,我需要确认Playbook的基本结构是否正确。比如,是否以三个连字符开头,任务是否正确命名,主机是否指定正确。根据引用[2]的示例,正确的格式应该是: --- - name: 测试网络连通性 hosts: all tasks: - name: 执行Ansible Ping测试 ping: 然后执行ansible-playbook命令运行这个文件。需要确保hosts的值与用户的主机清单匹配,比如all或者特定的组。 可能用户会遇到的常见错误包括YAML格式错误,比如缩进不正确,或者模块名称拼写错误。需要提醒用户检查这些地方。另外,执行时需要确保有足够的权限,可能要用到--ask-pass或--become选项,但用户的问题中没有提到,所以可能不需要深入。 最后,生成相关问题的时候,可以考虑用户接下来可能想知道如何扩展这个Playbook,比如添加多个任务,或者处理不同主机组的情况,或者如何验证结果。这样能帮助用户进一步学习。</think>以下是如何使用 Ansible Playbook 实现 ping 命令测试的详细步骤说明: ### 一、Ansible Playbook 编写规范 1. Playbook 采用 YAML 格式编写,文件扩展名为 `.yml` 2. 必须包含至少一个 **play**(剧本单元) 3. 每个 play 包含: - `hosts` 字段:定义目标主机/主机组 - `tasks` 字段:定义要执行的任务列表 ### 二、连通性测试 Playbook 示例 创建文件 `ping_test.yml`: ```yaml --- - name: 网络连通性测试 hosts: all tasks: - name: 执行Ansible Ping检测 ping: ``` > 注意:这里的 `ping` 模块Ansible 内置的**无参数**模块,实际检测的是 SSH 连接和 Python 环境[^2] ### 三、执行方式 ```bash ansible-playbook ping_test.yml ``` ### 四、执行结果解析 正常输出示例: ```text PLAY [网络连通性测试] *************************************** TASK [执行Ansible Ping检测] *************************** ok: [192.168.93.130] PLAY RECAP ******************************************** 192.168.93.130 : ok=1 changed=0 unreachable=0 failed=0 ``` 关键指标说明: - `ok=1` 表示成功执行 - `failed=0` 表示零失败 - `unreachable=0` 表示所有主机可达[^3] ### 五、高级用法 1. 限定特定主机组: ```yaml hosts: webservers # 主机清单中定义的组名 ``` 2. 多任务组合: ```yaml tasks: - name: 主任务1 ping: - name: 主任务2 command: echo "test" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cnskylee

技术分享我是认真的,期待您打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值