Opsworks厨师12食谱

时间:2016-03-30 21:15:49

标签: deployment chef aws-opsworks devops chef12.0

有没有人试图将Opsworks Chef v11食谱转换为Chef v12?

我在Chef 11上运行多个堆栈并决定开始将其中一些堆栈转换为Chef 12.由于AWS删除了他们的opsworks应用层,例如rails层配方,我们(opsworks用户)现在负责创建deploy用户,git checkout repos进入deploy_to等等。

它具有良好的灵活性,没有更多的命名空间冲突,但我们缺少opsworks免费提供给我们的所有好东西。

想知道是否有人为Chef 12改变食谱并开源?否则,社区是否对这些食谱感兴趣?我很确定我并不孤单。

提前谢谢!

3 个答案:

答案 0 :(得分:3)

opsworks_ruby cookbook on the Supermarket基本上是你需要的一切。它甚至将应用程序放入相同的目录(即/srv/www/app_name/),设置您的database.yml等等。

此配方与其他非OpsWorks配方之间的主要区别在于,这将为您提供OpsWorks配置中的所有内容。您不必自定义配方,只需确保您的应用和图层命名正确 - 它将从那里构建所有内容 - 包括您对database.yml的RDS配置!

主要区别在于OpsWorks中的图层不会“感知Ruby”,所以你不会有Rails-ish或Ruby-ish的字段,而是需要管理其他地方的字段。 ENV vars的加载方式也有所不同。

另外请务必阅读AWS为OpsWorks提供的Chef 12实施。他们在技术上有两个厨师烹饪书,他们的内部和你的。他们包括管理代理是最新的,加载用户(用于ssh),连接监控等等。你将需要管理其余的。

我们要么从他们庞大的食谱中用超市的个人食谱取代东西,要么重写它。例如,老厨师11 opsworks_initial_setup有一些关于调整网络和Linux设置的事情 ​​- 我们重新创建了它。

它也会根据需要使用部署用户,例如:

$ ps -eo user,command USER COMMAND // snip root nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf aws opsworks-agent: master 10820 aws opsworks-agent: keep_alive of master 10820 aws opsworks-agent: statistics of master 10820 aws opsworks-agent: process_command of master 10820 deploy unicorn_rails master --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[0] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[1] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[2] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[3] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf nginx nginx: worker process nginx nginx: worker process

只是流程输出的一个小例子,但root根据需要引导,每个流程都利用自己的用户来限制权限和访问。

答案 1 :(得分:1)

我认为最常见的方法是使用"应用程序"来自超市的食谱:https://supermarket.chef.io/cookbooks/application/versions/4.1.6(也是基于Poise)。注意:使用版本~4 ,他们删除了v5中几乎所有的好功能。

它将创建目录结构,支持不同的部署策略并提供一些事件来挂钩。 请注意:在我看来,Opsworks文档在使用opsworks和chef12&#34;进行部署时是半好的。话题:来自gui的信息(如repo-url等)不在node对象上,而是在应用程序的数据库中。对于调试,查看/var/chef/runs/<run-id>/目录以查看可用的内容非常有用。 显示这个想法的小片段:

app = search("aws_opsworks_app").first
application "#{app['shortname']}" do
  owner 'root'
  group 'root'
  repository app['app_source']['url']
  revision   'master'
  path "/srv/#{app['shortname']}"
end

这将在/srv上创建版本/当前目录结构并检查代码。注意:您可能认为在GUI中指定的ssh-key会以某种方式自动放入适当的位置。它不是,你必须自己照顾它。查看chef11 opsworks cookbook:https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/scm_helper/libraries/git.rb

答案 2 :(得分:0)

我不了解旧的OpsWorks烹饪书籍,但查看https://github.com/poise/application_examples/有关使用普通厨师进行Rails(以及更多)部署的一些示例(也适用于OpsWorks)。