特定のTCPポートが開いていることを確認するAnsible wait_forモジュールを使用できます。
この場合、すべてのポートがすでに開いている必要があるため、最小のnoを使用できます。ネットワークの問題をカバーするのに十分な再試行回数:
- 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
デフォルトでは、Ansibleはsleep
毎秒1回チェックします(属性を使用してAnsible 2.3で構成可能)ので、これはポートごとに3回チェックします。
400以上のホストのインベントリに対してプレイブックでこれを実行します-Ansibleは、すべてのホストがmywebserver.com
それらのポートに到達できることを並行してチェックします。
我々は使用ignore_errors: yes
エラーが赤でマークされているが、実行を停止しないように、ここで。
開いたポートはok
出力のアイテムとして報告され、閉じたポートは報告されfailed
ます(この出力を表示するには-vv
フラグをオンにansible-playbook
する必要があります)。
出力の微調整
成功および失敗の場合により具体的な出力が必要な場合、コードはより複雑で、2番目のタスクを追加する必要があります。
wait_for
タスクはregister
変数でなければなりません
- 2番目のタスクは
debug
、成功/失敗条件に基づいて(たとえば、Jinja2 条件式を使用して)出力を生成します
- 次に、これらのタスクを両方ともインクルードファイルに(
with_items
ループなしで)配置し、include
... with_items
を使用してポートごとに1回インクルードファイルを呼び出すメインプレイブックタスクを作成する必要があります。
host: mywebserver.com
。