Ansible 不会将凭据添加到 ~/.docker/config.json 尽管成功登录注册表

Ansible doesn't add credentials to ~/.docker/config.json despite succesful login to registry

我无法通过 ansible 登录私人 docker 登录注册表。登录本身是成功的,我可以在注册表容器日志中看到这一点;除了 ansible 在执行登录任务时不会抛出错误。但是在 运行 ansible 角色之后,我无法提取图像。显然 ansible 从不向 docker 的配置文件添加任何凭据。当我从主机手动登录时,一切正常。

有人知道问题出在哪里吗?

版本:Ansible 2.3.2.0,Docker17.12

main.yml 中的 ansible 角色:

---
 # should work but does not - ansible doesn't add credentials to ~/.docker.config.json... have to log manually  
- name: login to private registry
  docker_login:
    registry: "{{ registry_container_url }}"
    username: "{{ registry_user }}"
    password: "{{ registry_password }}"
    reauthorize: yes

剧本只执行这个角色:

---
- hosts: host1
  become: yes
  roles:
    - testrole

日志:

ok: [node02]

TASK [docker-test : login to private registry] *************************************************************************
changed: [node02]

PLAY RECAP ************************************************************************************************************
node02                     : ok=2    changed=1    unreachable=0    failed=0   

好的,我知道了。

become 必须在剧本中设置为 no

如果您需要 运行 作为特权,您还可以将 docker 配置添加到 Root 的主页。即:

/home/root/.docker/config.json