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}