我正在使用chef资源“deploy_revision”在我的节点上部署python代码。我最初开始这是一个开发环境,但现在慢慢需要扩展,我不确定 - 如果这是一个不错的选择。下面是代码。
data_bag = Chef::EncryptedDataBagItem.load("#{node.chef_environment}", "#{node.chef_environment}")
deploy_revision "/opt/mount/#{node[:application_name]}" do
repo "#{node[:application_repo]}"
user "deployer"
keep_releases 10
action :deploy
migrate false
symlink_before_migrate.clear
create_dirs_before_symlink
purge_before_symlink.clear
symlinks.clear
symlinks {}
notifies :restart, "service[abc]"
end
在节点上每隔30分钟自动厨师运行期间,只要有一个新代码,就会将其拉下来。这很酷但在其他节点中并不那么酷,这些节点不属于开发环境。我有4个环境: 开发 测试 阶段 刺
如果我在git上创建4个远程分支,是否有办法在特定环境中从特定分支进行此部署?有点像,开发节点部署dev远程分支,测试部署测试远程分支等等。这样,我可以在每30分钟发生一次的自动部署上设置一个门。我提到了厨师文档,有这个“deploy_branch”,但我不确定它只是说它与“deploy_revision”相同。 https://docs.chef.io/resource_deploy.html#layout-modifiers
根据厨师文档,有一个属性分支可用。所以添加属性就像我需要的那样?
deploy_revision "/opt/mount/#{node[:application_name]}" do
repo "#{node[:application_repo]}"
user "deployer"
branch "node.chef_environment"
keep_releases 10
action :deploy
migrate false
symlink_before_migrate.clear
create_dirs_before_symlink
purge_before_symlink.clear
symlinks.clear
symlinks {}
notifies :restart, "service[abc]"
end
然后,我遇到了这个错误报告(已关闭):https://tickets.opscode.com/browse/CHEF-5084。它似乎是使用属性“revision”指定分支。那么,我可以将此属性与节点环境一起用作参数吗?喜欢这个
revision "node.chef_environments"
如果你们这些人认为使用厨师进行部署并不是一个好主意。你觉得 - 我应该留意卡皮斯特拉诺?
答案 0 :(得分:0)
我们一直这样做。只需添加:
deploy_revision '/path' do
...
revision node['chef_environment']
...
end
或者在我们的例子中,我们从chef_environment
deploy_revision '/path' do
...
revision node['chef_environment'].match(/develop|staging|production|test/)[0]
...
end
答案 1 :(得分:0)
这就是我的工作方式。
deploy_revision "/opt/mount/#{node[:application_name]}" do
repo "#{node[:application_repo]}"
user "deployer"
revision node.chef_environment
keep_releases 10
action :deploy
migrate false
symlink_before_migrate.clear
create_dirs_before_symlink
purge_before_symlink.clear
symlinks.clear
symlinks {}
notifies :restart, "service[abc]"
end