Puppet - API RESTful

Puppet utilise les API RESTful comme canal de communication entre le maître Puppet et les agents Puppet. Voici l'URL de base pour accéder à cette API RESTful.

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

Sécurité de l'API REST

Puppet s'occupe généralement de la sécurité et de la gestion des certificats SSL. Cependant, si l'on souhaite utiliser l'API RESTful en dehors du cluster, il faut gérer le certificat lui-même, en essayant de se connecter à une machine. La politique de sécurité de Puppet peut être configurée via le fichier authconfig restant.

Test de l'API REST

L'utilitaire Curl peut être utilisé comme un utilitaire de base pour rétablir la connectivité API RESTful. Voici un exemple de la façon dont nous pouvons récupérer le catalogue de nœuds à l'aide de la commande curl de l'API REST.

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

Dans l'ensemble de commandes suivant, nous définissons simplement le certificat SSL, qui sera différent selon l'emplacement du répertoire SSL et le nom du nœud utilisé. Par exemple, regardons la commande suivante.

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

Dans la commande ci-dessus, nous envoyons simplement un en-tête spécifiant le ou les formats que nous voulons récupérer et une URL RESTful pour générer un catalogue de brcleprod001 dans l'environnement de production, générera la sortie suivante.

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

Supposons un autre exemple, où nous voulons récupérer le certificat CA du maître Puppet. Il ne nécessite pas d'être authentifié avec son propre certificat SSL signé car c'est quelque chose qui est nécessaire avant d'être authentifié.

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

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

Référence des API partagées Puppet Master et 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

Référence de l'API Puppet Master

Ressources authentifiées (certificat valide et signé requis).

Catalogues

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

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

Liste de révocation de certificat

GET /certificate_revocation_list/ca 

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

Demande de certificat

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

Rapports Soumettre un rapport

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

Node - Faits concernant un nœud spécifique

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

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

Statut - Utilisé pour les tests

GET /{environment}/status/{anything}  

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

Référence de l'API Puppet Agent

Lorsqu'un nouvel agent est configuré sur une machine, par défaut, l'agent Puppet n'écoute pas la requête HTTP. Il doit être activé dans Puppet en ajoutant «listen = true» dans le fichier puppet.conf. Cela permettra aux agents Puppet d'écouter la requête HTTP lors du démarrage de l'agent Puppet.

Les faits

GET /{environment}/facts/{anything}  

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

Run - Provoque la mise à jour du client comme un tour de marionnette ou un coup de pied de marionnette.

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

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