如何确保新的 ec2_eip 已准备好执行下一个任务?
How can I make sure a new ec2_eip is ready for the next task?
使用ec2_eip关联或取消关联ElasticIP时,新IP需要几秒钟才能可用。但是 wait_for
经常因致命错误 SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh
而失败。我怎样才能避免这个错误?
在我对弹性 IP 的测试中,这似乎运行良好:
- pause: seconds=15
- name: wait for ssh
wait_for: port=22 timeout=600
这感觉像是黑客攻击,但 the docs 说 "Use wait_for and pause to delay further playbook execution until the instance is reachable, if necessary." 所以这是官方黑客攻击。
您可以尝试调整暂停长度,尤其是在 15 秒后您仍然看到错误的情况下。我发现 seconds=5
或 seconds=10
不够长。
wait_for
做很多事情——它可以监视文件,也可以监视端口。在您的情况下,您不是在等待 Web 服务器完成 starting/stopping,而是想知道服务器已启动。
这里有一些隐藏的细微差别-命令是 运行 在 远程 节点上,所以 SSH Error
不是来自 wait_for
内部,它来自 Ansible 本身,因为 Ansible 正在尝试远程连接和 运行 wait_for
。
这是什么意思?需要在服务端运行wait_for
等待节点活跃
- name: wait for server to finish booting
local_action: wait_for port=22 timeout=60 host="{{ inventory_hostname }}"
这个可以看在最后的例子上wait_for
documentation page。尽管如此,它只是隐含的,所以很容易错过。
使用ec2_eip关联或取消关联ElasticIP时,新IP需要几秒钟才能可用。但是 wait_for
经常因致命错误 SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh
而失败。我怎样才能避免这个错误?
在我对弹性 IP 的测试中,这似乎运行良好:
- pause: seconds=15
- name: wait for ssh
wait_for: port=22 timeout=600
这感觉像是黑客攻击,但 the docs 说 "Use wait_for and pause to delay further playbook execution until the instance is reachable, if necessary." 所以这是官方黑客攻击。
您可以尝试调整暂停长度,尤其是在 15 秒后您仍然看到错误的情况下。我发现 seconds=5
或 seconds=10
不够长。
wait_for
做很多事情——它可以监视文件,也可以监视端口。在您的情况下,您不是在等待 Web 服务器完成 starting/stopping,而是想知道服务器已启动。
这里有一些隐藏的细微差别-命令是 运行 在 远程 节点上,所以 SSH Error
不是来自 wait_for
内部,它来自 Ansible 本身,因为 Ansible 正在尝试远程连接和 运行 wait_for
。
这是什么意思?需要在服务端运行wait_for
等待节点活跃
- name: wait for server to finish booting
local_action: wait_for port=22 timeout=60 host="{{ inventory_hostname }}"
这个可以看在最后的例子上wait_for
documentation page。尽管如此,它只是隐含的,所以很容易错过。