ansible之register

在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模块输出了第一个任务中的注册变量的值,

 

赞(0) 打赏
未经允许不得转载:IT火车 » ansible之register

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

1元打赏送给作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏