草庐IT

chef-solo

全部标签

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 - 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 - 让 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

ruby - Chef Recipe 如何检查文件是否存在

我刚开始使用Chef,我想弄清楚如何在执行任何操作之前先检查文件是否存在。我有我当前用例的文件部分,我正在删除生产服务器的登录文件,例如:file'/var/www/html/login.php'doaction:deleteend但是,我希望能够先检查文件是否存在,例如。if(file_exists===true)file'/var/www/html/login.php'doaction:deleteendend 最佳答案 如评论中所述,对于删除操作,if语句是不必要的,因为如果chef没有找到要删除的文件,它将假定它已被删除.否

ruby - 使用 rvm 切换 ruby​​ 会破坏 chef 11.4.4 knife 命令

我有安装了ruby​​1.9.1的chef11.4.4。我想安装berkshelf,但它需要ruby​​1.9.2或更高版本。我用rvm安装了ruby​​2.0.0-p247(最新稳定版)。当我运行knife命令时,我得到...#knifehelp/opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in`to_specs':Couldnotfindchef(>=0)amongst[rake-10.1.0,rvm-1.11.3.8](Gem::LoadError)from/opt/chef/embe

ruby - 如何为 Chef 处理程序安装依赖项?

我正在尝试通过chef_handlerlwrp安装一个chefhandler。此处理程序(chef-handler-email)捆绑在一个gem中。我正在尝试安装gem,然后从如下所示的单个配方中打开处理程序:chef_gem"chef-handler-mail"chef_handler"MailHandler"dosource'chef/handler/mail'arguments:to_address=>"root"action:nothingsupports:exception=>true,:report=>falseend.run_action(:enable)如果gem已经安

ruby - Chef - 在 Recipe 之间共享库

是否可以在另一个Recipe提供者/库中重用Recipe库中的代码?cookbook1/libraries/lib.rb...defvery_useful_checktrueend...cookbook2/libraries(providers?)/foo.rb...myvar=very_useful_check...谢谢 最佳答案 可以使用ChefLibraries.确保函数是通过ruby​​模块在您的命名空间中定义的:moduleFoodefvery_useful_checktrueendendclassChef::Recipe

ruby - Chef - 在其他资源失败时运行资源

我有两个execute资源,名为command_1和command_2。如果command_1失败,我想运行command_2然后重新运行command_1。差不多是这样的:execute'command_1'docommand"ipahost-del#{machine_name}"action:runignore_failuretrueon_failure{notifies:run,'execute['command_2']',:immediately}endexecute'command_2'docommand"ipahost-mod--certificate#{machine_n

ruby - 如何设置对在 Chef 加载 Recipe 时不存在的 Ruby 库的依赖项?

场景:方法1:下载文件,解压它们。提供一个CLI,它还定义了一个Ruby库。秘诀2:利用上述库中的RubyAPI。在recipe1/recipes/default.rb中:..doworknode[:recipe1][:filePath]=".."#pathtofile在recipe2/recipes/default.rb中:requirenode[:recipe1][:filePath]/lib/Library..dowork但是,当加载Recipe时,Chef宣布:[Wed,17Aug201119:32:23+0800]DEBUG:Loadingcookbookapache2'sd

ruby - 使用 Chef Recipe 更新 .bashrc

我正在编写使用chef-solo安装jsk的练习方法,我需要更新.bashrc文件以设置JAVA_HOME和PATH变量。我不知道该怎么做。谁能告诉我该怎么做。我的一些代码是..file"/home/user/.bashrc"doowner"root"#somethinggoeshere....idon'tknowwhat.butiwrite#%{bash-i-c"source/etc/bash/bashrc&&bashrcupdate"}content"JAVA_HOME=/usr/java/jdk1.1.0.05"content"PATH=$PATH:JAVA_HOME/bin"e