Мы запускаем пару Puppet Master версии 3.7 (не PE) на инстансах AWS EC2 за Elastic Load Balancer (в основном для обеспечения высокой доступности).
В настоящее время проверка балансировщика нагрузки - это просто TCP-соединение на порт 8140. Но при этом не было обнаружено, что один из экземпляров завис (он все еще принимал начальное TCP-соединение, но ничего не делал с ним).
Я ищу способ отправить содержательный запрос о запрете операций мастеру марионеток и получить обратно результат.
Более конкретные требования:
Есть ли хороший статический путь, который я могу использовать для проверки работоспособности? Пока не нашел.
Что вы можете использовать в качестве проверки, правильно ли работает мастер марионеток, так это настроить какой-то запрос API, например:
curl -k -H "Accept: pson" https://puppetmaster:8140/production/status/no_key
В конце концов, доступ к API не будет доступен по умолчанию, а это означает, что вам придется использовать сертификаты SSL подписанного клиента, чтобы иметь доступ к REST API. Кроме того, у всех сертификатов не будет всех необходимых разрешений.
Это пример того, как выполнить полную компиляцию манифеста:
curl -k -H 'Accept: pson' \
--cert /var/lib/puppet/ssl/certs/node.example.com.pem \
--key /var/lib/puppet/ssl/private_keys/node.example.com.pem \
--cacert /var/lib/puppet/ssl/ca/ca_crt.pem \
https://puppetmaster:8140/production/status/no_key
Не знаю, можно ли интегрировать сертификаты в проверки ELB, но если это не так, возможно, вы можете поиграть с элементами управления доступом REST API и настроить что-то в этих строках в auth.conf:
# Allow ELB to access REST endpoint
path ~ ^/status/no_key$
auth off
allow_ip <ip_of_loadbalancer>
Перезапустите puppetmaster и попробуйте простую проверку:
curl -k -H "Accept: pson" https://puppetmaster:8140/production/status/no_key
Это должно работать. Только будьте осторожны с auth.conf, чтобы не перетянуть себя!
Чтобы увидеть все доступные ключи API, ознакомьтесь с документацией по REST API на сайте PuppetLabs.