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.