Назад | Перейти на главную страницу

установка имени хоста шеф-повара на имя узла при загрузке / после начальной загрузки

Я тестирую банкомат с Chef, и у меня есть виртуальная машина, которую я клонирую для создания новых узлов. Я выполняю загрузку с помощью команды Knife и параметра -N, чтобы дать каждому хосту имя узла. Проблема сложна, потому что имя хоста на виртуальной машине не меняется, и если я пытаюсь запустить другой клиент, это не удается, потому что Chef уже зарегистрировал этот узел. Теперь я попытался установить имя хоста в своем базовая роль с имя хоста повар, но когда я бегу chef-client это дает мне:

---- Begin output of hostname @config[:chef_node_name] ----
STDOUT: 
STDERR: hostname: the specified hostname is invalid
---- End output of hostname @config[:chef_node_name] ----
Ran hostname @config[:chef_node_name] returned 1

Атрибуты базовой роли:

name "base"
description "Base role applied to all nodes"
override_attributes(
  "chef_client" => {
    "init_style" => "upstart",
    "server_url" => "http://chef.ws:4000"
    },
  "set_fqdn" => 
        "@config[:chef_node_name]"
)
run_list(
  "recipe[hostname]",
  "recipe[chef-client::delete_validation]",
  "recipe[chef-client::service]"
)

Есть ли у меня здесь синтаксическая ошибка в set_fqdn или переменная @config просто недоступна на узле? Есть ли лучший способ установить имя хоста для имени узла?

После стольких проб и ошибок я совершенно уверен, что @config и node переменные недоступны в файлах ролей. Мое решение заключалось в том, чтобы переписать поваренную книгу имени хоста, чтобы искать атрибут nodename_as_fqdn и установите его соответственно.

Имя узла доступно на узле, на котором запущен chef, через node.name аксессуар.

Вы можете использовать поваренную книгу chef_hostname, чтобы установить имя хоста для имени узла, поместив это в свой metadata.rb:

depends "chef_hostname"

А затем установите имя хоста, например:

hostname node.name