Articles of 厨师

运行社区厨师菜谱

我想用这个食谱在AWS上configuration一个邮件服务器: https : //supermarket.chef.io/cookbooks/postfix-dovecot 我已经安装了厨师客户和厨师。 我已经下载了软件包,并用我的个人configuration改变了食谱属性。 我现在需要运行什么? 我试过了:chef-client –local-mode -r“recipe [default]” 运行社区食谱的正确方法是什么? 谢谢。

如何从Opsworks部署钩子获取Amazon用户名/用户ID?

我试图将Capistrano部署脚本转换为OpsWorks食谱。 我做得非常好,除了Slack集成。 它说,在Capistrano脚本 John Doe正在从Master到Production部署FooProject 通过Slack ,提醒团队是否有人在某处进行部署。 目前,我能做的是创build一个deploy/before_migrate.rb来说 将FooProject部署到生产 有没有办法知道调用部署的人的IAM用户ID /用户名? (如果你注意到,我也需要得到部署的分支,但是我会为另一个post保留)。

厨师/stream浪汉 – 厨房不能连接到更新jenkins

Iam与厨师,stream浪者和testing厨房疯狂。 我们有一个定制的jenkins食谱,它适用于没有合作networkingProxys的“普通”客户端,但后面的错误失败。 – create new file /tmp/kitchen/cache/jenkins-cli.jar – update content in file /tmp/kitchen/cache/jenkins-cli.jar from none to 0b49c2 (new content is binary, diff output suppressed) * remote_file[/tmp/kitchen/cache/update-center.json] action create_if_missing [2015-05-11T16:28:32+00:00] ERROR: Error connecting to http://mirrors.jenkins-ci.org/updates/update-center.json, retry 1/5 [2015-05-11T16:30:43+00:00] ERROR: Error connecting to http://mirrors.jenkins-ci.org/updates/update-center.json, retry 2/5 [2015-05-11T16:32:54+00:00] ERROR: Error connecting to http://mirrors.jenkins-ci.org/updates/update-center.json, retry 3/5 [2015-05-11T16:35:06+00:00] ERROR: Error […]

ChefSpec – testinginclude_reciepe时的覆盖率

我正在尝试为我们的一些Cookbook写ChefSpectesting。 其中之一是包括许多其他的食谱,build立一个jenkinsCI环境。 Iam想知道其他人是如何testing包括的recepies。 我的“_spec.rb”在这一刻看起来像这样(例如testing,包括jenkins大师): it 'includes the `jenkins` recipe' do expect(chef_run).to include_recipe('jenkins::master') end 现在覆盖率下降了,因为我没有testing包含的食谱(他们有自己的chefspectesting)。 如果有人有一个例子或好的想法…会很好。 好吧,find一个Issu,看起来这是我的CodeCoverage的“问题” – 在Windows上的IAM: https : //github.com/sethvargo/chefspec/issues/594 在Ubuntu下同样的问题,没有OSXvalidation问题( – :

从模板获得厨师模板path

在我的厨师erb模板中,我想获取模板被复制到的path。 所以它看起来像: MY_PATH=<%= ###HOW DO I GET THE TEMPLATE PATH### %> 有没有办法得到这个?

CHEF可以在不同的数据中心使用不同的数据包

厨师12 organizations和environments的概念。 你将如何逻辑build模不同的数据中心? 例如,如果您有两个数据中心,则有两个环境。 us-datacenter \_ production \_ stage eu-datacenter \_ production \_ stage 每个环境都有需要指向不同数据库的Web服务器 us-prod-web01 => us-prod-db01 eu-prod-web01 => eu-prod-db01 us-stage-web01 => us-stage-db01 eu-stage-web01 => eu-stage-db01 显而易见的答案是创build包含正确数据库的IP地址的嵌套数据包。 $datacenter/$environment/web $datacenter/$environment/database 然而,数据库具有严格的二级层次,没有我能find的“数据中心”的概念。 这最好如何模拟? 我能想到的两种方法。 使用2级数据库 $环境/美网 $环境/我们的数据库 $环境/ EU-网 $环境/ EU数据库 这有很多数据库放在一个目录下的缺点。 即使你使用托pipeCHEF的GUI,这仍然很难滚动数据包。 (8 data centers * 4 environments * 6 types of webservers + 2 […]

厨师:如何修改自动生成的文件

我必须修改自动生成的nginxconfiguration,基于一些条件:现在在配方我包括模板: template "#{node['nginx']['dir']}/sites-available/#{node['fqdn']}" do source 'nginx-site.erb' owner 'root' group node['root_group'] mode '0600' notifies :reload, 'service[nginx]' end 然后在模板中,我通过使用正则expression式更改我更改文件内容: <% node['nginx']['sites'].each do |site| if File::exist?(site['include_path']) %> <% if not node['nginx']['edperl'] %> <%= File::read(site['include_path']) %> <% else %> <%= File::read(site['include_path']).gsub(/(access_log.*?;)/, '\1' + "\n set $pseclvl $seclvl;") %> <% end -%> <% end end %> ` 现在我需要添加另外两个if语句。 如果我这样做,结果文件包含3个相同的网站定义,每个修改不同的if语句。 使用现有文件的最佳方式是什么? […]

为什么厨师食谱不能读取bash环境variables的值?

这是我的shell脚本的内容: export TARGET_ROLE=play vagrant up 我正在使用该脚本来导出环境variables,以便在厨师菜谱中设置一些variables role = ENV['TARGET_ROLE'] Chef::Log.info("Using role #{role}") node.override[:mainapp][:target_role] = role seq = ENV['SEQ'] Chef::Log.info("Using seq #{seq}") node.override[:mainapp][:server_seq] = seq 以下是我在日志中看到的内容: ==> default: [2015-09-14T07:22:35+00:00] DEBUG: Found recipe mainapp_common_env in cookbook mainapp ==> default: [2015-09-14T07:22:35+00:00] INFO: Using role ==> default: [2015-09-14T07:22:35+00:00] INFO: Using seq 我做错了什么?

厨师的最佳做法 – 评估/select一本食谱

显然,关于厨师最好的事情之一是通过食谱重新使用经过validation的组件,特别是通过包装食谱的方法。 但是,你如何select食谱来包装? 一些浪费了我大量时间的例子。 一个食谱,有一个configurationerb硬编码过时,不只是弃用,旗帜。 服务拒绝configuration文件。 注意:据我所知,包装纠正模板erb是不平凡的,除非你克隆和维护整个事情。 检查Ubuntu版本高达9.0.4的食谱似乎没有做任何事情,并指的是过时的/etc/event.d/目录。 烹饪书籍与stream程监督工具(如runit或bluepill)有很大的联系。 如果您的首选工具不在列表中,并且您无法对此进行调整,那也是令人头疼的原因。 迄今为止,我一直倾向于使用supermarket.chef.io食谱,而且大多数都是工作的。 除了我想要的维护服务的食谱外,还有待采纳。 一些想法: 检查最近的github提交/上次更新时间。 但是,如果它正常工作呢? 那么它不应该被更新。 星星。 但是如果这些明星是很久以前发行的,而食谱是最新的呢? 检查没有被closures的github问题。 可能会更好。 提前看食谱和属性。 但是,如果您已经知道目标软件的设置,则效果会更好。 看看贡献者的数量,并评估它是一个快捷方面的项目,还是可能保持不变。 运行它并查看错误的types。 我所select的那些对我来说看起来就像食谱,它们不追踪操作系统或者他们正在pipe理的程序的最近更新,但是没有基于属性的灵活性来允许它。 有没有评价网站? 谷歌search,让我的食物烹饪网站 对不起,我意识到这个问题本质上是广泛的。 但是,如果重复使用是厨师生态系统的目标,那么明智地select最好的社区食谱来包装是最终用户获得成功的关键因素。 除了使用厨师本身的技术技能。 你怎么做呢? 你的启发式是什么? github上的大量me-too食谱让我觉得这不是一个解决的问题。

厨师:我如何增加一个ruby块的Mixlib :: ShellOut的CommandTimout?

我试图在一个基于Chef 11.10.4的客户端的Ubuntu 14.04系统上的厨师食谱中执行数据库数据加载。 我正在做一个ruby块的数据加载,这里是在日志中的错误的相关部分: Mixlib :: ShellOut ::的CommandTimeout 命令在600s后超时: 命令超过允许的执行时间,被TERM信号所杀死。 [2015-10-06T01:24:00 + 00:00]错误:ruby_block [加载数据集](chef-virtuoso :: load line 178)出现错误:Mixlib :: ShellOut :: CommandTimeout:600s后超时: 任何人都知道如何增加一个shell_out!的默认CommandTimeout为3600 shell_out! 在一个ruby块? 这里是从配方的ruby块是失败的: ::Chef::Recipe.send(:include, Chef::Mixin::ShellOut) ruby_block "Load Dataset" do block do shell_out!(DATA_LOAD_COMMAND) end end