詹金斯docker_login ansible剧本:权限被拒绝

时间:2018-11-28 07:21:40

标签: docker jenkins ansible docker-registry

我想用Jenkins在docker注册表中复制docker容器。

当我执行Ansible剧本时,我得到了:

"msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', error(13, 'Permission denied'))"

我猜想ansible是在用户jenkins下运行的,因为这是link,并且是由于日志文件:

<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: jenkins

由于ansible剧本尝试执行docker_login,因此我了解到用户jenkins需要能够连接到docker。

因此我将jenkins添加到docker用户: enter image description here

我不明白为什么拒绝权限

整个日志詹金斯文件:

TASK [Log into Docker registry] 
************************************************
task path: /var/jenkins_home/workspace/.../build_docker.yml:8
Using module file /usr/lib/python2.7/dist- 
packages/ansible/modules/core/cloud/docker/docker_login.py
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: jenkins
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo ~/.ansible/tmp/ansible-tmp-1543388409.78-179785864196502 `" && echo ansible-tmp-1543388409.78-179785864196502="` echo ~/.ansible/tmp/ansible-tmp-1543388409.78-179785864196502 `" ) && sleep 0'
<127.0.0.1> PUT /tmp/tmpFASoHo TO /var/jenkins_home/.ansible/tmp/ansible-tmp-1543388409.78-179785864196502/docker_login.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /var/jenkins_home/.ansible/tmp/ansible-tmp-1543388409.78-179785864196502/ /var/jenkins_home/.ansible/tmp/ansible-tmp-1543388409.78-179785864196502/docker_login.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /var/jenkins_home/.ansible/tmp/ansible-tmp-1543388409.78-179785864196502/docker_login.py; rm -rf "/var/jenkins_home/.ansible/tmp/ansible-tmp-1543388409.78-179785864196502/" > /dev/null 2>&1 && sleep 0'
fatal: [localhost]: FAILED! => {
"changed": false, 
"failed": true, 
"invocation": {
    "module_args": {
        "api_version": null, 
        "cacert_path": null, 
        "cert_path": null, 
        "config_path": "~/.docker/config.json", 
        "debug": false, 
        "docker_host": null, 
        "email": null, 
        "filter_logger": false, 
        "key_path": null, 
        "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", 
        "reauthorize": false, 
        "registry_url": "https://registry.docker....si", 
        "ssl_version": null, 
        "timeout": null, 
        "tls": null, 
        "tls_hostname": null, 
        "tls_verify": null, 
        "username": "jenkins"
    }, 
    "module_name": "docker_login"
}, 
"msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', error(13, 'Permission denied'))"
}
to retry, use: --limit @/var/jenkins_home/workspace/.../build_docker.retry

完整的剧本

---
- hosts: localhost
  vars:
    git_branch: "{{ GIT_BRANCH|default('development') }}"
  tasks:
  - name: Log into Docker registry
    docker_login:
      registry_url: https://registry.docker.....si
      username: ...
      password: ....

enter image description here

1 个答案:

答案 0 :(得分:0)

如果有人遇到相同的问题,我找到了解决方案,...

我的注册表没有有效的HTTPS证书。因此,您需要添加

{
    "insecure-registries" : [ "https://registry.docker.....si" ]
}

在/etc/docker/daemon.json内部