具有私有注册表的Ansible docker_swarm_service

时间:2020-06-03 15:01:35

标签: ansible docker-swarm docker-registry docker-stack

我有一个我想使用的映像,该映像托管在一个私有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创建这些服务的建议,希望图像保留在私有注册表中,并且将来添加到群集中的任何节点都可以进行身份​​验证和下载。

2 个答案:

答案 0 :(得分:0)

答案 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