Мне нужно получить доступ к 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
. Поэтому я предполагаю, что при новом прогоне роль не применяется до тех пор, пока шеф-повар не сойдет узел. Верно ли это предположение? Как тогда мне получить доступ к узлу с ролью?
pg_client
. Это может быть тот же узел, который инициализируется. - person Vaibhav   schedule 06.03.2014pg_client
иhc-pg
. И я буду предоставлять один узел за другим. Но для целей тестирования я хочу назначить их одному узлу и протестировать свои рецепты. - person Vaibhav   schedule 07.03.2014