- Ansible 教程
- Ansible - 首頁
- Ansible - 簡介
- Ansible - 環境設定
- Ansible - YAML 基礎
- Ansible - Ad hoc 命令
- Ansible - playbook
- Ansible - 角色
- Ansible - 變數
- Ansible - 高階執行
- Ansible - 故障排除
- Ansible 有用資源
- Ansible - 快速指南
- Ansible - 有用資源
- Ansible - 討論
Ansible - 故障排除
除錯 Ansible playbook 最常用的策略是使用以下模組:
除錯和註冊
這兩個模組在 Ansible 中可用。為了除錯,我們需要明智地使用這兩個模組。下面演示了一些示例。
使用詳細程度
使用 Ansible 命令,可以提供詳細程度級別。您可以使用詳細程度級別 1 (-v) 或 2 (-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 將錯誤限定在警告和錯誤中。
廣告