Установка имени хоста 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