厨师自定义属性

用户名

我正在研究自定义厨师食谱,并且default["server"]["apikey"] = nil在一个单独的属性文件(如下所示)中定义了一个名为thats的自定义属性,该属性已在食谱中定义:

#Default Attributes
default["webhooks"]["get_response"] = ""
default["webhooks"]["put_response"] = ""
default["webhooks"]["post_response"] = ""

default["server"]["username"] = "user"
default["server"]["password"] = "123"

default["server"]["apikey"] = nil 

然后在我的食谱中执行以下操作:

webhooks_request "Request an API key from TPP " do
  uri "172.16.28.200/sdk/authorize/"
  post_data (
            { 'Username' => node["server"]["username"], 'Password' => node["server"]["password"]}
        )
  header_data (
              { 'content-type' => 'application/json'}
          )
  expected_response_codes [ 200, 201, 400 ]
  action :post
end

然后ruby_block我接下来用API密钥更新``default [“ server”] [“ apikey”]`属性的值,如下所示:

ruby_block "Extract the API Key" do
  block do
    jsonData = JSON.parse(node["webhooks"]["post_response"])
    jsonData.each do | k, v |
      if k == 'APIKey'
        node.overide["server"]["apikey"] = v
      end
    end
  end
  action :run
end

然后,我可以使用以下方法进行验证:

ruby_block "Print API Key" do
  block do
    print "\nKey = : " + node["server"]["apikey"] + "\n"
  end
  action :run
end

但是,如果我尝试node["server"]["apikey"]在下面的代码块中使用该属性,如下所示:

webhooks_request "Get data from TPP" do
  uri "127.0.0.1/vedsdk/certificates/retrieve?apikey=#{node["server"]["apikey"]}"
  post_data (
                { 'data' => "NsCVcQg4fd"}
        )
  header_data (
              { 'content-type' => 'application/json', 'auth' => node["server"] ["username"]}
              )
  expected_response_codes [ 200, 201, 400, 401 ]
  action :post
end

的值node["server"]["apikey"]}始终为空。有趣的是,尽管该node["server"] ["username"]属性的值可用并且可以按预期工作。

显然,我在这里错过了买东西不能解决的问题:(

滕西拜

将其写为通用答案(这也将避免使其在列表中未得到答案;)

在资源内部时,您可以在聚合时使用惰性属性评估来评估属性值

正确的用法是

resource "name" do
  attribute lazy {"any value #{with interpolation} inside"}
end

常见的错误是在内部插值中使用惰性,因为我们只希望对变量进行延迟求值,并且只有一个。

从设计上讲,惰性意味着评估属性值,它可以包含Ruby代码,也可以根据先前资源完成的操作来计算属性值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章