ตอบได้ - การแก้ไขปัญหา

กลยุทธ์ที่พบบ่อยที่สุดสำหรับการดีบัก 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 มีคุณสมบัติในการเตือนและข้อผิดพลาด