Puppet - API RESTful
Puppet utilizza le API RESTful come canale di comunicazione tra il master Puppet e gli agenti Puppet. Di seguito è riportato l'URL di base per accedere a questa API RESTful.
https://brcleprod001:8140/{environment}/{resource}/{key}
https://brcleprod001:8139/{environment}/{resource}/{key}
REST API Security
Puppet di solito si occupa della sicurezza e della gestione dei certificati SSL. Tuttavia, se si desidera utilizzare l'API RESTful al di fuori del cluster, è necessario gestire il certificato da soli, quando si tenta di connettersi a una macchina. La politica di sicurezza per Puppet può essere configurata tramite il resto del file authconfig.
Test dell'API REST
L'utilità Curl può essere utilizzata come utilità di base per mantenere la connettività API RESTful. Di seguito è riportato un esempio di come è possibile recuperare il catalogo del nodo utilizzando il comando curl dell'API REST.
curl --cert /etc/puppet/ssl/certs/brcleprod001.pem --key
/etc/puppet/ssl/private_keys/brcleprod001.pem
Nella seguente serie di comandi stiamo solo impostando il certificato SSL, che sarà diverso a seconda di dove si trova la directory SSL e del nome del nodo utilizzato. Ad esempio, diamo un'occhiata al seguente comando.
curl --insecure -H 'Accept: yaml'
https://brcleprod002:8140/production/catalog/brcleprod001
Nel comando precedente, inviamo solo un'intestazione che specifica il formato o i formati che vogliamo indietro e un URL RESTful per generare un catalogo di brcleprod001 nell'ambiente di produzione, genererà il seguente output.
--- &id001 !ruby/object:Puppet::Resource::Catalog
aliases: {}
applying: false
classes: []
...
Supponiamo un altro esempio, in cui vogliamo recuperare il certificato CA da Puppet master. Non richiede di essere autenticato con il proprio certificato SSL firmato poiché è qualcosa che è richiesto prima di essere autenticato.
curl --insecure -H 'Accept: s' https://brcleprod001:8140/production/certificate/ca
-----BEGIN CERTIFICATE-----
MIICHTCCAYagAwIBAgIBATANBgkqhkiG9w0BAQUFADAXMRUwEwYDVQQDDAxwdXBw
Riferimento API condiviso di Puppet Master e agente
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
Riferimento API Puppet Master
Risorse autenticate (certificato valido e firmato richiesto).
Cataloghi
GET /{environment}/catalog/{node certificate name}
curl -k -H "Accept: pson" https://brcelprod001:8140/production/catalog/myclient
Elenco di revoche di certificati
GET /certificate_revocation_list/ca
curl -k -H "Accept: s" https://brcleprod001:8140/production/certificate/ca
Richiesta di certificato
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
Rapporti Invia una segnalazione
PUT /{environment}/report/{node certificate name}
curl -k -X PUT -H "Content-Type: text/yaml" -d "{key:value}" https://brcleprod002:8139/production
Nodo - Fatti riguardanti un nodo specifico
GET /{environment}/node/{node certificate name}
curl -k -H "Accept: yaml" https://brcleprod002:8140/production/node/puppetclient
Stato: utilizzato per il test
GET /{environment}/status/{anything}
curl -k -H "Accept: pson" https://brcleprod002:8140/production/certificate_request/puppetclient
Riferimento API dell'agente Puppet
Quando un nuovo agente viene configurato su qualsiasi macchina, per impostazione predefinita l'agente Puppet non ascolta la richiesta HTTP. Deve essere abilitato in Puppet aggiungendo "listen = true" nel file puppet.conf. Ciò consentirà agli agenti Puppet di ascoltare la richiesta HTTP all'avvio dell'agente Puppet.
Fatti
GET /{environment}/facts/{anything}
curl -k -H "Accept: yaml" https://brcelprod002:8139/production/facts/{anything}
Run - Fa sì che il client si aggiorni come un burattino o un calcio di marionetta.
PUT /{environment}/run/{node certificate name}
curl -k -X PUT -H "Content-Type: text/pson" -d "{}"
https://brcleprod002:8139/production/run/{anything}