我在跑certbot在 docker 容器中。我使用 ansible 通过以下方式启动它docker_compose
。
当容器启动时,certbot 需要一点时间来完成其工作,然后容器退出(结果打印到标准输出和日志中)。
但是当通过 ansible 自动化时,它会启动容器,然后转到下一个任务。所以我不知道这个过程是否成功,我只知道容器已经启动了。
我怎样才能让 ansible 等待它退出,这样我可以通过查询 stdout 或日志来获取结果?
答案1
使用wait_for
模块。
- name: run certbot container
docker_compose:
project_src: path-to-docker-compose
state: present
register: result
- name: wait for certbot container to exit
when: result is success
wait_for:
path: logfile-or-something-created-by-certbot-on-success-or-failure
state: present
timeout: 20
替代方案:在模块内手动运行shell
,但更难管理故障。