Puppet - API RESTful

Puppet utiliza API RESTful como canal de comunicación entre Puppet master y los agentes Puppet. A continuación se muestra la URL básica para acceder a esta API RESTful.

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

Seguridad de la API REST

Puppet generalmente se encarga de la seguridad y la gestión de certificados SSL. Sin embargo, si uno desea utilizar la API RESTful fuera del clúster, debe administrar el certificado por su cuenta, al intentar conectarse a una máquina. La política de seguridad de Puppet se puede configurar a través del resto del archivo authconfig.

Prueba de API REST

La utilidad Curl se puede utilizar como una utilidad básica para descansar la conectividad API RESTful. A continuación se muestra un ejemplo de cómo podemos recuperar el catálogo del nodo usando el comando curl de la API REST.

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

En el siguiente conjunto de comandos, solo estamos configurando el certificado SSL, que será diferente dependiendo de dónde esté el directorio SSL y el nombre del nodo que se esté utilizando. Por ejemplo, veamos el siguiente comando.

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

En el comando anterior, simplemente enviamos un encabezado especificando el formato o formatos que queremos recuperar y una URL RESTful para generar un catálogo de brcleprod001 en el entorno de producción, generará el siguiente resultado.

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

Asumamos otro ejemplo, donde queremos recuperar el certificado CA de Puppet master. No requiere estar autenticado con su propio certificado SSL firmado, ya que es algo que se requiere antes de ser autenticado.

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

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

Referencia de API compartida de Puppet Master y 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

Referencia de la API de Puppet Master

Recursos autenticados (se requiere certificado válido y firmado).

Catálogos

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

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

Lista de revocación de certificados

GET /certificate_revocation_list/ca 

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

Solicitud de certificado

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

Informes Enviar un informe

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

Nodo: hechos relacionados con un nodo específico

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

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

Estado: utilizado para pruebas

GET /{environment}/status/{anything}  

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

Referencia de la API de Puppet Agent

Cuando se configura un nuevo agente en cualquier máquina, de forma predeterminada, el agente Puppet no escucha la solicitud HTTP. Debe habilitarse en Puppet agregando "listen = true" en el archivo puppet.conf. Esto permitirá a los agentes Puppet escuchar la solicitud HTTP cuando el agente Puppet se esté iniciando.

Hechos

GET /{environment}/facts/{anything}  

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

Run - Hace que el cliente se actualice como un títere o una patada de títere.

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

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