Ansible Docker Container - 克隆私人回购

时间:2016-08-03 15:56:26

标签: docker ansible

我正在尝试从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克隆容器中的私人仓库吗?

1 个答案:

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