Ansible - Solução de problemas
As estratégias mais comuns para depurar manuais do Ansible estão usando os módulos fornecidos abaixo -
Depurar e registrar
Esses dois são os módulos disponíveis no Ansible. Para fins de depuração, precisamos usar os dois módulos criteriosamente. Exemplos são demonstrados abaixo.
Use verbosidade
Com o comando Ansible, pode-se fornecer o nível de detalhamento. Você pode executar os comandos com nível de detalhamento um (-v) ou dois (-vv).
Pontos importantes
Nesta seção, veremos alguns exemplos para entender alguns conceitos.
Se você não está citando um argumento que começa com uma variável. Por exemplo,
vars:
age_path: {{vivek.name}}/demo/
{{vivek.name}}
Isso gerará um erro.
Solução
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
Quando executo este código por meio do comando Ansible-playbook -i hosts test.yml, obtenho a saída conforme mostrado abaixo.
Se você vir o yaml, registramos a saída de um comando em uma variável - myvar e apenas imprimiu a saída.
O texto marcado em amarelo nos fala sobre a propriedade da variável –myvar que pode ser usada para controle de fluxo posterior. Desta forma, podemos descobrir sobre as propriedades que são expostas de uma determinada variável. O seguinte comando debug ajuda nisso.
$ 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
Problemas comuns do manual
Nesta seção, aprenderemos sobre alguns problemas comuns do manual. Os problemas são -
- Quoting
- Indentation
O manual é escrito no formato yaml e os dois acima são os problemas mais comuns no yaml / manual.
Yaml não suporta recuo baseado em tabulação e suporta recuo baseado em espaço, então é preciso ter cuidado com o mesmo.
Note - assim que terminar de escrever o yaml, abra este site (https://editor.swagger.io/) e copie e cole seu yaml no lado esquerdo para garantir que o yaml seja compilado corretamente. Esta é apenas uma dica.
O Swagger qualifica erros em avisos e também erros.