На сервере chef, как определить, когда узел полностью загружен - PullRequest
1 голос
/ 03 апреля 2012

Из python я использую нож для запуска сервера.

например,

knife ec2 server create -r "role[nginx_server]" --region ap-southeast-1 -Z ap-southeast-1a -I ami-ae1a5dfc --flavor t1.micro -G nginx -x ubuntu -S sg_development -i  /home/ubuntu/.ec2/sg_development.pem -N webserver1

Затем я буду использовать API-интерфейс chef-server для проверки завершения начальной загрузки, поэтому яЗатем можно использовать boto и другие инструменты для настройки вновь созданного сервера.Псевдокод будет выглядеть так:

cmd = """knife ec2 server create -r "role[nginx_server]...."""
os.system(cmd)
boot = False
while boot==False:
    chefTrigger = getStatusFromChefApi()
    if chefTrigger==True:
       boot=True

continue with code for further proccessing

Мой вопрос: что такое триггер на chef-сервере, который будет указывать, когда узел полностью обработан chef?Обратите внимание, я использовал -N, чтобы назвать сервер и запросить его свойства, но что мне искать?Есть ли бул?А статус?

Спасибо

1 Ответ

4 голосов
/ 03 апреля 2012

TL; DR: вместо этого используйте обработчик отчетов / исключений .

Когда узел успешно завершит chef-client, он сохранит объект узла на Chef Server.Один из атрибутов, автоматически генерируемых ohai при каждом запуске Chef, равен node['ohai_time'], который является отметкой времени эпохи Unix при выполнении ohai (в начале запуска Chef).Узел, который не успешно сохранил себя на сервере, вообще не будет иметь ohai_time.Тем не менее, этот атрибут просто отслеживает время запуска ohai, а не обязательно, когда chef-client сохраняется на сервере (поскольку это может быть от нескольких секунд до минут, в зависимости от того, что делают ваши рецепты). Примечание , если запуск шеф-повара завершается из-за необработанного исключения, он не будет сохранен на сервере по умолчанию.

Более надежный способ получать уведомления о завершении узла - использоватьобработчик отчетов / исключений, который может отправлять сообщения в различные места и API.Для получения дополнительной информации см. вики-страницу .

...