在ansible的使用过程中,我们如何查看执行的命令的返回结果?
ansible的模块在运行之后,其实都会返回一些”返回值”,我们可以把这些返回值写入到某个变量中,这样我们就能够通过引用对应的变量从而获取到这些返回值了,这种将模块的返回值写入到变量中的方法被称为”注册变量”,在playbook中可以使用register将捕获命令的输出保存在临时变量中,然后使用debug模块进行显示输出。
在有循环的task中使用register,register保存的是一个列表,整个属性为results
results 是一个单个循环返回的结果的列表
- debug: msg="{{ item }}"
with_items:
- one
- two
register: res
此时,得到的注册变量是一个字典, 字典中result是一个列表list, 列表result中包含了每一个item的执行结果
示例:
- hosts: all gather_facts: no tasks: - name: 注册hostname_result变量 shell: hostname register: hostname_result - name: 显示结果 debug: msg="{{hostname_result.stdout}} => {hostname_result.cmd}}"
#第一个shell执行完后,使用register获取数据到hostname_result里
#hostname_result是一个key value字典
#debug输出hostname_result.stdout和hostname_result.cmd的具体内容
示例:
[root@server ~]# cat test.yml --- - hosts: test remote_user: root tasks: - name: test shell shell: "echo test > /var/testshellfile" register: testvar - name: shell module return values debug: var: testvar
使用”register”关键字将当前shell任务的返回值写入了名为”testvar”的变量中,第二个任务使用debug模块输出了第一个任务中的注册变量的值,
最新评论