我有一个我想使用的映像,该映像托管在一个私有Docker注册表中,当使用docker cli部署服务时,我会执行以下操作:
docker service create \
--with-registry-auth \
--name my_service \
registry.example.com/acme/my_image:latest
(来自docker docs:create-a-service-using-an-image-on-a-private-registry)
但是,ansible中的docker_swarm_service模块似乎没有提供--with-registry-auth
的任何方式。这意味着我创建的服务无法扩展到群集中的其他节点。
我正在寻找有关如何最好地使用Ansible创建这些服务的建议,希望图像保留在私有注册表中,并且将来添加到群集中的任何节点都可以进行身份验证和下载。
答案 0 :(得分:0)
ansible堆栈模块具有相关标志
https://docs.ansible.com/ansible/latest/modules/docker_stack_module.html#docker-stack-module
答案 1 :(得分:0)
基本上@fishyjoes 的回答是正确的。
再详细一点:
您首先必须通过 ansible 任务登录注册表:
- name: Log into DockerHub
docker_login:
username: "{{ docker_username }}"
password: "{{ docker_secret_pw }}"
https://docs.ansible.com/ansible/2.3/docker_login_module.html
然后在 Docker 堆栈部署任务中使用 with_registry_auth
变量:
- name: Deploy stack
docker_stack:
state: present
name: "{{ docker_stack_name }}"
with_registry_auth: true
compose:
- "~/.tads/stacks/{{ docker_stack_name }}/{{ docker_stack_name }}.yml"
register: stack_deploy