Puppet - RESTful API

Puppet verwendet RESTful-APIs als Kommunikationskanal zwischen Puppet-Master und Puppet-Agenten. Im Folgenden finden Sie die grundlegende URL für den Zugriff auf diese RESTful-API.

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

REST-API-Sicherheit

Puppet kümmert sich normalerweise um die Sicherheit und die Verwaltung der SSL-Zertifikate. Wenn Sie jedoch die RESTful-API außerhalb des Clusters verwenden möchten, müssen Sie das Zertifikat selbst verwalten, wenn Sie versuchen, eine Verbindung zu einem Computer herzustellen. Die Sicherheitsrichtlinie für Puppet kann über die restliche authconfig-Datei konfiguriert werden.

Testen der REST-API

Das Curl-Dienstprogramm kann als Basisdienstprogramm verwendet werden, um die RESTful-API-Konnektivität wiederherzustellen. Im Folgenden finden Sie ein Beispiel dafür, wie Sie den Knotenkatalog mit dem Befehl REST API curl abrufen können.

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

In den folgenden Befehlen legen wir nur das SSL-Zertifikat fest, das je nach Standort des SSL-Verzeichnisses und dem Namen des verwendeten Knotens unterschiedlich ist. Schauen wir uns zum Beispiel den folgenden Befehl an.

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

Im obigen Befehl senden wir einfach einen Header, der das Format oder die Formate angibt, die wir zurückhaben möchten, und eine RESTful-URL zum Generieren eines Katalogs von brcleprod001 In der Produktionsumgebung wird die folgende Ausgabe generiert.

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

Nehmen wir ein anderes Beispiel an, in dem wir das CA-Zertifikat vom Puppet-Master zurückerhalten möchten. Es muss nicht mit einem eigenen signierten SSL-Zertifikat authentifiziert werden, da dies vor der Authentifizierung erforderlich ist.

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

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

Gemeinsame API-Referenz für Puppet Master und Agent

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-Referenz

Authentifizierte Ressourcen (Gültiges, signiertes Zertifikat erforderlich).

Kataloge

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

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

Sperrliste für Zertifikate

GET /certificate_revocation_list/ca 

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

Zertifikatsanforderung

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

Berichte Senden Sie einen Bericht

PUT /{environment}/report/{node certificate name}  
curl -k -X PUT -H "Content-Type: text/yaml" -d "{key:value}" https://brcleprod002:8139/production

Knoten - Fakten zu einem bestimmten Knoten

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

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

Status - Wird zum Testen verwendet

GET /{environment}/status/{anything}  

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

Puppet Agent API-Referenz

Wenn auf einem Computer ein neuer Agent eingerichtet wird, hört der Puppet-Agent standardmäßig nicht auf HTTP-Anforderungen. Es muss in Puppet aktiviert werden, indem in der Datei puppet.conf "listen = true" hinzugefügt wird. Dadurch können Puppet-Agenten die HTTP-Anforderung abhören, wenn der Puppet-Agent gestartet wird.

Fakten

GET /{environment}/facts/{anything}  

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

Run - Bewirkt, dass der Client wie Puppetturn oder Puppet Kick aktualisiert wird.

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

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