无法使用 Windows 代理连接到 Enterprise Puppet 服务器
Unable to connect to Enterprise Puppet server using Windows agent
我在 CentOS Linux 7 (Core) 上设置了 Puppet 服务器。
# /opt/puppetlabs/bin/puppetserver --version
puppetserver version: 2016.5.0.11
我已经在 Win Server 2008 R2 Enterprise(64 位)上安装了 Enterprise Puppet 代理。
C:\Users\Administrator>puppet --version
4.8.1
当我尝试连接到 Puppet 服务器时,我只得到以下输出:
C:\Windows\system32>puppet agent --test
Exiting; no certificate found and waitforcert is disabled
在服务器上,如果我检查任何待处理的证书签名请求,我什么也看不到:
# puppet cert --list
我已经验证我能够从我的 Win 代理盒远程登录到端口 8140 上的 Puppet 服务器。
下面还显示了 Puppet 服务 运行 作为本地系统用户。
我的 Puppet 服务器在 /etc/puppetlabs/puppet/puppet.conf
中有以下条目
[main]
certname = gc.abc.com
server = gc.abc.com
user = pe-puppet
group = pe-puppet
environment_timeout = 0
app_management = true
module_groups = base+pe_only
environmentpath = /etc/puppetlabs/code/environments
codedir = /etc/puppetlabs/code
[agent]
graph = true
[master]
node_terminus = classifier
storeconfigs = true
storeconfigs_backend = puppetdb
reports = puppetdb
certname = gc.abc.com
always_cache_features = true
在 Win 代理上,我在主机文件中指定了 Puppet 服务器名称:
xx.yy.zz.zzz puppet-server
在Win代理上,我在C:\ProgramData\PuppetLabs\puppet\etc\puppet.conf文件中也提到了服务器名称
[main]
server=puppet-server
autoflush=true
environment=production
有什么指点吗?
来自 IRC (@binford2k),我得到以下建议:
"Exiting; no certificate found and waitforcert is disabled"表示客户端已经生成了CSR。如果它有一个 CSR,那么它就不会尝试生成另一个。但是,如果 CSR 以某种方式没有到达主服务器,那么主服务器不会知道这件事,代理也不会再试一次,因为它已经有了 CSR。要解决上述问题,请删除代理上的 SSL 目录,然后再次尝试 运行 puppet。
当我按照上述建议删除 SSL 目录 (C:\ProgramData\PuppetLabs\puppet\etc\ssl) 并再次 运行 puppet 命令时,它起作用了。 :)
C:\Windows\system32>puppet agent --test --server=puppet-server
Info: Creating a new SSL key for gc.abc.com
Info: Caching certificate for ca
Info: csr_attributes file loading from C:/ProgramData/PuppetLabs/puppet/etc/csr_
attributes.yaml
Info: Creating a new SSL certificate request for gc.abc.com
Info: Certificate Request fingerprint (SHA256): 99:02:46:D1:A4:32:6F:A5:CE:06:39
:3E:A4:35:D2:88:C1:9A:D1:2E:58:27:B0:ED:24:F9:DC:77:D9
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled
我在 CentOS Linux 7 (Core) 上设置了 Puppet 服务器。
# /opt/puppetlabs/bin/puppetserver --version
puppetserver version: 2016.5.0.11
我已经在 Win Server 2008 R2 Enterprise(64 位)上安装了 Enterprise Puppet 代理。
C:\Users\Administrator>puppet --version
4.8.1
当我尝试连接到 Puppet 服务器时,我只得到以下输出:
C:\Windows\system32>puppet agent --test
Exiting; no certificate found and waitforcert is disabled
在服务器上,如果我检查任何待处理的证书签名请求,我什么也看不到:
# puppet cert --list
我已经验证我能够从我的 Win 代理盒远程登录到端口 8140 上的 Puppet 服务器。
下面还显示了 Puppet 服务 运行 作为本地系统用户。
我的 Puppet 服务器在 /etc/puppetlabs/puppet/puppet.conf
中有以下条目[main]
certname = gc.abc.com
server = gc.abc.com
user = pe-puppet
group = pe-puppet
environment_timeout = 0
app_management = true
module_groups = base+pe_only
environmentpath = /etc/puppetlabs/code/environments
codedir = /etc/puppetlabs/code
[agent]
graph = true
[master]
node_terminus = classifier
storeconfigs = true
storeconfigs_backend = puppetdb
reports = puppetdb
certname = gc.abc.com
always_cache_features = true
在 Win 代理上,我在主机文件中指定了 Puppet 服务器名称:
xx.yy.zz.zzz puppet-server
在Win代理上,我在C:\ProgramData\PuppetLabs\puppet\etc\puppet.conf文件中也提到了服务器名称
[main]
server=puppet-server
autoflush=true
environment=production
有什么指点吗?
来自 IRC (@binford2k),我得到以下建议:
"Exiting; no certificate found and waitforcert is disabled"表示客户端已经生成了CSR。如果它有一个 CSR,那么它就不会尝试生成另一个。但是,如果 CSR 以某种方式没有到达主服务器,那么主服务器不会知道这件事,代理也不会再试一次,因为它已经有了 CSR。要解决上述问题,请删除代理上的 SSL 目录,然后再次尝试 运行 puppet。
当我按照上述建议删除 SSL 目录 (C:\ProgramData\PuppetLabs\puppet\etc\ssl) 并再次 运行 puppet 命令时,它起作用了。 :)
C:\Windows\system32>puppet agent --test --server=puppet-server
Info: Creating a new SSL key for gc.abc.com
Info: Caching certificate for ca
Info: csr_attributes file loading from C:/ProgramData/PuppetLabs/puppet/etc/csr_
attributes.yaml
Info: Creating a new SSL certificate request for gc.abc.com
Info: Certificate Request fingerprint (SHA256): 99:02:46:D1:A4:32:6F:A5:CE:06:39
:3E:A4:35:D2:88:C1:9A:D1:2E:58:27:B0:ED:24:F9:DC:77:D9
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled