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