我正在尝试使用ansible和vagrant设置开发环境。现在我被困在克隆bitbucket的git repo。
下面是Vagrantfile和ansible设置以及我尝试过的事情。
在我的Vagrantfile中,我有config.ssh.forward_agent = true
在我的deploy.yml中我有
- name: ensure bitbucket is a known host
lineinfile:
dest: /home/vagrant/.ssh/known_hosts
create: yes
state: present
line: "{{ lookup('pipe', 'ssh-keyscan -p 443 -t rsa altssh.bitbucket.org') }}"
regexp: "^altssh\\.bitbucket\\.org"
sudo_user: "vagrant"
tags: known_hosts
- name: checkout opentest repo
git: >
dest="/home/vagrant/ot/"
repo="ssh://git@altssh.bitbucket.org:443/muhammadammar/opentest/"
version="master"
accept_hostkey=yes
sudo_user: "vagrant"
tags: checkout
上面的第一项任务是将bitbucket的公钥添加到/home/vagrant/.ssh/known_hosts
。
以下是ansible尝试签出回购时的输出
<127.0.0.1> ESTABLISH CONNECTION FOR USER: vagrant
<127.0.0.1> REMOTE_MODULE git dest="/home/vagrant/ot/" repo="ssh:********@altssh.bitbucket.org:443/muhammadammar/opentest/" version=master accept_hostkey=yes
<127.0.0.1> EXEC ssh -C -vvv -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/ammar/.ansible/cp/%h-%r" -o StrictHostKeyChecking=no -o Port=2222 -o IdentityFile="/Users/ammar/.vagrant.d/insecure_private_key" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 127.0.0.1 /bin/sh -c 'sudo -k && sudo -HE -S -p "[sudo via ansible, key=vwkfotuvzzmllxvxptkgehjzdlqygoez] password: " -u vagrant /bin/sh -c '"'"'echo BECOME-SUCCESS-vwkfotuvzzmllxvxptkgehjzdlqygoez; LANG=C LC_CTYPE=C /usr/bin/python'"'"''
failed: [default] => {"cmd": "/usr/bin/git ls-remote 'ssh:********@altssh.bitbucket.org:443/muhammadammar/opentest/' -h refs/heads/master", "failed": true, "rc": 128}
stderr: RSA host key for IP address '131.103.20.174' not in list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
msg: RSA host key for IP address '131.103.20.174' not in list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
FATAL: all hosts have already failed -- aborting
to retry, use: --limit @/Users/ammar/dev.retry
default : ok=1 changed=0 unreachable=0 failed=1
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.
在我的主机上,我已将我的私钥添加到ssh身份验证代理。我可以在主机和流浪盒上使用ssh-add -l
查看私钥标识。
在vagrant box中,我可以使用git clone ssh://git@altssh.bitbucket.org:443/muhammadammar/opentest ot
我不确定是什么问题。任何人都可以帮助解决这个问题。
修改
即使以下内容也不适用于ansible
shell: "git clone ssh://git@altssh.bitbucket.org:443/muhammadammar/opentest/ /home/vagrant/omp/"
答案 0 :(得分:1)
能够在流浪盒上成功运行git clone ...
是不够的。
我看到它的方式,发生了什么:
User=vagrant
)打开与vagrant box的ssh连接并提供身份文件:-o IdentityFile="/Users/ammar/.vagrant.d/insecure_private_key"
/bin/sh -c 'sudo -k && sudo -HE -S -p "[sudo via ansible, key=vwkfotuvzzmllxvxptkgehjzdlqygoez] password: " -u vagrant /bin/sh -c '"'"'echo BECOME-SUCCESS-vwkfotuvzzmllxvxptkgehjzdlqygoez; LANG=C LC_CTYPE=C /usr/bin/python'"'"'
git clone
ssh:********@altssh.bitbucket.org:443/...)
您应该能够这样做, 是吗?
如果没有,那么原因可能很多,例如。
/Users/ammar/.vagrant.d/insecure_private_key
不是用户vagrant
的正确文件。vagrant
不是sudoer。vagrant@vagrant
用户的密钥未在********@altssh.bitbucket.org
在查看上述所有步骤的日志/输出后,您将知道正确的原因。
PS:当您使用同一个用户进行ssh时,使用sudo_user: vagrant
似乎是多余的。我可以想到为什么会这样做的一些原因,但至少在这里它是多余的。
答案 1 :(得分:0)
我遇到了同样的问题。你在使用&#34; sudo:是&#34;在你的脚本?如果是,则root用户需要访问repo,而不是vagrant用户。
将root用户的公钥文件添加到Bitbucket帐户,您应该没问题。
另外,您可以通过普通用户进行结账。
在任何情况下,访问vagrant中的repo的用户的公钥都需要能够访问Bitbucket。