在chef服务器中,如何确定节点何时完全自举

时间:2012-04-03 02:18:53

标签: python chef

从python,我用刀子启动服务器。

e.g。

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

然后我将使用chef-server api检查引导程序何时完成,以便我可以使用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

我的问题是:厨师服务器中的触发器是什么,它将指示节点何时由厨师完全处理?注意,我使用-N命名服务器并将查询其属性,但我该寻找什么?有布尔吗?状态?

由于

1 个答案:

答案 0 :(得分:4)

TL; DR:改为使用report/exception handler

当节点成功运行chef-client后,它会将节点对象保存到Chef服务器。每次Chef运行时由ohai自动生成的属性之一是node['ohai_time'],这是执行ohai时(在Chef运行开始时)的Unix纪元时间戳。未成功保存到服务器的节点将根本没有ohai_time。但是,此属性仅跟踪ohai运行的时间,不一定是chef-client保存到服务器的时间(因为根据您的食谱所做的,这可能是几秒到几分钟)。 注意如果厨师因未处理的异常而退出,则默认情况下不会保存到服务器。

在节点完成时通知的更可靠的方法是使用报告/异常处理程序,该处理程序可以向各种位置和API发送消息。有关详细信息,请参阅wiki page