开发手册 欢迎您!
软件开发者资料库

Ansible - 故障排除

Ansible故障排除 - 从简单和简单的步骤学习Ansible,从基本到高级概念,包括简介,环境设置,YAML基础知识,Ad hoc命令,Playbooks,角色,变量,高级执行,故障排除。

调试Ansible剧本的最常见策略是使用下面给出的模块 :

调试和注册

这两个是可用的模块在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

常见的Playbook问题

在本节中,我们将了解一些常见的Playbook问题.问题是 :

  • 报价

  • 缩进

Playbook以yaml格式编写,以上两个是yaml/playbook中最常见的问题.

Yaml不支持基于制表符的缩进和支持基于空格的缩进,所以需要注意相同的.

注意 : 完成编写yaml后,打开此站点( https://editor.swagger.io/)并在左侧复制粘贴您的yaml以确保yaml正确编译.这只是一个提示.

Swagger在警告和错误中限定错误.