我有一个Puppet Enterprise Master Server 2018.1.3,它应该通过https从git存储库中通过Code Manager获取代码,其中git服务器的服务器证书由第三方CA签名。
正确配置所有afaik后,我得到以下提示:
> 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
最有可能运行运行Java的jruby(我对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上)。之后,我可以使用wget
访问git-Repo-URL而没有任何证书错误,因此证书已正确安装在OS中,但是即使系统重启后,我仍然会收到相同的错误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
无效?
第二个问题:该证书的正确位置在哪里?
非常感谢
迈克尔
我尝试过:
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
仍然无法正常工作。为什么?
答案 0 :(得分:0)
所以,我让它工作了,但对解决方案不满意。
我在/etc/puppetlabs/puppetserver/logback.xml
上打开了调试日志记录,确认puppet-code
确实在调用r10k
:
2018-08-27T14:54:24.149+02:00 DEBUG [qtp462609859-78] [p.c.core] Invoking shell:
/opt/puppetlabs/bin/r10k deploy --config /opt/puppetlabs/server/data/code-manager/r10k.yaml --verbose warn display --format=json --fetch
2018-08-27T14:54:24.913+02:00 ERROR [qtp462609859-78] [p.c.app] 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
所以我做到了又快又脏的方法:
cd /opt/puppetlabs/puppet/bin/
mv r10k r10k-bin
touch r10k
chmod +x r10k
vi r10k
和
#!/bin/bash
export SSL_CERT_FILE=<new_cert_path>
/opt/puppetlabs/puppet/bin/r10k-bin "$@"
现在可以正常工作了
puppet:~ # puppet-code deploy --dry-run
Dry-run deploying all environments.
Found 5 environments.
但不高兴,有更好的主意吗?