Ansible中的wait_for
和wait_for_connection
都是用于等待目标主机的特定条件满足后再继续执行任务的模块。它们之间的区别如下:
wait_for
模块是在控制节点上等待目标主机上的某个端口或某个文件等条件满足后再继续执行任务。它可以用于等待服务启动、文件生成等场景。
wait_for_connection
是一个特殊的模块,用于等待目标主机上的SSH服务可用,并确保可以成功连接到目标主机。它会等待SSH服务启动、认证通过等条件满足后再继续执行任务。
下面是一个使用wait_for
模块的示例:
- name: Wait for port 8080 to become available
wait_for:
host: 192.168.0.10
port: 8080
timeout: 30
become: no
上面的任务会等待目标主机的IP地址为192.168.0.10的8080端口可用,超时时间为30秒。
下面是一个使用wait_for_connection
模块的示例:
- name: Wait for SSH connection to become available
wait_for_connection:
delay: 10
timeout: 60
上面的任务会等待目标主机的SSH服务可用,并且每10秒尝试一次连接,最多等待60秒。
需要注意的是,wait_for_connection
模块会在Ansible的pre_tasks
中自动添加,无需手动添加。而wait_for
模块需要手动添加到任务中。