Установка имени хоста chef для nodename на / после начальной загрузки

Я делаю тесты atm с Chef, и у меня есть виртуальная машина, которую я клонирую для создания новых узлов. Я делаю самозагрузку с помощью команды ножа и параметра -N, чтобы дать каждому хосту имя узла. Проблема в том, что имя хоста на виртуальной машине не меняется, и, если я пытаюсь запустить другой клиент, происходит сбой, потому что Chef уже зарегистрировал этот узел. Теперь я попытался установить имя хоста в моей основной роли с помощью cookbok имени хоста, но когда я запускаю 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 просто недоступна на узле? Есть ли лучший способ установить имя хоста на имя узла?

2 ответа

Решение

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

Имя узла доступно на узле под управлением chef через node.name сбруя.

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

depends "chef_hostname"

И затем установка имени хоста, как:

hostname node.name
Другие вопросы по тегам