在Chef中自定义git克隆的部署密钥和SSH包装器路径

50次阅读
没有评论

问题描述

在使用Chef 12.0.3来管理服务器时遇到了问题。他之前使用的是application cookbook来克隆代码库。但在较新的application cookbook版本中,这个功能已经被移动到了一个名为application_git的新cookbook中。他遇到了以下问题:
1. 需要更改部署密钥的路径。
2. 需要更改SSH包装器的内容。
3. 需要更改SSH包装器的路径。

以下是他尝试过的代码(当前代码):

application 'accounts' do  
  action :deploy  
  path <somepath>  
  owner 'nobody'  
  group 'nogroup'  
  git 'name' do    
    repository <repopath>    
    revision <value>    
    deploy_key deploy_key  
  end
end

然而,他无法确定应该使用ssh_wrapper_pathssh_wrapper还是deploy_key_path来传递路径,所有尝试都失败了。他现在能够获取到密钥和包装器,但位置错误。

解决方案

请注意以下操作可能受版本差异影响,请进行适当的测试和备份。
根据application_git cookbook的README和核心git资源的文档,可以通过以下步骤来解决问题。

更改SSH包装器路径

在Chef中,可以使用ssh_wrapper属性来指定运行SSH与git时使用的包装器脚本路径。以下是如何修改你的代码来更改SSH包装器路径的示例(未经测试):
1. 首先,将你的包装器脚本放在一个你期望的位置,例如/path/to/my/desired/ssh_wrapper.sh
2. 使用cookbook_file资源将包装器脚本复制到目标位置:

cookbook_file '/path/to/my/desired/ssh_wrapper.sh' do  
  source 'my_ssh_wrapper.sh'
end
  1. application 资源中,使用ssh_wrapper属性来指定新的包装器脚本路径:
application 'accounts' do  
  action :deploy  
  path <somepath>  
  owner 'nobody'  
  group 'nogroup'  
  git 'name' do    
    repository <repopath>    
    revision <value>    
    ssh_wrapper '/path/to/my/desired/ssh_wrapper.sh'    
    deploy_key deploy_key  
  end
end

更改部署密钥路径

根据application_git cookbook的文档,可以直接在git资源中使用deploy_key属性来指定部署密钥的路径。以下是如何修改你的代码来更改部署密钥路径的示例(未经测试):
1. 将部署密钥放在你期望的位置。
2. 在application 资源的git块中,使用deploy_key属性来指定部署密钥的路径或直接指定密钥内容:

application 'accounts' do  
  action :deploy  
  path <somepath>  
  owner 'nobody'  
  group 'nogroup'  
  git 'name' do    
    repository <repopath>    
    revision <value>    
    deploy_key '/path/to/your/deploy/key'  # 或者指定密钥内容,根据需要
  end
end

为了避免在cookbook中提交部署密钥,建议使用chef_vault或加密的数据包来管理部署密钥。

通过以上步骤,你可以在Chef中成功更改部署密钥和SSH包装器的路径和内容。记得在进行任何更改前备份你的数据,以免出现意外情况。

正文完