Puppet - API RESTful

A Puppet usa APIs RESTful como canal de comunicação entre o mestre da Puppet e os agentes da Puppet. A seguir está o URL básico para acessar esta API RESTful.

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

Segurança da API REST

A Puppet geralmente cuida da segurança e do gerenciamento de certificados SSL. No entanto, se alguém deseja usar a API RESTful fora do cluster, é necessário gerenciar o certificado por conta própria, ao tentar se conectar a uma máquina. A política de segurança do Puppet pode ser configurada por meio do arquivo authconfig restante.

Testando REST API

O utilitário Curl pode ser usado como um utilitário básico para descansar a conectividade da API RESTful. A seguir está um exemplo de como podemos recuperar o catálogo de nós usando o comando curl da API REST.

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

No seguinte conjunto de comandos estamos apenas configurando o certificado SSL, que será diferente dependendo de onde o diretório SSL está e do nome do nó sendo usado. Por exemplo, vamos examinar o seguinte comando.

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

No comando acima, apenas enviamos um cabeçalho especificando o formato ou formatos que queremos de volta e uma URL RESTful para gerar um catálogo de brcleprod001 no ambiente de produção, irá gerar a seguinte saída.

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

Vamos supor outro exemplo, onde queremos obter o certificado CA de volta do Puppet master. Não requer autenticação com o próprio certificado SSL assinado, uma vez que é necessário antes de ser autenticado.

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

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

Referência da API Puppet Master e Agent Shared

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

Referência da API Puppet Master

Recursos autenticados (certificado válido e assinado necessário).

Catálogos

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

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

Lista de revogação de certificado

GET /certificate_revocation_list/ca 

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

Pedido 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

Relatórios Envie um Relatório

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

Nó - Fatos sobre um nó específico

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

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

Status - usado para teste

GET /{environment}/status/{anything}  

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

Referência da API Puppet Agent

Quando um novo agente é configurado em qualquer máquina, por padrão, o agente Puppet não escuta a solicitação HTTP. Ele precisa ser habilitado no Puppet adicionando “listen = true” no arquivo puppet.conf. Isso permitirá que os agentes Puppet escutem a solicitação HTTP quando o agente Puppet estiver inicializando.

Fatos

GET /{environment}/facts/{anything}  

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

Run - Faz com que o cliente atualize como um fantoche ou chute de marionete.

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

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