Bạn có thể sử dụng mô-đun Wait_for Ansible để kiểm tra một cổng TCP cụ thể đang mở.
Vì trong trường hợp này, tất cả các cổng đã được mở, chúng tôi có thể sử dụng tối thiểu không. của thử lại, chỉ đủ để bao gồm các vấn đề mạng:
- name: Check all port numbers are accessible from current host
wait_for:
host: mywebserver.com
port: "{{ item }}"
state: started # Port should be open
delay: 0 # No wait before first check (sec)
timeout: 3 # Stop checking after timeout (sec)
ignore_errors: yes
with_items:
- 443
- 80
- 80443
Theo mặc định, Ansible sẽ kiểm tra mỗi giây một lần (có thể định cấu hình trong Ansible 2.3 bằng sleepthuộc tính), do đó, điều này sẽ kiểm tra 3 lần trên mỗi cổng.
Chạy phần này trong một cuốn sách với hàng tồn kho hơn 400 máy chủ của bạn - Ansible sẽ kiểm tra song song rằng tất cả các máy chủ có thể tiếp cận mywebserver.comtrên các cổng đó.
- sự song song là tùy thuộc vào các thiết lập dĩa trong của bạn
ansible.cfg.
Chúng tôi sử dụng ignore_errors: yesở đây để bất kỳ lỗi nào được đánh dấu màu đỏ nhưng không dừng thực thi.
Các cổng mở được báo cáo là okcác mục trong đầu ra và các cổng đóng được báo cáo là failed(bạn phải sử dụng -vvcờ trên ansible-playbookđể xem đầu ra này).
Đầu ra tinh chỉnh
Nếu bạn muốn đầu ra cụ thể hơn cho các trường hợp thành công và thất bại, mã phải phức tạp hơn, thêm một nhiệm vụ thứ hai:
wait_fornhiệm vụ phải registerlà một biến
- tác vụ thứ hai tạo ra đầu ra bằng cách sử dụng
debugdựa trên điều kiện thành công / thất bại (ví dụ: sử dụng biểu thức điều kiện Jinja2 )
- sau đó, bạn cần đặt cả hai tác vụ này vào một tệp bao gồm (không có bất kỳ
with_itemsvòng lặp nào ) và viết một tác vụ playbook chính sử dụng include... with_itemsđể gọi tệp bao gồm một lần trên mỗi cổng.
host: mywebserver.com.