Puppet
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.