(sorry if I have a lot of configs, just wanted to make sure all the 
relevant bits were included)

tldr; The problem is some of the nodes will not communicate with one of the 
smart-proxy puppet masters (non-alpha ones) because of cert errors. 

This might be a puppet issue but I'm not entirely sure. First let me 
explain the setup. I have a Foreman server setup as the "alpha" puppet 
master. Then I have 2 other puppet masters that use the alpha as the 
ca_server and run smart-proxy-puppet. I've several "nodes". Some under 
alpha-master and some under each of the other proxy puppet masters.

* george-dev = alpha-puppet master (foreman and ca_server)
* construction-dev = puppet master smart-proxy
* grill-dev = puppet master smart-proxy
* h8-dev = node calling grill-dev as it's puppet master

For each puppet master smart-proxy I created certs on the alpha-master 
(george) and located them on the host before foreman-installer was run. 
Here are the files/names placed onto grill-dev.
/etc/puppetlabs/puppet/ssl/certs/ca.pem
/etc/puppetlabs/puppet/ssl/certs/grill-dev.ourdomain.com.pem
/etc/puppetlabs/puppet/ssl/private_keys/grill-dev.ourdomain.com.pem
/etc/puppetlabs/puppet/ssl/public_keys/grill-dev.ourdomain.com.pem
/etc/puppetlabs/puppet/ssl/certs/george-dev.ourdomain.com.pem
/etc/puppetlabs/puppet/ssl/private_keys/george-dev.ourdomain.com.pem
/etc/puppetlabs/puppet/ssl/public_keys/george-dev.ourdomain.com.pem


Here is a sample puppet.conf on one of the smart-proxy puppet masters 
(grill-dev)

## Module:           'puppet'

[main]
    # Where Puppet's general dynamic and/or growing data is kept
    vardir = /opt/puppetlabs/puppet/cache

    # The Puppet log directory.
    # The default value is '$vardir/log'.
    logdir = /var/log/puppetlabs/puppet

    # Where Puppet PID files are kept.
    # The default value is '$vardir/run'.
    rundir = /var/run/puppetlabs

    # Where SSL certificates are kept.
    # The default value is '$confdir/ssl'.
    ssldir = /etc/puppetlabs/puppet/ssl

    # Allow services in the 'puppet' group to access key (Foreman + proxy)
    privatekeydir = $ssldir/private_keys { group = service }
    hostprivkey = $privatekeydir/$certname.pem { mode = 640 }

    show_diff     = false

## Server config

    reports          = foreman

    environmentpath  = /etc/puppetlabs/code/environments
      basemodulepath   = 
/etc/puppetlabs/code/environments/common:/etc/puppetlabs/code/modules:/opt/puppetlabs/puppet/modules

    hiera_config     = $confdir/hiera.yaml
### Next part of the file is managed by a different template ###
## Module:           'puppet'

[agent]
    # The file in which puppetd stores a list of the classes
    # associated with the retrieved configuration.  Can be loaded in
    # the separate ``puppet`` executable using the ``--loadclasses``
    # option.
    # The default value is '$statedir/classes.txt'.
    classfile = $statedir/classes.txt

    # Where puppetd caches the local configuration.  An
    # extension indicating the cache format is added automatically.
    # The default value is '$confdir/localconfig'.
    localconfig = $vardir/localconfig

    # Disable the default schedules as they cause continual skipped
    # resources to be displayed in Foreman - only for Puppet >= 3.4
    default_schedules = false

    report            = true
    pluginsync        = true
    masterport        = 8140
    environment       = production
    certname          = grill-dev.ourdomain.com
    server            = george-dev.ourdomain.com
    listen            = false
    splay             = false
    splaylimit        = 1800
    runinterval       = 1800
    noop              = false
    usecacheonfailure = true
### Next part of the file is managed by a different template ###
## Module:           'puppet'

[master]
    autosign       = /etc/puppetlabs/puppet/autosign.conf { mode = 0664 }
    external_nodes = /etc/puppetlabs/puppet/node.rb
    node_terminus  = exec
    ca             = false
    ssldir         = /etc/puppetlabs/puppet/ssl
    certname       = grill-dev.ourdomain.com
    parser         = current
    strict_variables = false




The problem is some of the nodes will not communicate with one of the 
smart-proxy puppet masters (non-alpha ones) because of cert errors. Here is 
a example error.

[root@h8-dev puppet]# puppet agent --test
Warning: Unable to fetch my node definition, but the agent run will 
continue:
Warning: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate 
B: certificate verify failed: [certificate revoked for 
/CN=grill-dev.ourdomain.com]
Info: Retrieving pluginfacts
Error: /File[/var/lib/puppet/facts.d]: Failed to generate additional 
resources using 'eval_generate': SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed: [certificate revoked 
for /CN=grill-dev.ourdomain.com]
Error: /File[/var/lib/puppet/facts.d]: Could not evaluate: Could not 
retrieve file metadata for puppet://grill-dev.ourdomain.com/pluginfacts: 
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: 
certificate verify failed: [certificate revoked for 
/CN=grill-dev.ourdomain.com]
Wrapped exception:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: 
certificate verify failed: [certificate revoked for 
/CN=grill-dev.ourdomain.com]
Info: Retrieving plugin
Error: /File[/var/lib/puppet/lib]: Failed to generate additional resources 
using 'eval_generate': SSL_connect returned=1 errno=0 state=SSLv3 read 
server certificate B: certificate verify failed: [certificate revoked for 
/CN=grill-dev.ourdomain.com]
Error: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve 
file metadata for puppet://grill-dev.ourdomain.com/plugins: SSL_connect 
returned=1 errno=0 state=SSLv3 read server certificate B: certificate 
verify failed: [certificate revoked for /CN=grill-dev.ourdomain.com]
Wrapped exception:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: 
certificate verify failed: [certificate revoked for 
/CN=grill-dev.ourdomain.com]
Error: Could not retrieve catalog from remote server: SSL_connect 
returned=1 errno=0 state=SSLv3 read server certificate B: certificate 
verify failed: [certificate revoked for /CN=grill-dev.ourdomain.com]
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
Error: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed: [certificate revoked 
for /CN=grill-dev.ourdomain.com]


The puppet master is a smart-proxy, has 3 nodes, 1 works, 2 do not. When I 
point the 2 that do NOT work at the alpha-master instead of the proxy 
puppet agent --test works. I can also point them to the other smart-proxy 
and they work.This seems to imply that the proxy master is having problems. 
I've tried to find any indications on the proxy host in logs but cannot 
find any logs for these connects at all. tcpdump shows traffic on port 8140 
however.

These devices have firewalld disabled to avoid firewall issues for this 
test.

I've "puppet cert clean'd" the keys on the ca_server and remade thinking 
there was some issue... didn't help. I checked --fingerprint on them and 
they match what the ca_server has.  I also copied the crl.pem from one of 
the masters that worked to the master that isn't thinking it was a bad 
revocation entry... no joy.

I've entirely rebuilt these 2 nodes (and the puppet master proxy). I've 
compared the puppet.conf on the one node that is working with the 2 that 
are not and outside of their own name they are exactly the same (example):


[main]
vardir = /var/lib/puppet
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl

[agent]
pluginsync      = true
report          = true
ignoreschedules = true
ca_server       = george-dev.ourdomain.com
certname        = h8-dev.ourdomain.com
environment     = production
server          = grill-dev.ourdomain.com


Any theory or tips where to look for the cause?

-- 
You received this message because you are subscribed to the Google Groups 
"Foreman users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/foreman-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to