xdays

Puppet之API操作

背景

最近在做一个自动部署实例的项目,大致流程是首先调用AWS的API来生成实例,然后用Puppet来部署相关服务。但是由于AWS的EIP是可回收的,也就是说新起的实例可能会被分配到一个之前已经使用过EIP,由于证书名称是根据EIP来的,就会导致有对应的证书名称已经在Puppet上记录了,这样就会导致Puppet这个环节失败。鉴于如此,需要在给实例绑定上EIP之后远程清除下Puppet上对应的证书,这样就用到了Puppet的API操作。

基础

Puppet支持RESTful的API:master端主要涉及catalog,certificate,report, resource, file, node, status,和fact;agent端主要涉及fact和run。关于这些资源的详细操作参考这里

关于API的另一方面就是安全方面,Puppet用一个单独的文件(文件名由rest_authconfig)来配置API的ACL,具体ACL的语法如下:

path [~] {/path/to/resource|regex}
[environment {list of environments}]
[method {list of methods}]
[auth[enthicated] {yes|no|on|off|any ...