Chef节点属性定义:通过引用其他字段来定义一个字段
Chef node attribute definition: define a field by reference other field
如何通过这种方式定义一个ruby哈希?
default['mgmt']['query'] = {
'default_interval' => {'diff' => 3600, 'snapshot' => 86400 * 7},
'tables' => {
'deb_packages' => default_interval,
'rpm_packages' => default_interval,
...
}
}
编辑:以上代码用于厨师食谱 attributes/default.rb
我正在寻找一种方法来在散列中定义 default_interval 但能够被其他字段引用,以便 default_interval 可以被其他 Chef 方法覆盖,例如环境 json.
这就是为什么我不选择简单地定义一个全局 default_interval var.
的原因
目前,我用下面的定义来表示default_interval
default['mgmt']['query'] = {
'default_interval' => {'diff' => 3600, 'snapshot' => 86400 * 7},
'tables' => {
'deb_packages' => {} # default_interval,
'rpm_packages' => {} # default_interval,
...
}
}
空的{}
可以通过环境json等其他厨师手段覆盖改成{diff: 600, snapshot:86400}
有更好的酷方法吗?
声明node
为
node = Hash.new { |h, k| h[k] = {} }
您的代码将按原样执行,生成您需要的结构。后者在 ruby btw.
中被命名为“hash”
有关Hash#new
接受区块的更多信息。
That is the reason why I do not choose simply define a global default_interval var.
不需要,可以定义一个local变量
default['mgmt']['query'] = {
'default_interval' => (default_interval = {'diff' => 3600, 'snapshot' => 86400 * 7}),
'tables' => {
'deb_packages' => default_interval,
'rpm_packages' => default_interval,
}
}
这种风格在 ruby 中不是很常见,肯定会引起一些人的注意,但它确实符合您的要求。
如何通过这种方式定义一个ruby哈希?
default['mgmt']['query'] = {
'default_interval' => {'diff' => 3600, 'snapshot' => 86400 * 7},
'tables' => {
'deb_packages' => default_interval,
'rpm_packages' => default_interval,
...
}
}
编辑:以上代码用于厨师食谱 attributes/default.rb
我正在寻找一种方法来在散列中定义 default_interval 但能够被其他字段引用,以便 default_interval 可以被其他 Chef 方法覆盖,例如环境 json.
这就是为什么我不选择简单地定义一个全局 default_interval var.
的原因目前,我用下面的定义来表示default_interval
default['mgmt']['query'] = {
'default_interval' => {'diff' => 3600, 'snapshot' => 86400 * 7},
'tables' => {
'deb_packages' => {} # default_interval,
'rpm_packages' => {} # default_interval,
...
}
}
空的{}
可以通过环境json等其他厨师手段覆盖改成{diff: 600, snapshot:86400}
有更好的酷方法吗?
声明node
为
node = Hash.new { |h, k| h[k] = {} }
您的代码将按原样执行,生成您需要的结构。后者在 ruby btw.
中被命名为“hash”有关Hash#new
接受区块的更多信息。
That is the reason why I do not choose simply define a global default_interval var.
不需要,可以定义一个local变量
default['mgmt']['query'] = {
'default_interval' => (default_interval = {'diff' => 3600, 'snapshot' => 86400 * 7}),
'tables' => {
'deb_packages' => default_interval,
'rpm_packages' => default_interval,
}
}
这种风格在 ruby 中不是很常见,肯定会引起一些人的注意,但它确实符合您的要求。