Учебники

Puppet — RESTful API

Puppet использует RESTful API в качестве канала связи между мастером Puppet и агентами Puppet. Ниже приведен основной URL для доступа к этому RESTful API.

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

REST API Security

Puppet обычно заботится о безопасности и управлении сертификатами SSL. Однако, если кто-то хочет использовать RESTful API вне кластера, необходимо самостоятельно управлять сертификатом при попытке подключения к машине. Политику безопасности для Puppet можно настроить с помощью файла rest authconfig.

Тестирование REST API

Утилита Curl может использоваться как базовая утилита для подключения к RESTful API. Ниже приведен пример того, как мы можем получить каталог узла с помощью команды curl REST API.

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

В следующем наборе команд мы просто устанавливаем сертификат SSL, который будет отличаться в зависимости от того, где находится каталог SSL и от имени используемого узла. Например, давайте посмотрим на следующую команду.

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

В приведенной выше команде мы просто отправляем заголовок, указывающий формат или форматы, которые мы хотим вернуть, и URL-адрес RESTful для создания каталога brcleprod001 в производственной среде сгенерирует следующий вывод.

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

Давайте рассмотрим другой пример, где мы хотим получить сертификат CA от мастера Puppet. Он не требует аутентификации с собственным подписанным SSL-сертификатом, так как это то, что требуется перед аутентификацией.

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

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

Справка по Puppet Master и Agent Shared API

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 

Справочник по Puppet Master API

Аутентифицированные ресурсы (действительный, требуется подписанный сертификат).

Каталоги

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

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

Список отзыва сертификатов

GET /certificate_revocation_list/ca 

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

Запрос сертификата

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 

Отчеты Отправить отчет

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

Узел — Факты, касающиеся конкретного узла

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

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

Статус — используется для тестирования

GET /{environment}/status/{anything}  

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

Справочник по API агента Puppet

Когда новый агент настроен на любом компьютере, по умолчанию агент Puppet не прослушивает HTTP-запрос. Его нужно включить в Puppet, добавив «listen = true» в файл puppet.conf. Это позволит агентам Puppet прослушивать HTTP-запрос при запуске агента Puppet.

факты

GET /{environment}/facts/{anything}  

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

Выполнить — заставляет клиента обновляться как puppetturn или puppet kick.