返回到文章

采纳

编辑于 1月前

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

Ansible

写一个最小可用的 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 只显示标准输出,不会展示太多无关信息。
  • 如果你要存日志,可以再加一步把结果写到文件。