Puppet - RESTful API

Puppet 使用 RESTful API 作为 Puppet 主机和 Puppet 代理之间的通信渠道。以下是访问此 RESTful API 的基本 URL。

https://brcleprod001:8140/{environment}/{resource}/{key}
https://brcleprod001:8139/{environment}/{resource}/{key}

REST API 安全性

Puppet 通常负责安全性和 SSL 证书管理。但是,如果希望在集群外使用 RESTful API,则在尝试连接到机器时需要自行管理证书。可以通过 rest authconfig 文件配置 Puppet 的安全策略。

测试 REST API

Curl 实用程序可用作 rest RESTful API 连接的基本实用程序。以下是如何使用 REST API curl 命令检索节点目录的示例。

curl --cert /etc/puppet/ssl/certs/brcleprod001.pem --key 
   /etc/puppet/ssl/private_keys/brcleprod001.pem

在下面的命令集中,我们只是设置 SSL 证书,这将根据 SSL 目录的位置和所用节点的名称而有所不同。例如,让我们看看以下命令。

curl --insecure -H 'Accept: yaml' 
https://brcleprod002:8140/production/catalog/brcleprod001 

在上面的命令中,我们只需发送一个标头来指定我们想要返回的格式以及一个用于在生产环境中生成 brcleprod001 目录的 RESTful URL,就会生成以下输出。

--- &id001 !ruby/object:Puppet::Resource::Catalog 
aliases: {} 
applying: false 
classes: [] 
...

让我们再假设一个例子,我们想从 Puppet Master 取回 CA 证书。它不需要使用自己签名的 SSL 证书进行身份验证,因为那是在进行身份验证之前所必需的。

curl --insecure -H 'Accept: s' https://brcleprod001:8140/production/certificate/ca  

-----BEGIN CERTIFICATE----- 
MIICHTCCAYagAwIBAgIBATANBgkqhkiG9w0BAQUFADAXMRUwEwYDVQQDDAxwdXBw

Puppet Master 和 Agent 共享 API 参考

GET /certificate/{ca, other}  

curl -k -H "Accept: s" https://brcelprod001:8140/production/certificate/ca 
curl -k -H "Accept: s" https://brcleprod002:8139/production/certificate/brcleprod002 

Puppet Master API 参考

经过身份验证的资源(需要有效、签名的证书)。

目录

GET /{environment}/catalog/{node certificate name} 

curl -k -H "Accept: pson" https://brcelprod001:8140/production/catalog/myclient

证书吊销列表

GET /certificate_revocation_list/ca 

curl -k -H "Accept: s" https://brcleprod001:8140/production/certificate/ca 

证书请求

GET /{environment}/certificate_requests/{anything} GET 
/{environment}/certificate_request/{node certificate name}  

curl -k -H "Accept: yaml" https://brcelprod001:8140/production/certificate_requests/all 
curl -k -H "Accept: yaml" https://brcleprod001:8140/production/certificate_request/puppetclient 

report 提交报告

PUT /{environment}/report/{节点证书名称}
curl -k -X PUT -H "Content-Type: text/yaml" -d "{key:value}" https://brcleprod002:8139/production

node − 有关特定节点的 Facts

GET /{environment}/node/{节点证书名称}

curl -k -H "Accept: yaml" https://brcleprod002:8140/production/node/puppetclient

status − 用于测试

GET /{environment}/status/{anything}

curl -k -H "Accept: pson" https://brcleprod002:8140/production/certificate_request/puppetclient

Puppet 代理 API 参考

在任何机器上设置新代理时,默认情况下 Puppet 代理不会监听 HTTP 请求。需要在 Puppet 中通过在 puppet.conf 文件中添加"listen=true"来启用它。这将使 Puppet 代理能够在启动时监听 HTTP 请求。

Facts

GET /{environment}/facts/{anything}

curl -k -H "Accept: yaml" https://brcelprod002:8139/production/facts/{anything}

运行 − 使客户端像 puppetturn 或 puppet kick 一样进行更新。

PUT  /{environment}/run/{node certificate name}  

curl -k -X PUT -H "Content-Type: text/pson" -d "{}" 
https://brcleprod002:8139/production/run/{anything}