Ansible实现playbook把结果收集到控制端

半兽人 发表于: 2025-09-11   最后更新时间: 2025-09-11 14:11:08  
{{totalSubscript}} 订阅, 34 游览

写一个最小可用的 Playbook 示例,可以让 webservers 组里每个节点执行 ping -c 4 www.baidu.com,并把结果收集到控制端。

1. Playbook 文件

创建一个 ping_baidu.yml

- hosts: webservers
  become: no
  tasks:
    - name: Ping www.baidu.com from each host
      shell: ping -c 4 www.baidu.com
      register: ping_result   # 把结果保存到变量里

    - name: Show ping output
      debug:
        var: ping_result.stdout

2. 执行 Playbook

ansible-playbook ping_baidu.yml

3. 结果输出

执行后你会看到类似:

TASK [Show ping output] ********************************************************************
ok: [10.0.19.207] => {
    "ping_result.stdout": "PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data...\n64 bytes from 14.215.177.39: icmp_seq=1 ttl=54 time=12.3 ms\n..."
}
ok: [10.0.19.208] => {
    "ping_result.stdout": "PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data...\n64 bytes from 14.215.177.39: icmp_seq=1 ttl=54 time=15.6 ms\n..."
}

4. 补充说明

  • register: ping_result 把命令执行的结果保存起来。
  • debug: var=ping_result.stdout 只显示标准输出,不会展示太多无关信息。
  • 如果你要存日志,可以再加一步把结果写到文件。
更新于 2025-09-11
在线,2小时前登录

查看Ansible更多相关的文章或提一个关于Ansible的问题,也可以与我们一起分享文章