Ansible modules 如何获取返回值

Ansible模块返回一个包含数据结构的结果,如ansible_facts、changed、rc等字段。changed字段表示任务是否导致主机变更,rc是命令执行的返回码。stdout和stderr用于记录命令输出。日志可以通过命令保存,并根据changed和rc判断执行成功与否。

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

Return Values

Ansible 模块通常会返回一个数据结构,该数据结构可以注册到变量中,或者在 ansible 程序输出时直接看到。 每个模块都可以选择性地记录自己独特的返回值。

常用字段

ansible_facts

该字段应包含一个字典,该字典将附加到分配给主机的事实中。 这些将可以直接访问,不需要使用注册变量。

changed

一个布尔值,指示任务是否必须对目标或委托主机进行更改。

cmd

执行模块的具体命令

msg

传递给用户的带有通用消息的字符串。

rc

一些模块执行命令行实用程序或适合直接执行命令(原始、shell、命令等),此字段包含这些实用程序的“返回代码”。

stderr

一些模块执行命令行实用程序或适合直接执行命令(raw、shell、command 等),此字段包含这些实用程序的错误输出。

stdout

一些模块执行命令行实用程序或适合直接执行命令(raw、shell、command 等)。 该字段包含这些实用程序的正常输出。

压缩日志

压缩日志,一行显示结果:

root@ubuntu-x64_01:~/return_value# ansible all -m shell -a "ls -tlh  /opt/test.1" -o 
192.168.88.11 | CHANGED | rc=0 | (stdout) -rw-r--r-- 1 root root 0 16 16:41 /opt/test.1
192.168.88.12 | CHANGED | rc=0 | (stdout) -rw-r--r-- 1 root root 0 16 16:41 /opt/test.1
192.168.88.13 | UNREACHABLE!: Failed to connect to the host via ssh: ssh: connect to host 192.168.88.13 port 22: No route to host

保存日志

日志输出到此目录

root@ubuntu-x64_01:~# ansible all -m shell -a "ls -tlh  /opt/test.1" -t return_value 
192.168.88.12 | CHANGED | rc=0 >>
-rw-r--r-- 1 root root 0 16 16:41 /opt/test.1
192.168.88.11 | CHANGED | rc=0 >>
-rw-r--r-- 1 root root 0 16 16:41 /opt/test.1
192.168.88.13 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.88.13 port 22: No route to host",
    "unreachable": true
}

检查执行结果

执行后,将返回值日志保存到return_value目录下,多次执行,日志会被最后一次覆盖 !!!!!!!如果命令执行失败,那么 “changed:false” , “rc”: 1。 如果命令执行成功, 那么 “changed:true” 并且 “rc”: 0, 同时 “stderr”: “”, 可以根据这个来判断

成功日志

root@ubuntu-x64_01:~/return_value# cat 192.168.88.11 | jq 
{
  "ansible_facts": {
    "discovered_interpreter_python": "/usr/bin/python3"
  },
  "changed": true,
  "cmd": "ls -tlh  /opt/test.1",
  "delta": "0:00:00.008203",
  "end": "2023-01-06 17:31:11.060031",
  "msg": "",
  "rc": 0,
  "start": "2023-01-06 17:31:11.051828",
  "stderr": "",
  "stderr_lines": [],
  "stdout": "-rw-r--r-- 1 root root 0 1月   6 16:41 /opt/test.1",
  "stdout_lines": [
    "-rw-r--r-- 1 root root 0 1月   6 16:41 /opt/test.1"
  ]
}

失败日志

root@ubuntu-x64_01:~/return_value# cat 192.168.88.13 | jq 
{
  "changed": false,
  "msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.88.13 port 22: No route to host",
  "unreachable": true
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ethanchen's notes

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值