Ansibleregister变量详解
在 Ansible 中,我们可以通过 register 捕获 task 的输出,并将它保存到一个变量中,方便在以后的任务中调用;
编写 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
后面会分享更多运维方面的内容,感兴趣的朋友可以关注下!
*特别声明:本文为【怕水的鱼】投稿,仅代表作者观点。马哥教育仅提供信息发布平台。