Ansible register 变量详解【转】

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

it@workstation:~/ansible$ vim test.yml 
it@workstation:~/ansible$ 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:~/ansible$ 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:~/ansible$ vim test.yml 
it@workstation:~/ansible$ 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:~/ansible$ 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 变量详解 - 知乎
https://zhuanlan.zhihu.com/p/367906095

posted @   paul_hch  阅读(155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示