Невозможно найти роль узла в рецепте кулинарной книги шеф-повара.

Мне нужно получить доступ к 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. Поэтому я предполагаю, что при новом прогоне роль не применяется до тех пор, пока шеф-повар не сойдет узел. Верно ли это предположение? Как тогда мне получить доступ к узлу с ролью?


person Vaibhav    schedule 05.03.2014    source источник
comment
Роли не применяются до тех пор, пока после первого запуска Chef не будет успешным.   -  person sethvargo    schedule 05.03.2014
comment
Тогда мой подход действителен? Я хочу использовать роль шеф-повара. Мой вариант использования — получить IP-адрес узла с ролью pg_client. Это может быть тот же узел, который инициализируется.   -  person Vaibhav    schedule 06.03.2014
comment
Я не знаю, что вы имеете в виду. Вы не можете искать примененные роли, пока роли не будут применены.   -  person sethvargo    schedule 06.03.2014
comment
В идеале было бы два узла, по одному для pg_client и hc-pg. И я буду предоставлять один узел за другим. Но для целей тестирования я хочу назначить их одному узлу и протестировать свои рецепты.   -  person Vaibhav    schedule 07.03.2014


Ответы (1)


Обычно узлы не возвращаются в поисковых запросах до первого запуска, поэтому это, вероятно, невозможно.

Чтобы быть на 100% уверенным, вы также можете попробовать использовать ключевое слово roles (во множественном числе вместо единственного) в поисковом запросе:

search(:node , "chef_environment:#{node.chef_environment} AND roles:pg_client")
person makhan    schedule 06.03.2014