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 sleep
thuộ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.com
trê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à ok
cá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 -vv
cờ 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_for
nhiệm vụ phải register
là một biến
- tác vụ thứ hai tạo ra đầu ra bằng cách sử dụng
debug
dự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_items
vò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
.