问题描述
在使用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_path
、ssh_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
- 在
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包装器的路径和内容。记得在进行任何更改前备份你的数据,以免出现意外情况。