Я использую chef-server для управления ресурсами, развернутыми на AWS. Но когда мне нужен новый узел, я не люблю ждать более 30 минут, необходимых для полной установки всего, что требуется. Итак, я создал AMI с недавним снимком машины после схождения, что позволяет избежать 95% времени запуска.
Проблема в том, что идентификационные данные машины кэшируются в AMI. Таким образом, у меня получается несколько физических машин, работающих как один и тот же «узел» в chef. Я бы хотел, чтобы новая машина перерегистрировалась на сервере Chef после загрузки.
Есть ли способ стереть информацию о регистрации на шеф-сервере узла перед созданием моментального снимка AMI, чтобы он регистрировался на сервере как новый узел после включения после клонирования AMI? Я знаю, что мне нужно оставить там какой-то набор закрытых ключей, что меня устраивает, но я не уверен, какие именно.
Спасибо!
Вы должны удалить /etc/chef/client.pem
и удалите метод node_name из /etc/chef/client.rb
в вашем шаблоне AMI. Однако оставьте /etc/chef/validation.pem
на месте, чтобы новый сервер мог зарегистрироваться.
Если вы хотите сразу после первой загрузки зарегистрировать узел в chef, попробуйте добавить скрипт в /etc/rc.local
что управляет chef-client
а затем удаляется из /etc/rc.local
.
Для регистрации чистого узла либо запустите chef-client в сценарии с -o, чтобы определить настраиваемый список запуска (и -N, -E, чтобы напоминать режим инициализации ножевой начальной загрузки), либо используйте /etc/chef/first-boot.json
с вашим списком выполнения, например:
{
"run_list": [
"role[base]"
]
}