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}