【发布时间】:2015-04-10 02:47:20
【问题描述】:
我正在使用主厨资源“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 个远程分支,有没有办法从特定环境的特定分支进行部署?例如,开发节点部署开发远程分支,测试部署测试远程分支等等。这样,我可以在每 30 分钟发生一次的自动部署上设置一个门。我参考了厨师文档,有这个“deploy_branch”,但我不确定它只是说它与“deploy_revision”相同。 https://docs.chef.io/resource_deploy.html#layout-modifiers
根据 chef 文档,有一个可用的属性分支。那么添加属性是我需要的吗?
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"
如果你们认为使用 Chef 进行部署不是一个好主意。你认为-我应该注意 Capistrano 吗?
【问题讨论】:
标签: deployment chef-infra chef-recipe