Git 克隆在 Ansible 中挂起

标签 git ssh ansible

我尝试过的:

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

但是它挂了。据我了解,此问题的发生是因为 key 有密码。

2) 在ansible.cfg中使用ForwardAgent:

[ssh_connection]
ssh_args = -o ForwardAgent=yes

但是为了连接到服务器,我使用的不是标准的 ssh 22 端口。

如何在 Ansible 中为 git clone 任务设置 key 密码?或者使用 Ansible 克隆远程存储库的任何其他方法?

附言是的,我可以尝试从 key 中删除密码。但是安全方面...

最佳答案

  1. ~/.ssh/config :

    主机 canada.host.xxxx

    主机名 canada.host.xxxx

    2233端口

    用户 guest

    IdentityFile ~/.ssh/id_rsa.special

  2. 2.

Copy private key from local machine to server and clone with it:

  • 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

附言: 也许你应该使用 local_action

ansible-playbook -vvv 会告诉你问题所在

关于Git 克隆在 Ansible 中挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34822483/

相关文章:

git - 并发 git checkout/add/commit

git - git 存储库中当前分支上的根提交是否有特殊名称(如 HEAD、FETCH_HEAD)?

eclipse - 将 RSA 与 Eclipse 远程系统资源管理器一起使用?

ansible - 如何在 Ansible 中基于循环索引操作/格式化字符串?

ansible - 为什么 Ansible-Tower 会忽略额外的变量?

git:如何创建我当前工作的一个分支,但保留在我原来的分支上

git - 直接写入远程 Git 存储库,而不将对象添加到本地索引/存储库?

ssh - Golang 中的 SCP 示例

python - 嵌套结构连接

Python正则表达式如果单词在行中则不匹配