Ansible register 变量详解

在 Ansible 中,我们可以通过 register 捕获 task 的输出,并将它保存到一个变量中,方便在以后的任务中调用;

Ansible register 变量详解

编写 playbook,我们通过 whoami 这个 shell 命令去查看当前登录的用户,并将结果赋值给 register 变量 user,然后通过 debug 模块输出 user 变量的信息;

it@workstation:~/ansiblenbsp;vim test.yml 
it@workstation:~/ansiblenbsp;cat test.yml
---
- name: Check the user 
  hosts: servera
  tasks:
    - name: View the logged in user name
      shell: whoami
      
      register: user
    - debug:
        var: user

运行 playbook,在运行 debug 模块时,显示了输出的结果;

it@workstation:~/ansiblenbsp;ansible-playbook test.yml 
BECOME password: 

PLAY [Check the user] ******************************************************************************

TASK [Gathering Facts] *****************************************************************************
ok: [servera]

TASK [View the logged in user name] ****************************************************************
changed: [servera]

TASK [debug] ***************************************************************************************
ok: [servera] => {
    "user": {
        "changed": true,
        "cmd": "whoami",
        "delta": "0:00:00.002775",
        "end": "2021-01-19 08:53:22.611335",
        "failed": false,
        "rc": 0,
        "start": "2021-01-19 08:53:22.608560",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "root",
        "stdout_lines": [
            "root"
        ]
    }
}

PLAY RECAP *****************************************************************************************
servera                    : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

change: 表示执行命令的状态,如果命令执行了,则为 true;

cmd: 表示的则是你当前执行的命令;

delta: 表示命令执行所花费的时间

start: 表示命令开始执行的时间

end: 表示命令结束的时间

failed: 表示命令执行的结果,如果为 false 则表示命令执行成功,true 则表示命令执行失败

rc: 表示命令执行的返回码(return code),0 表示执行成功;

stderr:命令输出的标准错误信息

stderr_lines: 按换行符分割输出的内容,在多行输出时,显示的效果比 stderr 更加直观

stdout: 命令的标准输出信息

stdout_lines: 按换行符分割输出的内容,在多行输出时,结果更加直观

我们可以在 playbook 中,很方便地调用这些输出。

编写 playbook,在 playbook 中调用 register 变量中的输出,然后调用该变量的输出信息,打印出一条消息:

it@workstation:~/ansiblenbsp;vim test.yml 
it@workstation:~/ansiblenbsp;cat test.yml
---
- name: Check the user 
  hosts: servera
  tasks:
    - name: View the logged in user name
      shell: whoami
      
      register: user
    - debug:
        msg: "Logged in as user {{ user.stdout }}"

运行 playbook,在运行 debug 模块时,我们看到了输出的消息

it@workstation:~/ansiblenbsp;ansible-playbook test.yml 
BECOME password: 

PLAY [Check the user] ******************************************************************************

TASK [Gathering Facts] *****************************************************************************
ok: [servera]

TASK [View the logged in user name] ****************************************************************
changed: [servera]

TASK [debug] ***************************************************************************************
ok: [servera] => {
    "msg": "Logged in as user root"
}

PLAY RECAP *****************************************************************************************
servera                    : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

后面会分享更多运维方面的内容,感兴趣的朋友可以关注下!

Ansible register 变量详解

*特别声明:本文为【怕水的鱼】投稿,仅代表作者观点。马哥教育仅提供信息发布平台。

展开阅读全文

页面更新:2024-05-27

标签:变量   赋值   直观   详解   模块   命令   本文   观点   声明   状态   效果   消息   时间   标准   内容   科技   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top