Ansible - 特定のタスクに対して新しいSSH接続を強制します。

Ansible - 特定のタスクに対して新しいSSH接続を強制します。

私は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

関連情報