Я получил Puppet Enterprise Master Server 2018.1.3, который должен получить код с помощью Code Manager из git-Repository через https, где сертификат сервера git-сервера подписан сторонним центром сертификации.
после того, как все настроено правильно, я получаю следующее:
> puppet-code deploy --dry-run
Dry-run deploying all environments.
Errors while collecting a list of environments to deploy (exit code: 1).
ERROR -> Unable to determine current branches for Git source 'puppet'
(/etc/puppetlabs/code-staging/environments)
Original exception:
The SSL certificate is invalid
при прямом выполнении r10k
выдает похожую ошибку.Это имеет смысл, поскольку я еще нигде не установил сторонний сертификат CA.
, поэтому я подумал, что r10k
, скорее всего, запускает jruby, который запускает java (я не имею никакого представления о ruby), поэтому я будуустановите сертификат в jvm:
keytool -import -file gitCA.cer -alias gitCA -keystore /opt/puppetlabs/server/apps/java/lib/jvm/java/jre/lib/security/cacerts -storepass changeit
, но я все еще получаю ту же ошибку, также после перезагрузки системы, так что все в порядке, r10k
использует не jruby, а ruby, поэтому я установлютакже сертификат в ОС, положить сертификат под /etc/pki/trust/anchors
и называется update-ca-certificates
(на SLES12).После этого я могу получить доступ к git-Repo-URL с помощью wget
без получения какой-либо ошибки сертификата, поэтому сертификат установлен в ОС правильно, но, тем не менее, даже после перезагрузки системы, я получаю ту же ошибку с r10k
.
после долгих раздумий о хранилищах сертификатов и рубине я узнал, что
export SSL_CERT_FILE=<path_to_cert>
исправляет прямой вызов r10k
:
> r10k deploy display --fetch ---
:sources:
- :name: :puppet
:basedir: "/etc/puppetlabs/code/environments"
:remote: https://xxx@git.xxx/git/puppet
:environments:
- develop
- master
- production
- puppet_test
но puppet-code
все еще не работает с тем же сообщением об ошибке.но я подумал, что, очевидно, я сейчас root
и puppet-code
выполняется пользователем pe-puppet
, поэтому я поместил команду экспорта в файл /etc/profile.local
, чтобы он был доступен для всех пользователей.
все еще не работает.даже после перезагрузки системы и удаления /opt/puppetlabs/server/data/puppetserver/r10k/
, созданного пользователем root
при непосредственном вызове r10k
.
первый вопрос: почему r10k
работает, а puppet-code
нет?
второй вопрос: где находится правильное место для этого сертификата?
большое спасибо
Майкл
ОБНОВЛЕНИЕ: 27.AUG.2018
я попробовал это:
sudo -H -u pe-puppet bash -c '/opt/puppetlabs/puppet/bin/r10k deploy display --fetch'
, которая не работала, несмотря на то, что я установил переменную SSL_CERT_FILE
в файле /etc/profile.local
.
, но я заработал, установив переменную в файле /etc/environment
.
, но puppet code
все еще не работает.почему?