等待远程主机上的端口关闭,然后使用 ansible 恢复

问题描述 投票:0回答:1

我在带有 Ansible 的主机上运行脚本(opnsense install)。 我想等待 ssh 服务变得无法访问(表明 opnsense 已重新启动主机),然后再次变得可用(表明主机已备份)。 第二部分很简单,第一部分不起作用。 这是我尝试过的一件事:

- name: Wait for ssh to stop listening
  wait_for:
    host: '{{ ansible_host }}'
    port: '{{ port_ssh }}'
    connect_timeout: 5
    delay: 10
  delegate_to: localhost
  register: result
  retries: 30
  until: result is failed

等待 ssh stop 停止监听的干净方法是什么,或者确保主机在启动之前已关闭? 我不想手动重新启动,因为 opnsense 安装脚本会在完成后执行此操作。

ansible
1个回答
0
投票

等待 sshd(端口 22)停止。根据您的需要设置超时

        - name: Wait for sshd to stop
          wait_for:
            port: 22
            state: stopped
            timeout: 30

然后,等待sshd重启

        - name: Wait for sshd to start again
          wait_for:
            port: 22
            timeout: 30

将任务放入一个块中。在救援部分显示出了什么问题。


用于测试的完整剧本示例

- hosts: test_23

  tasks:

    - block:

        - name: Wait for sshd to stop
          wait_for:
            port: 22
            state: stopped
            timeout: 30

        - name: Wait for sshd to start again
          wait_for:
            port: 22
            timeout: 30

      rescue:

        - debug:
            msg: |
              {{ ansible_failed_task }}
              {{ ansible_failed_result }}

    - debug:
        msg: Play continues...
© www.soinside.com 2019 - 2024. All rights reserved.