遍历 Chef 数组并在 Ohai 查找中使用键
Iterating over a Chef array and using key in Ohai lookup
我正在遍历数组,并希望将键用作查找 Ohai 值的逻辑的一部分。在我的特定情况下,如果从以前的资源触发,我试图 source
每个定义用户的 .bashrc。
Ohai结构:
"etc": {
"passwd": {
"root": {
"dir": "/root",
"gid": 0,
"uid": 0,
"shell": "/bin/bash",
"gecos": "root"
},
...
"foo": {
"dir": "/home/foo",
"gid": 501,
"uid": 501,
"shell": "/bin/bash",
"gecos": ""
},
...
所以当我遍历时,我正在尝试做类似的事情:
node['my_cookbook']['managed_users'].each do |usr|
bash 'reload_shell' do
code "source #{node['etc']['passwd'][usr]['dir']}/.bashrc"
action :nothing
end
end
我也尝试过使用 ['usr']
、[#{usr}]
和 ["usr"]
符号,以及转义引号。
要遍历 ruby 中的哈希并访问您可以执行的密钥:
node['my_cookbook']['managed_users'].each do |usr,props|
bash 'reload_shell' do
code "source #{node['etc']['passwd'][usr]['dir']}/.bashrc"
action :nothing
end
end
如果您不关心键或其下的值,请将相应的变量替换为 _
即在您的情况下:
node['my_cookbook']['managed_users'].each do |usr,_|
bash 'reload_shell' do
code "source #{node['etc']['passwd'][usr]['dir']}/.bashrc"
action :nothing
end
end
如果不这样做,您将获得完整的底层哈希,因此您的 usr
var 是
{
"root": {
"dir": "/root",
"gid": 0,
"uid": 0,
"shell": "/bin/bash",
"gecos": "root"
}
而不只是 "root"。
旁注:采购适用于当前 shell,在 bash 资源中生成 shell,执行命令并关闭 shell。采购文件不会有任何效果(除非 .bash_rc 中有一个复杂的进程在做某事,这不会影响系统或厨师 运行)
我正在遍历数组,并希望将键用作查找 Ohai 值的逻辑的一部分。在我的特定情况下,如果从以前的资源触发,我试图 source
每个定义用户的 .bashrc。
Ohai结构:
"etc": {
"passwd": {
"root": {
"dir": "/root",
"gid": 0,
"uid": 0,
"shell": "/bin/bash",
"gecos": "root"
},
...
"foo": {
"dir": "/home/foo",
"gid": 501,
"uid": 501,
"shell": "/bin/bash",
"gecos": ""
},
...
所以当我遍历时,我正在尝试做类似的事情:
node['my_cookbook']['managed_users'].each do |usr|
bash 'reload_shell' do
code "source #{node['etc']['passwd'][usr]['dir']}/.bashrc"
action :nothing
end
end
我也尝试过使用 ['usr']
、[#{usr}]
和 ["usr"]
符号,以及转义引号。
要遍历 ruby 中的哈希并访问您可以执行的密钥:
node['my_cookbook']['managed_users'].each do |usr,props|
bash 'reload_shell' do
code "source #{node['etc']['passwd'][usr]['dir']}/.bashrc"
action :nothing
end
end
如果您不关心键或其下的值,请将相应的变量替换为 _
即在您的情况下:
node['my_cookbook']['managed_users'].each do |usr,_|
bash 'reload_shell' do
code "source #{node['etc']['passwd'][usr]['dir']}/.bashrc"
action :nothing
end
end
如果不这样做,您将获得完整的底层哈希,因此您的 usr
var 是
{
"root": {
"dir": "/root",
"gid": 0,
"uid": 0,
"shell": "/bin/bash",
"gecos": "root"
}
而不只是 "root"。
旁注:采购适用于当前 shell,在 bash 资源中生成 shell,执行命令并关闭 shell。采购文件不会有任何效果(除非 .bash_rc 中有一个复杂的进程在做某事,这不会影响系统或厨师 运行)