我尝试了什么:
1)将私钥从本地计算机复制到服务器并使用它进行克隆:
- name: clone repo
sudo: yes
git: repo={{ app_repo }} dest={{ app_repo_dir }} accept_hostkey=true key_file={{ssh_key}} version=master force=yes
但它挂了。据我所知,这个问题发生'因为密钥有密码。
2)在 ansible.cfg :
中使用ForwardAgent
[ssh_connection]
ssh_args = -o ForwardAgent=yes
但是对于与服务器的连接,我使用的不是标准的ssh 22
端口。
如何在Ansible中为git clone
任务的密钥设置密码?或者使用Ansible克隆远程存储库的任何其他方法?
P.S。是的,我可以尝试从密钥中删除密码。但安全方面......
答案 0 :(得分:1)
〜/ .ssh / config:
主持人canada.host.xxxx
HostName canada.host.xxxx
港口2233
用户访客
IdentityFile~ / .ssh / id_rsa.special
将私钥从本地计算机复制到服务器并使用它进行克隆:
- name:clone repo sudo:yes git:repo = {{app_repo}} dest = {{app_repo_dir}} accept_hostkey = true key_file = {{ssh_key}}
这是Copy private key from local machine to server并用它克隆:
- name: Put artifact to target
sudo: yes
copy: src="{{ app_repo_dir }}" dest="{{ app_repo_dir }}"
- name: clone repo
sudo: yes
git: repo={{ app_repo }} dest={{ app_repo_dir }} accept_hostkey=true key_file={{ssh_key}} version=master force=yes
PS: 也许你应该使用local_action?
ansible-playbook -vvv会告诉你问题