jjzjj

ruby - 如何检查 Chef 中是否存在文件夹?

这是我的代码:if!::File.exist?("#{node['iis']['home']}\\backup\\BkpB4Chef")windows_batch"BackupIISConfig"docode它总是说文件存在并执行循环。 最佳答案 你应该使用Chefguards这里。守卫指定条件执行,但仍将资源插入资源集合。在您的示例和jtblin答案中,资源永远不会添加到集合中(我稍后会进一步解释)。下面是一些可以帮助您入门的工作代码:windows_batch"BackupIISConfig"docode%Q|#{node['i

ruby - 访问 Chef 库中的节点属性

我想创建一个Chef库:提供一些命名空间函数访问节点的属性该库旨在与外部系统交互并从那里检索一些输入。我需要访问节点属性以允许用户覆盖从外部系统接收的输入:所需的用法(配方)inputs=MyLib.get_inputs图书馆(我现在拥有的)这是受thosedocs的启发.classChef::Recipe::MyLibdefself.get_inputsoverride_inputs=node.fetch(:mylib,Hash.new).fetch(:override_inputs,nil)unlessoverride_inputs.nil?returnoverride_input

ruby - Chef 和 erb 模板。如何使用 bool 代码块

我是Chef、Ruby、RubyDSL和erb的新手。我来自python。在ruby​​erb模板中,我想做这样的事情。ALLOFMYNGINXTEXTALLOFMYREDISTEXT很明显,我遗漏了一些关于正确语法的信息。谢谢 最佳答案 试试这个:nginx_text=redis_text=包裹在中的代码或是一个被评估的陈述。包裹在中的代码是被评估的代码,结果被放入文件中。Harcoded字符串如果是常量则不必包裹在erb标签中,但如果您希望该代码的结果进入您的文件,则Ruby代码必须包裹在erb标签中

ruby - 如何使用 Chef 延迟评估任意变量

我正在编写一个ChefRecipe来安装我们的应用程序代码并执行它。配方需要特别注意此代码最终所在的目录(用于运行模板、设置日志转发等)。因此,该目录本身会出现在不同Recipe的很多地方。我正在尝试获取/定义一个变量,以便我可以通过字符串插值在我的资源block中重新使用它。这非常简单:home=node['etc']['passwd'][node['nodejs']['user']]['dir']示例用法是运行npminstall,同时告诉它在主目录中插入repo下载,如下所示:execute"npminstall"docommand"npminstall#{prefix}#{ap

ruby - 如何在 IDE(如 Eclipse)中开发和调试 Chef 说明书和 Recipe ?

我是ruby​​和Chef的新手。我一直在开发Recipe,提交它们,将它们上传到Chef服务器,然后通过角色更改将它们部署到Chef客户端,然后在客户端上运行“chef-client”。这个过程很慢。我如何使用IDE(在我的例子中是Eclipse)开发Recipe并能够调试(设置断点、观察变量等)并运行它们,而无需将它们上传到Chef服务器,然后使用Chef-客户运行?我将Eclipse3.7Indigo与“动态语言工具包-Ruby开发工具3.0.0.v20110424-7Z--E_EkMYXO4k101442”插件一起使用我正在使用10.xChef代码行开发OpscodeChef说

ruby - Vagrant File Chef 属性

我正在尝试将我的Vagrant文件配置为具有一些Chef属性,但我一定是做错了什么,因为ChefRecipe使用的是默认值而不是我试图设置的属性。这是我的vagrant文件的配置部分:config.vm.provision:chef_solodo|chef|chef.json={:mysql=>{:server_root_password=>'password'},:nodejs=>{:version=>'0.6.14',:dir=>'/usr/local',:npm=>'1.1.13'}}chef.cookbooks_path="config/env/cookbooks"chef.a

ruby - 在 Chef Recipe 中干燥

在ChefRecipe中做一点DRY的最佳方法是什么?IE。只是分解Ruby代码的一小部分,所以我不会一遍又一遍地复制粘贴它。以下当然会失败,因为:NoMethodError:undefinedmethod`connect_root'forChef::Resource::RubyBlock我可能在一个配方中有多个ruby​​_blocks,因为它们做不同的事情并且需要有不同的not_ifblock才能真正幂等。defconnect_root(root_password)m=Mysql.new("localhost","root",root_password)beginyieldmens

ruby - Chef 库或定义?

作为Chef的新手,我需要根据现有Recipe创建库或定义。这些Recipe使用bash资源、rubyblock资源(通知另一个ruby​​block资源延迟时间)、再次通知ruby​​block的模板资源等。最好的方法是什么?库还是定义?我读到如果我使用定义,我将无法通知定义内的资源,这是否意味着我可以通知不同定义文件中的资源?我还读到在图书馆中您不能直接使用资源。如果这是真的,我如何使用我的图书馆中的资源? 最佳答案 所以,这是“主要基于意见”,但无论如何我都会回答。这里有4个不同的选择:定义LWRPHWRP“图书馆”定义只是一

ruby - Chef only_if 属性等于 true

问题:我有一个chef语句,它应该只在属性为“true”时运行。但它每次都会运行。预期行为:当default[:QuickBase_Legacy_Stack][:dotNetFx4_Install]="false"时,不应安装dotnet4。实际行为:无论属性设置为什么,它都会安装dotnet4。我的代码:属性文件:default[:QuickBase_Legacy_Stack][:dotNetFx4_Install]="false"配方文件:windows_package"dotnet4"doonly_ifnode[:QuickBase_Legacy_Stack][:dotNetFx

ruby - to_specs':在 [] 中找不到 Chef (>= 0)(Gem::LoadError)

我正在尝试在我的笔记本电脑上安装chef和knifeec2插件来设置工作站。最初我使用chefomnibus来安装chef-client但安装后我遇到了一些问题,所以快速谷歌搜索让我进入了stackoverflow并且几个线程建议我使用gem安装chef。我在ruby​​2.0.0-p0上运行并安装了chef和knifeec2,但我现在遇到了一个不同的问题。我已经发布了这个问题,请看一下。请帮我解决这个问题/home/jeevan/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/dependency.rb:247: