草庐IT

chef_environment

全部标签

ruby-on-rails - Chef 和应用程序部署

如何使用Chef使我的Rails应用程序保持最新?在阅读文档时,我了解了如何使用knifebootstrap从头开始​​设置服务器。但是在这之后是否可以运行另一个任务?之前我使用过capistrano,但现在我们有两个暂存服务器和十个生产服务器,需要在发布新版本的应用程序时更新这些服务器。 最佳答案 最好的办法是查看内置的Deployresource您可能还想查看Applicationcookbook.这有点难理解,但它可以让您部署一个由数据包驱动的应用程序。 关于ruby-on-rai

ruby - 在 Chef 中递归应用所有者/组

我在Chef中有一段ruby​​代码可以递归地创建一些目录#Deployconfigfilesfromfilesunlessinstance[:directories].nil?instance[:directories].eachdo|dir|unlessFile.directory?("#{dir[:source_dir]}")remote_directory"#{dir[:path]}"dosource"#{dir[:source_dir]}"owner"#{config[:owner]}"group"#{config[:group]}"recursivetruenotifies

ruby - Chef - 找到缺失的属性 NilClass

上下文-我们有大量的Chef属性来执行我们的安装,现在已经为每个环境定义和更改了大约3000多个属性。问题-有时ChefRecipe会引用不存在的属性node[:mystuff][:typo].这会导致以下错误:RecipeCompileErrorin/var/chef/cache/cookbooks//recipes/something.rbundefinedmethod'[]'fornil:NilClass这是一个毫无值(value)的错误,因为它没有让我确切知道缺少什么节点/属性。即使使用chef-client-ldebug运行没有帮助。knifecookbooktest没有帮助

ruby - Chef 独奏 : Installing build-essential recipe before postgresql

我正在尝试使用chef-solo在我的服务器上安装postgresql。我通过自己进行引导并在脚本中手动包含build-esential包来完成这项工作。现在我想使用knife-solo来处理Bootstrap,但我在定义执行配方的顺序时遇到了问题。我想在postgresql之前安装build-essential包。这是我正在构建的服务器的json文件{"dbuser":"myuser","dbpass":"mypassword","postgresql":{"password":{"postgres":"mypassword"}},"passenger":{"version":"3.

ruby - Chef/Knife ( ruby )错误 : superclass mismatch for class Edit (TypeError)

我正在使用bundler来处理ruby​​gems依赖项。我需要以编程方式使用bundler的gem。当我尝试以编程方式调用knife时,它的依赖项是在Gemfile中指定的,我遇到了错误。我执行knife如下:Chef::Knife.run["-v"]#invokingknife并返回以下错误:/var/lib/gems/2.0.0/gems/chef-11.6.2/lib/chef/knife/edit.rb:5:in`':superclassmismatchforclassEdit(TypeError)我熟悉RubyonRails3:"superclassmismatchforc

ruby-on-rails - rails 上的 ruby : heroku: Missing `secret_key_base` for 'production' environment

我将key添加到herokuconfigvar中,但我仍然遇到错误。这是正确的方法吗?我忽略了secrets.yml,因为我从其他来源了解到将其公开不是一个好主意。在heroku配置变量中:[key]SECRET_KEY_BASE[value]3280570382948240938在secrets.ymlproduction:secret_key_base:我还做错了什么?此外,如果我将我的key放入heroku的配置变量中,难道其他开发人员也能看到吗?那么,那不还是有点公开吗?我一直想知道这个概念。 最佳答案 你可以使用herok

ruby - Chef 中的动态角色属性

我希望Chef说明书network_interfaces为我的每个节点提供IP地址、网络掩码等的动态值。对我有用的是:db_role.rb(block1):override_attributes("network_interfaces"=>{:device=>'eth0',:address=>'123.123.123.123',})但这不是很动态。我的想法是将ip地址(、网络掩码等)提交到knifebootstrap上的每个节点。节点看起来像这样(block2):{"normal":{"network_interfaces"=>{"device":"eth0","address":"1

ruby-on-rails - "Web console is activated in the test environment"测试应用时

我是Rails的新手。因此,如果这是一个愚蠢的问题,请提前道歉。我已经阅读了MichaelHeartl的书并尝试自己编写一个应用程序。我已经编写了一些基本测试,但是在尝试使用测试应用程序时$bundleexec抽成测试我在终端上收到以下消息WebConsoleisactivatedinthetestenvironment,whichisusuallyamistake.Toensureit'sonlyactivatedindevelopmentmode,moveittothedevelopmentgroupofyourGemfile:gem'web-console',group::dev

ruby-on-rails - 我如何从 environment.rb 或初始化程序中强制 RAILS_ENV=development ?

我们的主机不允许我们修改passenger配置文件(即apache配置或vhosts文件),但我们想在开发模式下运行rails。因此,我们必须在rails在应用程序重新启动时加载的文件之一中指定环境(prod/dev/test)。有人知道怎么做吗?我们尝试了以下但没有成功:#environment.rb(beforeanyothercodeisexecuted)`RAILS_ENV=development`#usingbackticksENV['RAILS_ENV']='development'#assigningtoaconstantRAILS_ENV='development'#a

ruby - 让 Chef Recipe Recipe 只运行一次

所以我使用以下配方:include_recipe"build-essential"node_packages=value_for_platform(["debian","ubuntu"]=>{"default"=>["libssl-dev"]},["amazon","centos","fedora","centos"]=>{"default"=>["openssl-devel"]},"default"=>["libssl-dev"])node_packages.eachdo|node_package|packagenode_packagedoaction:installendendba