【发布时间】:2016-08-04 15:20:28
【问题描述】:
我正在使用Vagrant 设置共享开发服务器。我正在尝试使用 Ansible 进行配置(以前使用过 bash 脚本)。我似乎无法正确配置事物,因此 Ansible 可以在配置阶段自动克隆我们的私有 gitlab 存储库。
我们的 Vagrantfile 是
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.synced_folder /my/local/dir/, "/home/vagrant/repos"
config.vm.synced_folder ".", "/vagrant"
config.ssh.forward_agent = true
config.vm.provision "ansible_local" do |ansible|
ansible.playbook = "playbook.yml"
end
end
我们的基本剧本看起来像
---
- hosts: all
sudo: true
tasks:
- name: update apt cache
apt: update_cache=yes
- name: install git
apt: name=git state=present
- name: clone test repo
shell: ssh-keyscan -H our.private.gitlab.server >> ~/.ssh/known_hosts; ssh -T git@our.private.gitlab.server; git clone git@our.private.gitlab.server:me/amazing-repo.git
我有一个ansible.cfg 文件,其中包含以下内容
[ssh_connection]
ssh_args = -o ForwardAgent=yes
我在配置阶段收到以下错误(尽管在主机上使用ssh-add -L 验证代理拥有我的密钥)
权限被拒绝(公钥)。\r\n克隆到 'amazing-repo'...\n权限被拒绝(公钥)。\r\n致命:不能 从远程存储库中读取。\n\n请确保您拥有正确的 访问权限\n并且存储库存在。”
我已经阅读了诸如 this 和 this 之类的文章(以及更多其他文章),但我无法让它发挥作用。
我只希望提供步骤来处理克隆存储库。然后我会将它们同步到我的本地计算机,因此任何提交/推送都将使用我本地存储的 ssh 密钥。
更新
它似乎与this issue 有关,但我目前看不到任何分辨率。
@Lukáš Lalinský 的建议适用于 OSX,但不适用于 Windows。在 Windows 上,配置期间 git clone 步骤失败,但如果我随后 ssh 进入机器,则 ssh 密钥被转发到 VM 并且存在 SSH_AUTH_SOCK。我可以在这个阶段进行克隆,但不能在配置期间进行。
【问题讨论】:
标签: git ssh vagrant ansible ansible-playbook