我正在尝试从Docker容器(使用Ansible)中的BitBucket克隆私有存储库。我只是想尝试让它工作,所以我将我的公钥和私钥复制到容器中。然后我运行以下命令(FWICT这是Ansible命令的简化版本):
docker exec -i web git clone git@bitbucket.org:user/repo.git
我明白了:
Cloning into 'repo'...
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
作为旁注,如果我跑:
docker exec -i -t web git clone git@bitbucket.org:user/repo.git
我收到了一个TTY,系统会提示我输入SSH私钥密码(似乎无法使用Ansible执行此操作),并且会回复克隆。
所以问题是,如何在没有-t
的情况下克隆Docker容器中的私有存储库?或者有人知道如何使用Ansible克隆容器中的私人仓库吗?
答案 0 :(得分:1)
我设法在我的任务中使用SSH代理转发(http://dchua.com/2016/01/15/ssh-agent-forwarding-with-your-docker-container)找到了解决方法,如下所示:
- set_fact:
ssh_auth_sock: "{{ lookup('env','SSH_AUTH_SOCK') }}"
- name: Create container
docker_container:
name: "my_container"
image: "my_image"
ports:
- 80
volumes:
- "{{ playbook_dir }}/www:/var/www"
- "{{ ssh_auth_sock }}:/ssh-agent"
env:
SSH_AUTH_SOCK: /ssh-agent
- name: Add container to inventory
add_host:
name: "web"
ansible_connection: docker
- name: Clone Repository
git:
repo: "git@example.com:user/repo.git"
dest: "/var/www/html"
accept_hostkey: true
delegate_to: "web"