Puppet

Da sia.
Vai alla navigazione Vai alla ricerca

Foreman

certificati

Il file /etc/puppetlabs/puppet/ssl/certs/ca.pem deve contenere tutte le CA:

  • ca di puppetmaster (la ca che firma i singoli puppet client);
  • ca dello https (altrimenti la chiamata a nodes.rb guarda solo i dati vecchi);
  • ca dei client nei browser che accedono a https://foreman.unimore.it (perché ssl_verify è optional che vuol dire che se il certificato non c'è bene, ma se c'è la CA viene verificata).

certificati del web server apache2

Sono certificati sectigo richiesti manualmente (non acme):

   SSLCertificateFile      "/etc/ssl/certs/foreman.dmz-int.unimo.it.pem"
   SSLCertificateKeyFile   "/etc/ssl/private/foreman.dmz-int.unimo.it.key"
   SSLCertificateChainFile "/etc/puppetlabs/puppet/ssl/certs/ca.pem"

Certificati client del browser

Nessuno: quando te lo chiede: "send no certificate"

foreman

Dalla versione 3.2 il servizio foreman deve essere attivo (perché rails viene eseguito su puma e non in passenger).

Nel virtual host foreman-ssl le configurazioni:

   SSLVerifyClient         optional
   SSLCACertificateFile    "/etc/puppetlabs/puppet/ssl/certs/ca.pem"

Sono fondamentali per lo upload dei facts, che si può testare con:

   sudo -u puppet /etc/puppetlabs/puppet/node.rb foreman.dmz-int.unimo.it

(log in: /var/log/puppetlabs/puppetserver/puppetserver.log)

Il db al servizio di foreman è postgresql (mysql deve essere fermo).

Le configurazioni della ui possono essere impostate anche dal file /etc/foreman/settings.yaml. Le impostazioni dello ssl riguardano i certificati client che servono ad esempio per connettersi a foreman-proxy (non quelli server dello https):

   :ssl_ca_file: /etc/puppetlabs/puppet/ssl/certs/ca.pem
   :ssl_priv_key: /etc/puppetlabs/puppet/ssl/private_keys/foreman.dmz-int.unimo.it.pem
   :ssl_certificate: /etc/puppetlabs/puppet/ssl/certs/foreman.dmz-int.unimo.it.pem

foreman-proxy

Deve essere abilitata dall'interfaccia web, tab 'infrastructure'.

Dall'interfaccia web 'settings -> authentication' ho dovuto mettere:

   Trusted hosts	[foreman.dmz-int.unimo.it]

Prima del 11/11/2021 non era necessario, deriva dal mancato passaggio del CN della proxy che forse arriva dal suo certificato.

Da leggere: https://www.theforeman.org/2021/01/updating-foreman-inventory-with-system-facts.html

puppetdb

Assicurarsi che la connessione con postgresql@13-main sia attiva e configurata (database.ini). Creare utente e database in posgresql.

Istruzioni per aggiornare postgresql.

hiera

Le gerarchie sono nel file: /etc/puppetlabs/puppet/hiera.yaml e sono:

   ---
   :backends:
     - yaml
   :hierarchy:
     - "nodes/%{::trusted.certname}"
     - "%{::lsbdistcodename}"
     - common
   :yaml:
   # datadir is empty here, so hiera uses its defaults:
   # - /etc/puppetlabs/code/environments/%{environment}/hieradata on *nix
   # - %CommonAppData%\PuppetLabs\code\environments\%{environment}\hieradata on Windows
   # When specifying a datadir, make sure the directory exists.
     :datadir:

Manipolare il db postgres di foreman

   su - postgres -c 'psql foreman'
   \x on

Autenticazione External con Shibboleth

Aggiungere una sezione extlogin.conf in /etc/apache2/sites_availables/05-foreman-ssl.d :

<Location /Shibboleth.sso>
    Satisfy Any
</Location>

<Location /users/extlogin>
    AuthType shibboleth
    ShibRequestSetting requireSession 1
#    Require valid-user
    Require shib-attr uid malvezzi
</Location>

Nella UI sotto Administer, Setting, Authentication attivare la opzione:

   Authorise login delegation

Accertarsi che lo header HTTP_REMOTE_USER sia valorizzato in puma, cioé che apache2 traduca la variabile di ambiente eppn nello x-remote-user. Aggiungere a /etc/apache2/sites-available/05-foreman-ssl.conf:

   RequestHeader set REMOTE_USER "%{eppn}e"
   RequestHeader set EPPN "%{eppn}e"

Permettere a puppetserver di caricare i facts verso foreman

Errori in /var/log/puppetlabs/puppetserver/puppetserver.log

    Serving cached ENC: Could not send facts to Foreman: SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate in certificate chain)

significano che il file di ca in /etc/puppetlabs/puppet/foreman.yaml non contiene la CA dello https di foreman.