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.