Ansible - Khắc phục sự cố

Các chiến lược phổ biến nhất để gỡ lỗi sách vở Ansible là sử dụng các mô-đun được cung cấp bên dưới:

Gỡ lỗi và Đăng ký

Đây là hai mô-đun có sẵn trong Ansible. Đối với mục đích gỡ lỗi, chúng ta cần sử dụng hai mô-đun một cách thận trọng. Ví dụ được minh họa dưới đây.

Sử dụng Verbosity

Với lệnh Ansible, người ta có thể cung cấp mức độ chi tiết. Bạn có thể chạy các lệnh với mức chi tiết một (-v) hoặc hai (-vv).

Điểm quan trọng

Trong phần này, chúng ta sẽ đi qua một vài ví dụ để hiểu một vài khái niệm.

Nếu bạn không trích dẫn một đối số bắt đầu bằng một biến. Ví dụ,

vars: 
   age_path: {{vivek.name}}/demo/ 
   
{{vivek.name}}

Điều này sẽ tạo ra một lỗi.

Giải pháp

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

Khi tôi chạy mã này thông qua lệnh Ansible-playbook -i hosts test.yml, tôi nhận được kết quả như hình dưới đây.

Nếu bạn nhìn thấy yaml, chúng tôi đã đăng ký đầu ra của một lệnh vào một biến - myvar và chỉ in đầu ra.

Văn bản được đánh dấu màu vàng, cho chúng ta biết về thuộc tính của biến –myvar có thể được sử dụng để kiểm soát luồng hơn nữa. Bằng cách này, chúng ta có thể tìm hiểu về các thuộc tính được hiển thị của một biến cụ thể. Lệnh gỡ lỗi sau sẽ giúp bạn trong việc này.

$ 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

Các vấn đề chung về Playbook

Trong phần này, chúng ta sẽ tìm hiểu về một số vấn đề chung về playbook. Các vấn đề là -

  • Quoting
  • Indentation

Playbook được viết ở định dạng yaml và hai vấn đề trên là những vấn đề phổ biến nhất trong yaml / playbook.

Yaml không hỗ trợ thụt lề dựa trên tab và hỗ trợ thụt lề dựa trên khoảng trắng, vì vậy bạn cần phải cẩn thận về điều này.

Note - khi bạn đã viết xong yaml, hãy mở trang web này (https://editor.swagger.io/) và sao chép, dán yaml của bạn ở phía bên tay trái để đảm bảo rằng yaml biên dịch đúng cách. Đây chỉ là một mẹo.

Swagger đủ điều kiện cho các lỗi trong cảnh báo cũng như lỗi.