【发布时间】:2018-04-09 12:27:05
【问题描述】:
如何使用角色更改说明书中定义的属性值。
用例:
我有一本食谱
mkdir
├── Berksfile
├── LICENSE
├── README.md
├── attributes
│ └── attribute.rb
├── chefignore
├── metadata.rb
├── recipes
│ └── default.rb
├── spec
│ ├── spec_helper.rb
│ └── unit
│ └── recipes
│ └── default_spec.rb
└── test
└── integration
└── default
└── default_test.rb
在 attribute.rb 我有以下内容:
node.override['main']['directory'] = "rolesquestionserverA"
node.default['main']['directory'] = "rolesquestionserverA"
在 recipe/default.rb 我有以下内容
bash 'extract_module' do
code <<-EOH
mkdir -p /tmp/#{node['main']['directory']}
EOH
end
现在在服务器 A 上,我想要一个使用角色问题服务器 A 创建的目录
在服务器 B 上,我想要一个目录 createdrolesquestionserverB"
在 Roles 目录中,我有以下内容:\
name "mkdir"
description "An example Chef role"
run_list "recipe[mkdir]"
override_attributes({
#"starter_name" => "Test ",
"directory" => "rolesquestionserverB"
})
我已将此角色添加到仅用于服务器 B 的配方中,但当它在服务器 B 上运行时,它不会被覆盖,而只是创建一个与说明书中名称相同的目录,而不是角色中的目录 我如何使用角色和属性来控制它?还是有更好的方法来实现这一点??
谢谢
【问题讨论】:
标签: chef-infra chef-recipe cookbook