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

我希望第二个任务(“测试 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

相关内容