Ansible 故障排除
调试Ansible playbooks最常见的策略是使用以下模块:
Debug和Register
这两个是Ansible中可用的模块。为了调试的目的,我们需要明智地使用这两个模块。下面演示了一些例子。
使用冗长模式
使用Ansible命令可以提供冗长级别。您可以使用级别一(-v)或级别二(-vv)运行命令。
重要要点
在本节中,我们将通过一些示例了解一些概念。
如果您没有引用以变量开头的参数。例如,
vars:
age_path: {{vivek.name}}/demo/
{{vivek.name}}
这会引发一个错误。
解决方案
vars:
age_path: "{{vivek.name}}/demo/" – marked in yellow is the fix.
How to use register -> Copy this code into a yml file say test.yml and run it
---
#Tsting
- hosts: tomcat-node
tasks:
- shell: /usr/bin/uptime
register: myvar
- name: Just debugging usage
debug: var = myvar
当我通过命令Ansible-playbook -i hosts test.yml运行此代码时,我会得到如下所示的输出。
如果你看到yaml,我们已经将一个命令的输出注册到一个变量中 – myvar 并打印了输出结果。
标记为黄色的文本告诉我们关于变量myvar的属性,可以用于进一步的流程控制。这样我们就可以了解一个特定变量的可用属性。以下的调试命令有助于实现这一点。
$ ansible-playbook -i hosts test.yml
PLAY [tomcat-node] ***************************************************************
**************** ****************************************************************
*************** ******************************
TASK [Gathering Facts] *****************************************************************
************** *****************************************************************
************** **************************
Monday 05 February 2018 17:33:14 +0530 (0:00:00.051) 0:00:00.051 *******
ok: [server1]
TASK [command] ******************************************************************
************* ******************************************************************
************* **********************************
Monday 05 February 2018 17:33:16 +0530 (0:00:01.697) 0:00:01.748 *******
changed: [server1]
TASK [Just debugging usage] ******************************************************************
************* ******************************************************************
************* *********************
Monday 05 February 2018 17:33:16 +0530 (0:00:00.226) 0:00:01.974 *******
ok: [server1] => {
"myvar": {
"changed": true,
"cmd": "/usr/bin/uptime",
"delta": "0:00:00.011306",
"end": "2018-02-05 17:33:16.424647",
"rc": 0,
"start": "2018-02-05 17:33:16.413341",
"stderr": "",
"stderr_lines": [],
"stdout": " 17:33:16 up 7 days, 35 min, 1 user, load average: 0.18, 0.15, 0.14",
"stdout_lines": [
" 17:33:16 up 7 days, 35 min, 1 user, load average: 0.18, 0.15, 0.14"
]
}
}
PLAY RECAP ****************************************************************************
**********************************************************************************
**************************************
server1 : ok = 3 changed = 1 unreachable = 0 failed = 0
常见剧本问题
在本部分中,我们将了解几个常见的剧本问题。问题如下:
- 引用
- 缩进
剧本以yaml格式编写,上述两个问题是yaml /剧本中最常见的问题。
Yaml不支持基于制表符的缩进,只支持基于空格的缩进,因此需要注意。
注意 - 在完成yaml编写后,打开此网站(https://editor.swagger.io/),并将您的yaml复制粘贴到左侧以确保yaml正确编译。这只是一个提示。
Swagger对警告和错误进行合格判断。