问题:我有一个厨师声明,只有在属性为"true"时才能运行.但它每次都会运行.
预期行为: 当default[:QuickBase_Legacy_Stack][:dotNetFx4_Install] = "false"dotnet4不应安装.
实际行为:无论属性设置为什么,它都会安装dotnet4.
我的代码:
属性文件:
default[:QuickBase_Legacy_Stack][:dotNetFx4_Install] = "false"
Run Code Online (Sandbox Code Playgroud)
食谱文件:
windows_package "dotnet4" do
only_if node[:QuickBase_Legacy_Stack][:dotNetFx4_Install]=='true'
source "#{node[:QuickBase_Legacy_Stack][:dotNetFx4_URL]}"
installer_type :custom
action :install
options "/quiet /log C:\\chef\\installLog4.txt /norestart /skipmsuinstall"
end
Run Code Online (Sandbox Code Playgroud) 我写了一个小LWRP我的app食谱(trim_log),它的工作原理.但是,现在我正在尝试将这个特定的LWRP移动到commons食谱中,这样我的其他食谱也可以使用它.问题是我无法弄清楚如何将trim_log资源/提供者加载到任何烹饪书中,包括我的app食谱.
??? app
? ??? recipes
? ??? default.rb
??? commons
??? providers
? ??? trim_log.rb
??? resources
??? trim_log.rb
Run Code Online (Sandbox Code Playgroud)
我已经trim_log在commons cookbook中定义了提供者/资源.现在我希望trim_log在appcookbook中使用这个提供者/资源.我怎么能在那里提供它?
我正在尝试将一个资源属性的默认值设置为另一个属性的值.
我正在为我正在构建的tomcat cookbook定义一个具有以下定义的资源.我想拥有可以独立设置的"name"和"service_name"属性.如果未设置服务名称,我希望它默认为"name"提供的任何内容.
以下不能像我期望的那样工作:
attribute :name, :kind_of => String, :required => true, :name_attribute => true
attribute :service_name, :kind_of => String, :default => :name
Run Code Online (Sandbox Code Playgroud)
注意第二行末尾的":default =>:name".当我在配方中的新块中引用我的资源时
my_tomcat "install tomcat" do
name "foo_bar"
end
Run Code Online (Sandbox Code Playgroud)
属性值被指定为
name = "foo_bar"
service_name = "name"
Run Code Online (Sandbox Code Playgroud)
这不是我的预期.除非明确设置,否则我希望service_name为"foo_bar".
我试过了
attribute :service_name, :kind_of => String, :default => new_resource.name
attribute :service_name, :kind_of => String, :default => @new_resource.name
Run Code Online (Sandbox Code Playgroud)
但那些不编译.
有没有办法做我想做的事情?
我正在尝试创建一个LWRP,它将调用自身内部定义的资源.我的食谱结构如下:

在机器食谱的提供者,我有一个代码片段如下:
require 'chef/provisioning' # driver for creating machines
require '::File'
def get_environment_json
@@environment_template = JSON.parse(File::read(new_resource.template_path + "environment.json"))
return @@environment_template
end
Run Code Online (Sandbox Code Playgroud)
代码只是尝试读取json文件,我正在使用File :: read.
我一直收到如下错误:
无法加载此类文件 - :: File
有谁知道如何在我的LWRP提供商内部使用File :: read?
我正在为厨师10编写一个LWRP.当该资源在其他配方中运行时,如果某些内容发生了变化,则应将其标记为"updated_by_last_action".但如果没有任何改变.updated_by_last_action应为false.
例如,我有厨师文档http://docs.opscode.com/lwrp_custom_provider.html#updated-by-last-action.该示例将资源模板包装在变量中以测试它是否已更改,然后设置updated_by_last_action状态.所以我的代码看起来应该是这样的
f = file new_resource.filename do
xxx
end
new_resource.updated_by_last_action(f.updated_by_last_action?)
t = template new_resource.templatename do
xxx
end
new_resource.updated_by_last_action(t.updated_by_last_action?)
m mount new_resource.mountpoint do
xxx
end
new_resource.updated_by_last_action(m.updated_by_last_action?)
Run Code Online (Sandbox Code Playgroud)
但是如果一个提供者变得更大并且使用了很多资源,比如模板,文件,目录,mount等等.应该将所有这些资源包装在像示例这样的变量中,以找出资源是否已经更新,以便进一步发送此提供程序已更新的状态.
我想知道是否有一种更简单,更清晰的方式来运行new_resource.updated_by_last_action(true)其他,然后将所有资源包装在变量中.因为如果我在每次厨师运行时将LWRP标记为更新之前放入new_resource.updated_by_last_action(true)内部,这不是最佳选择.actionend
我被困在尝试创建我的第一个lwrp
我创建了一个非常基本的资源+提供者:
resources/rack_site.rb
providers/rack_site.rb
Run Code Online (Sandbox Code Playgroud)
我一直在尝试在同一个食谱的配方中测试'rack_site'资源,但是它失败并且找不到有关资源的错误.我尝试将这两个文件移动到我作为依赖项添加的食谱中,但仍然失败.
将自定义资源用于配方必须做些什么?
在食谱中,我有一个库(client_helper.rb)。在其中定义了一个模块。模块名称为Client_helper。这是模块代码。
module Client_helper
# This module contains helper methods
def network_zone
Chef::Log.debug('network zone called...********')
Chef::Log.debug("inside-::::"+self.class.to_s)
end
end
Chef::Recipe.send(:include, Client_helper)
Run Code Online (Sandbox Code Playgroud)
现在,我有默认食谱。我在直接配方中调用方法network_zone的地方正在工作。
但是,当我在ruby_block(例如Client_helper.network_zone)内调用方法network_zone时,它不起作用。
请找到配方代码。
# Cookbook: client
# Recipe: default
Chef::Resource.send(:include, Sap_splunk_client_helper)
host_network_zone = network_zone # This is working
Log.info("inside-::::"+self.class.to_s)
ruby_block 'parse auto generated templates' do
block do
host_network_zone = Client_helper.network_zone #This is not working
Log.info("inside ruby block-::::"+self.class.to_s)
end
end
Run Code Online (Sandbox Code Playgroud)
我的食谱目录结构-
请帮我。
在着色器方面,我是一个完整的初学者,我正在构建一个项目,我需要在其中使用 Shader Graph。
我想知道是否可以在脸部的每一侧渲染两个不同的东西,例如在正常一侧渲染纹理和法线贴图,在脸部背面渲染没有阴影或灯光的纯黑色。