我正在尝试使用 chef-solo 来拉私有 git repo。我使用以下步骤来创建我的设置。
- 创建必要的数据包来加密私有 ssh 密钥
一个。创建加密密钥文件
EDITOR=vim刀solo数据包创建秘密--secret_file=...
湾。删除换行符并复制到剪贴板
选择猫~/.ssh/id_rsa | tr -d '\r\n' > pbcopy
C。编辑文件
> {
> “id”: “<app_name>”,
> “private_key”: <Private key copied from clipboard>
}
d。它正确创建了数据包,我可以查看它
- knife solo data bag show secrets <app_name>
- knife solo data bag show secrets <app_name> --secret-file ~/.chef/encrypted_data_bag_secret
ssh-wrapper 引用私钥文件
#!/bin/sh exec ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i "/home/ubuntu/.ssh/id_rsa" "$@"
使用 git 资源,签出或克隆 repo
git "#{node[:test][:base]}/test" do repository "git@github.test/test.git" reference "master" action :sync destination node[:test][:base] user "#{node[:test][:user]}" group "#{node[:test][:user]}" ssh_wrapper "#{node[:test][:base]}/.ssh/git-ssh-wrapper.sh" end
attributes.rb 文件包含以下内容
default[:test][:base] = "/home/ubuntu"
default[:test][:log_dir] = "/var/log/test"
default[:test][:loglevel] = "info"
default[:test][:user] = "ubuntu"
default[:test][:virtualenv] ="/home/ubuntu/environments/test"
default[:test][:deploy_repo] = "git@github.com:test/test.git"
default[:test][:deploy_branch] = "master"
default[:test][:deploy_dir] = "/srv/test"
最后,当我运行以下命令'knife solo bootstrap ubuntu@'时,我观察到以下情况。
- 代码在运行“同步”操作时被卡住并且永远不会完成。
- 在 AWS 实例上,私钥 id_rsa 正在 .ssh 目录中生成,但是在执行 ssh-add ~/.ssh/id_rsa 时,它会要求输入密码(即使原始 ssh-keygen 命令没有任何密码)
- 在 AWS 实例上,手动执行 git ls remote git@github.com:test 失败,而在本地机器上执行成功验证守护进程默认不运行,那么如何自动启动呢?
同样,以上所有可能是由于私钥。但是,在比较远程机器上解密的私钥内容时,与本地私钥(未加密的原始密钥)匹配。
如果能深入了解上述行为和潜在的解决方案,那就太好了。