Ansible bỏ qua lỗi

Ansible Bo Qua Loi



Trong khi định cấu hình tác vụ trên thiết bị chủ khác, lỗi Ansible là điều thường xảy ra. Chúng đại diện cho các trạng thái hệ thống duy nhất và có thể quan trọng. Mặc dù vậy, có thể có một số lỗi mà chúng tôi muốn tránh để các tác vụ cũng sẽ thực thi và hiển thị đầu ra nếu chúng được thực thi thành công. Trong bài viết này, chúng ta sẽ nói về các lỗi Ansible và cách bỏ qua chúng. Chúng tôi trình bày cụ thể một kỹ thuật để ngăn chặn và bỏ qua lỗi với Ansible.

Trái ngược với việc sửa lỗi, tránh các lỗi đòi hỏi phải tiếp tục thực hiện các tác vụ nhiều như hoạt động trong playbook Ansible không bị ảnh hưởng. Công cụ ansible đưa ra thông báo cảnh báo khi nó không thể hoàn thành một tác vụ hoặc playbook trong khi gỡ lỗi một tác vụ. Có một số nguyên nhân nhưng việc xác định chúng và tìm ra giải pháp là tùy thuộc vào chúng ta. Thật không may, không phải tất cả các lỗi đều có thể sửa được. Bạn có thể chọn bắt đầu bỏ qua lỗi nếu không muốn hoặc nếu không thể giải quyết vấn đề.







Phần lớn những người quản lý kiểm soát trong Ansible sử dụng chiến lược này trong khi kết nối với các máy chủ đích trong các tình huống thế giới thực. Ansible mặc định ngừng hoạt động trên thiết bị đích và tiếp tục hoạt động trên một số máy chủ khác bất cứ khi nào nó trả về kết quả trả về khác 0 từ một câu lệnh hoặc lỗi từ một gói. Mặc dù vậy, có một số tình huống mà bạn có thể muốn hành động khác đi. Một kết quả trả về khác 0 đôi khi biểu thị tiến trình. Thông thường, bạn có thể muốn quá trình xử lý tạm dừng trên một máy chủ để nó dừng trên tất cả các máy chủ.



Các cách bỏ qua lỗi trong Ansible

Trong Ansible, các cách khác nhau được sử dụng để thực hiện các tác vụ playbook nếu nó hiển thị tác vụ không thành công. Sau đây là các cách khác nhau sẽ giúp thực thi tác vụ ngay cả khi Ansible hiển thị lỗi:



1. Sử dụng lệnh Ignore_Errors=True





Ngay cả khi tác vụ tiếp tục không thành công, playbook vẫn tiếp tục thực thi nếu bạn chỉ định lệnh ignore_errors=true ở cuối hoạt động. Mặc dù quan tâm đến việc hoàn thành hoặc thất bại của nhiệm vụ, nó vẫn thực hiện hoạt động tiếp theo. Nếu bằng cách nào đó hoạt động không thành công, nó sẽ chuyển sang hoạt động tiếp theo. Nếu hoạt động thành công, nó sẽ hoàn thành một quy trình sau đó.

2. Sử dụng Chế độ kiểm tra trong Ansible



Sử dụng các biến đặc biệt Boolean, chế độ kiểm tra Ansible, được xác định là True khi Ansible ở trong phương pháp kiểm tra để bỏ qua một tác vụ hoặc bỏ qua các lỗi trên một tác vụ bất cứ khi nào phiên bản phương pháp kiểm tra của Ansible được sử dụng.

3. Sử dụng lệnh Failed=When trong Ansible Playbook

Trong Ansible, chúng ta cũng có thể sử dụng điều kiện fail_when để chỉ định bất kỳ “lỗi” nào được ngụ ý cho mỗi hoạt động. Tương tự như tất cả các câu lệnh có điều kiện của Ansible, danh sách nhiều tiêu chí fail_when được kết hợp với một ẩn. Vì vậy, nhiệm vụ chỉ thất bại nếu tất cả các điều kiện được thỏa mãn.

Điều kiện tiên quyết để bỏ qua các lỗi trong Ansible

Công cụ cấu hình Ansible phải tuân thủ các tiêu chí cần thiết để bao gồm ví dụ cụ thể:

  • Máy chủ chính Ansible hoặc chúng tôi có thể nói máy chủ điều khiển là cần thiết để chúng tôi có thể định cấu hình các lệnh trên thiết bị đích.
  • Chúng tôi cần có máy chủ lưu trữ cục bộ để có thể liên hệ với từng người trong số họ nhằm sử dụng các cách khác nhau để bỏ qua lỗi trong phần mềm Ansible. Chúng tôi sử dụng máy chủ lưu trữ cục bộ trong trường hợp này làm máy chủ từ xa mục tiêu trong suốt thời gian hoạt động.
  • Chúng tôi viết playbook, chạy các lệnh Ansible bỏ qua lỗi và sử dụng thiết bị điều khiển ansible để theo dõi kết quả trên các máy chủ ở xa.

Để giúp người học nắm được nguyên tắc sử dụng lỗi bỏ qua trong playbook Ansible, hãy triển khai ví dụ sau:

Ví dụ: Sử dụng lệnh Ignore_Errors=True

Đây là ví dụ đơn giản nhất sử dụng Ansible để triển khai trong đó chúng tôi đưa một số tác vụ vào playbook và thực thi các tác vụ bằng cách sử dụng lệnh bỏ qua lỗi. Để thực hiện việc này, trước tiên chúng tôi viết đoạn mã sau vào thiết bị đầu cuối Ansible:

[ nguồn gốc @ chủ ansible ] # nano bỏ qua_errors.yml

Sau khi tạo và khởi chạy playbook ign_errors.yml, bây giờ chúng ta bắt đầu nhập các lệnh trong playbook. Đầu tiên, chúng tôi sử dụng tùy chọn “máy chủ lưu trữ”, chuyển các máy chủ được cung cấp dưới dạng “máy chủ cục bộ”. Chúng tôi nhập giá trị 'false' vào đối số 'thu thập dữ kiện' để không thể lấy thêm thông tin về máy chủ lưu trữ cục bộ khi chạy sách giải trí.

Sau đó, chúng tôi bắt đầu liệt kê từng nhiệm vụ mà chúng tôi muốn hoàn thành trong tùy chọn “tác vụ”. Trong tác vụ đầu tiên, chúng tôi hiển thị tài liệu không tồn tại trong thư mục Ansible. Đầu tiên, chúng tôi chuyển tiêu đề của nhiệm vụ mà chúng tôi muốn thực hiện. Sau đó, chúng tôi sử dụng tùy chọn lệnh và lưu trữ tài liệu văn bản không tồn tại và sử dụng “ls” để chúng tôi có thể thực thi lệnh trong tác vụ đầu tiên. Sau tác vụ đầu tiên, chúng tôi sử dụng lệnh ignore_errors=true để nếu tác vụ ở trên câu lệnh bỏ qua bị lỗi, nó sẽ bỏ qua tác vụ và chuyển sang tác vụ tiếp theo và thực hiện nó.

Chúng tôi liệt kê một nhiệm vụ khác được sử dụng. Nếu tác vụ đầu tiên không thành công, công cụ Ansible phải thực hiện tác vụ tiếp theo. Sau đó, chúng tôi sử dụng tham số gỡ lỗi để chạy tác vụ trong playbook.

- máy chủ: localhost
thu thập_sự kiện: SAI
nhiệm vụ:
- name: Liệt kê một cái không tồn tại tài liệu
yêu cầu: ls không tồn tại.txt
bỏ qua_lỗi: ĐÚNG VẬY

- tên: Tiếp tục nhiệm vụ sau khi thất bại
gỡ lỗi:
tin nhắn: 'Tiếp tục nhiệm vụ sau khi thất bại'

Bây giờ, chúng tôi liệt kê đủ các tác vụ để thực thi và kiểm tra lệnh bỏ qua lỗi. Bây giờ, chúng tôi kết thúc playbook và quay lại thiết bị đầu cuối chính. Sau đó, chúng tôi chạy playbook. Đối với điều đó, chúng tôi sử dụng tuyên bố sau:

[ nguồn gốc @ chủ ansible ] # ansible-playbook ign_errors.yml

Sau khi thực hiện lệnh đã nói ở trên, chúng tôi nhận được đầu ra sau. Như bạn thấy, tác vụ đầu tiên liệt kê tệp không tồn tại cho thấy lỗi. Nhưng tác vụ thứ hai được thực thi thành công vì chúng tôi đã bỏ qua tác vụ đầu tiên bằng cách sử dụng ign_error=true trong playbook.

Phần kết luận

Chúng tôi đã tìm hiểu ý nghĩa của lỗi bỏ qua trong Ansible. Chúng tôi đã thảo luận về cách thức hoạt động của nó trong Playbook Ansible. Chúng tôi cũng đã thảo luận về các cách khác nhau để bỏ qua lỗi trong Ansible khi thực hiện các tác vụ. Chúng tôi đã triển khai một ví dụ để mọi khái niệm đều rõ ràng đối với người dùng.