Tay*_*man 5 jenkins ansible docker
我一直在使用 jenkins 来构建 docker 镜像,并且每次都使用最新的标签推送到 docker hub。我写了一个 ansible playbook,它将通过从 docker hub 拉取最新映像来部署 docker 映像。现在问题是 ansible 部署了具有相同标签的先前版本后,新的最新映像还没有被拉取。你能检查一下剧本吗?让我知道我应该更新哪一部分以获得所需的工作。
剧本:
---
- hosts: flask04
tasks:
- name: Pull Flask app image
docker_image:
name: taybur/flaskapp_27032019
tag: latest
state: present
- name: remove flask app container
docker_container:
name: first_flaskapp
image: taybur/flaskapp_27032019
state: absent
- name: Create flask app container
docker_container:
name: first_flaskapp
image: taybur/flaskapp_27032019
ports:
- "5001:5001"
state: started
Run Code Online (Sandbox Code Playgroud)
docker_image如果镜像已经存在,模块将不会自动拉取镜像。您必须使用force: yes参数在每次运行时强制拉动。
此外,docker_container如果图像不存在,可以为您拉取图像。您可以告诉它尝试在每次运行 ( pull: true)上拉取并在需要时重新启动容器。因此,在这种情况下,您可以将一组任务减少为一个:
- name: Create/Update the flask app container if needed
docker_container:
name: first_flaskapp
image: taybur/flaskapp_27032019
pull: true
ports:
- "5001:5001"
state: started
Run Code Online (Sandbox Code Playgroud)
请参阅docker_container和docker_image的模块文档
更进一步:
restart_policy: always如果您需要此功能,则需要使用。pull使用一个变量使参数动态化,您将在命令行上将其用作额外的 var: - name: Create/Update the flask app container if needed
docker_container:
name: first_flaskapp
image: taybur/flaskapp_27032019
pull: "{{ upgrade_flaskapp | default(false) | bool }}"
restart_policy: always
ports:
- "5001:5001"
state: started
Run Code Online (Sandbox Code Playgroud)
现在,如果您正常运行剧本,它将:
如果你运行ansible-playbook -i <inventory> playbook.yml -e upgrade_flaskapp=true它会:
| 归档时间: |
|
| 查看次数: |
2174 次 |
| 最近记录: |