私はiptablesを管理するためのプレイブックを書いています。 (はい、わかりました。この問題を解決するモジュールがありますしかし、私はカスタムスクリプトを使用することを好みます)。新しいルールをロードしてからUSR1
信号を待ちます。そうでない場合はロールバックします。
したがって、関連するAnsible操作は次のようになります。
- name: Restore iptables
shell: /root/load_iptables_rules.sh
async: 45
poll: 0
- name: Test SSH connection
shell: /root/send_usr1.sh
register: exit_code
until: exit_code.rc == 0
retries: 10
async: 45
poll: 3
2番目のタスク(「SSH接続テスト」)を新しい別のSSH接続で実行したいと思います。これで私のホスト本物新しいSSH接続を受け入れます。それ以外の場合は、Ansibleが自分の要件に合わない既に確立された接続を使用できます。
パイプと非同期に関する内容を読みましたが、操作できません。
答え1
あなたが探しているmeta
モジュールreset_connection
操作;これを行うと、接続が中断され、後続の操作で新しい接続を確立する必要があります。これは次のようになります。
- name: Restore iptables
shell: /root/load_iptables_rules.sh
async: 45
poll: 0
- name: Reset connection
meta: reset_connection
- name: Test SSH connection
shell: /root/send_usr1.sh
register: exit_code
until: exit_code.rc == 0
retries: 10
async: 45
poll: 3