ตอบได้ - การแก้ไขปัญหา
กลยุทธ์ที่พบบ่อยที่สุดสำหรับการดีบัก Ansible playbook คือการใช้โมดูลที่ระบุด้านล่าง -
แก้ไขข้อบกพร่องและลงทะเบียน
สองโมดูลนี้เป็นโมดูลที่มีอยู่ใน Ansible เพื่อวัตถุประสงค์ในการดีบักเราจำเป็นต้องใช้ทั้งสองโมดูลอย่างรอบคอบ ตัวอย่างแสดงด้านล่าง
ใช้ Verbosity
ด้วยคำสั่ง Ansible เราสามารถระบุระดับความละเอียดได้ คุณสามารถรันคำสั่งด้วย verbosity ระดับหนึ่ง (-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 โฮสต์ test.yml ฉันจะได้ผลลัพธ์ตามที่แสดงด้านล่าง
หากคุณเห็นมันแกวเราได้ลงทะเบียนผลลัพธ์ของคำสั่งลงในตัวแปร - myvar และพิมพ์ผลลัพธ์
ข้อความที่ทำเครื่องหมายเป็นสีเหลืองบอกเราเกี่ยวกับคุณสมบัติของตัวแปร –myvar ที่สามารถใช้สำหรับการควบคุมการไหลเพิ่มเติม ด้วยวิธีนี้เราสามารถค้นหาคุณสมบัติที่เปิดเผยของตัวแปรเฉพาะได้ คำสั่ง debug ต่อไปนี้ช่วยในเรื่องนี้
$ 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 ประเด็นคือ -
- Quoting
- Indentation
Playbook เขียนในรูปแบบ yaml และสองข้อข้างต้นเป็นปัญหาที่พบบ่อยที่สุดใน yaml / playbook
Yaml ไม่สนับสนุนการเยื้องตามแท็บและสนับสนุนการเยื้องตามช่องว่างดังนั้นจึงต้องระวังเรื่องเดียวกัน
Note - เมื่อคุณเขียนมันแกวเสร็จแล้วให้เปิดไซต์นี้ (https://editor.swagger.io/) และคัดลอกวางมันเทศของคุณทางด้านซ้ายมือเพื่อให้แน่ใจว่ามันเทศรวบรวมอย่างถูกต้อง นี่เป็นเพียงเกร็ด
Swagger มีคุณสมบัติในการเตือนและข้อผิดพลาด