Chef infra 在Chef客户端运行时更新Chef属性

Chef infra 在Chef客户端运行时更新Chef属性,chef-infra,chef-recipe,Chef Infra,Chef Recipe,伙计们,我目前正在尝试在chef客户端运行时更新食谱中的一个cookbooks属性。然而,我认为我做得不对,我不知道这是否可能。以下是我正在尝试的: My Attributes/default.rb如下所示: default['jenkins']['master']['host'] = lazy { node.run_state['jenkinsHost'] } default['jenkins']['master']['port'] = 8080 default['jenkins']['m

伙计们,我目前正在尝试在chef客户端运行时更新食谱中的一个cookbooks属性。然而,我认为我做得不对,我不知道这是否可能。以下是我正在尝试的:

My Attributes/default.rb如下所示:

default['jenkins']['master']['host'] = lazy { node.run_state['jenkinsHost'] } 
default['jenkins']['master']['port'] = 8080 
default['jenkins']['master']['endpoint'] = lazy { "http://#{node['master']['host']}:8080"}
在my recipe/default.rb中,我有以下内容:

aws_ssm_parameter_store 'getJenkinsMasterHost' do
    path '/Global/Jenkins/MasterHost'
    return_keys 'jenkinsHost'
    action :get
end

node.run_state[:jenkins_master_endpoint] = "http://#{node.run_state['jenkinsHost']}:8080"
尝试使用从ssm参数存储中下拉的任何内容覆盖默认的['jenkins']['master']['endpoint']属性


请帮忙

我的一位同事帮我做了这件事,并建议我把它放在ruby_块资源中,代码如下:代码片段见下文:

ruby_block 'update jenkins endpoint' do
  block do
    node.override['jenkins']['master']['endpoint'] = "http://#{node.run_state['jenkinsHost']}:8080"
  end
  action :run 
end