vários mestres de marionetes

5

Eu gostaria de criar um mestre de marionetes adicional, mas ter o servidor CA sendo manipulado por apenas um mestre de marionetes. Eu configurei isso de acordo com a documentação aqui:

link

Eu configurei meu segundo mestre de marionetes da seguinte forma:

[main]
...
ca = false
ca_server = puppet-master1.test.net

Estou usando o passageiro, então estou um pouco confuso sobre como o arquivo virtual-host.conf deve procurar meu segundo puppet-master2.test.net. Aqui está o meu (atualizado de acordo com a resposta de Shane Maddens):

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.18
PassengerRuby /usr/bin/ruby

Listen 8140

<VirtualHost *:8140>

    ProxyPassMatch ^/([^/]+/certificate.*)$ https://puppet-master1.test.net:8140/$1

    SSLEngine on
    SSLProtocol -ALL +SSLv3 +TLSv1
    SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP

    SSLCertificateFile      /var/lib/puppet/ssl/certs/puppet-master2.test.net.pem
    SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/puppet-master2.test.net.pem
    #SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
    #SSLCACertificateFile    /var/lib/puppet/ssl/ca/ca_crt.pem
    # If Apache complains about invalid signatures on the CRL, you can try disabling
    # CRL checking by commenting the next line, but this is not recommended.
    #SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem
    SSLVerifyClient optional
    SSLVerifyDepth  1
    # The 'ExportCertData' option is needed for agent certificate expiration warnings
    SSLOptions +StdEnvVars +ExportCertData

    # This header needs to be set if using a loadbalancer or proxy
    RequestHeader unset X-Forwarded-For

    RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e
    RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
    RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e

    DocumentRoot /etc/puppet/rack/public/
    RackBaseURI /
    <Directory /etc/puppet/rack/>
            Options None
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>

Comentei o #SSLCertificateChainFile, #SSLCACertificateFile & #SSLCARevocationFile - este não é um servidor CA, portanto, não tenho certeza se preciso disso. Como eu conseguiria que o passageiro trabalhasse com isso?

Eu gostaria de usar o ProxyPassMatch, que configurei de acordo com a documentação. Eu não quero especificar um servidor ca em cada arquivo puppet.conf.

Estou recebendo este erro ao tentar criar um certificado de um cliente de marionetes apontando para o segundo servidor mestre de marionetes (puppet-master2.test.net):

[root@puppet-client2 ~]# puppet agent --test
Error: Could not request certificate: Could not intern from s: nested asn1 error
Exiting; failed to retrieve certificate and waitforcert is disabled

No cliente de marionetes, tenho isto

[main]

server = puppet-master2.test.net

O que eu perdi?

Felicidades, Oli

    
por Oli 17.12.2012 / 20:36

2 respostas

4

Esta parte da documentação ..

ProxyPassMatch ^(/.*?)/(certificate.*?)/(.*)$ balancer://puppet_ca/
ProxyPassReverse ^(/.*?)/(certificate.*?)/(.*)$ balancer://puppet_ca/

.. é realmente errado de várias maneiras. ProxyPassReverse não pode ter um regex (e não é necessário de qualquer maneira), ele não está realmente usando o URL solicitado na solicitação que é enviada para a autoridade de certificação e pode acionar o proxy não intencional para chamadas de API não relacionadas a certificados nó que tem certificate em seu nome.

Em vez disso, use isto:

ProxyPassMatch ^/([^/]+/certificate.*)$ https://puppet-master1.test.net:8140/$1

Coloque-o dentro do seu bloco <VirtualHost> e você poderá se livrar do <Proxy balancer://puppet_ca> .

O erro que você está recebendo significa que você está obtendo algo diferente de um certificado de volta da tentativa de recuperar seu certificado. Isso pode ter sido causado pelo problema de configuração acima, mas também pode ser indicativo de um erro diferente. Pegue essa configuração, expulse seu /var/lib/puppet/ssl no cliente (já que a solicitação de certificado provavelmente falhou também) e veja se está funcionando - se não, adicione --verbose a uma execução e veremos o que está acontecendo. / p>     

por 18.12.2012 / 02:43
8

Não.

Não faça isso. Se você está procurando escalar fantoches tendo vários mestres, você está indo na direção errada. Estou bem ciente de que os puppetlabs produziram um documento que você vinculou dizendo como eles recomendam fazer fantoche MM, mas na verdade é muito mais fácil ir sem mestre.

Assim, a melhor maneira de dimensionar o puppet masterless , onde você tem um repositório central do git (ou outro DVCS) e clone abaixo uma cópia de seus manifestos e executá-los localmente com puppet apply .

    
por 17.12.2012 / 21:15