我必须访问一个节点的 IP 地址,该节点pg_client
在名为hc-pg
. 出于测试目的,我使用了一个在运行列表中同时具有role[pg_client]
和的单个节点recipe[hc-pg]
。hc-pg
有一个配方尝试在具有角色的节点上进行搜索pg_client
。以下是配方代码:
ruby_block "searchnode" do
block do
pg_client_nodes = search(:node , "chef_environment:#{node.chef_environment} AND role:pg_client")
end
end
以下是 pg_client.json 文件
{
"name" : "pg_client",
"description" : "Client which connects to postgres server"
}
我正在使用带有流浪司机的测试厨房,以下是 .kitchen.yml
---
driver:
name: vagrant
provisioner:
name: chef_zero
platforms:
- name: precise64
driver:
box: precise64-chef
suites:
- name: default
roles_path: ../../roles
run_list:
- role[pg_client]
- recipe[hc-pg]
attributes:
postgresql:
config:
listen_addresses: "*"
我已经在运行列表中的配方之前提到了这个角色。当我第一次收敛节点时,搜索pg_client
返回 0 节点。当同一个节点第二次收敛时,我确实得到了具有pg_client
角色的节点。所以我的假设是,在新的运行中,在厨师收敛节点之前不会应用角色。这是一个有效的假设吗?那么如何访问具有角色的节点呢?