获取 ansible 中 docker 中 certbot 运行的结果

获取 ansible 中 docker 中 certbot 运行的结果

我在跑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,但更难管理故障。

相关内容