chef-infra - 在 Chef-Client 运行时更新 Chef 属性
问题描述
怎么了伙计们,我目前正在尝试在厨师客户端运行时更新我的食谱属性之一,在我的食谱中。但是,我不认为我这样做是正确的,而且我不知道这是否可能。这是我正在尝试的:
我的 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"}
在我的 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_block 资源中,下面的代码片段如下所示:
ruby_block 'update jenkins endpoint' do
block do
node.override['jenkins']['master']['endpoint'] = "http://#{node.run_state['jenkinsHost']}:8080"
end
action :run
end
推荐阅读
- dart - 如何从 Dart 中的 ByteData 读取数据(int32、int16 或单字节)
- python - 在 Windows 8 上创建的 pyinstaller exe 在 Windows 7 中不起作用
- angularjs - 单击按钮时正式更新模板选项
- mysql - MySQL 公式将线性刻度转换为对数刻度
- excel - Excel 将公式插入到另一个工作表的单元格引用中
- python - django-filters 与 Django 2.1 的兼容性问题
- regex - 仅当存在另一个元素时如何将元素放入正则表达式
- c# - join 子句中的表达式之一的类型不正确。类型推断失败
- python - 用于分隔 Excel 工作表的多个数据框列表
- algorithm - 有没有一种有效的方法来计算比特流中 1 的密度?