0

我正在尝试使用 chef-solo 来拉私有 git repo。我使用以下步骤来创建我的设置。

  1. 创建必要的数据包来加密私有 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
  1. ssh-wrapper 引用私钥文件

    #!/bin/sh exec ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i "/home/ubuntu/.ssh/id_rsa" "$@"

  2. 使用 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 失败,而在本地机器上执行成功验证守护进程默认不运行,那么如何自动启动呢?

同样,以上所有可能是由于私钥。但是,在比较远程机器上解密的私钥内容时,与本地私钥(未加密的原始密钥)匹配。

如果能深入了解上述行为和潜在的解决方案,那就太好了。

4

0 回答 0