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 > /dev/null
(log in: /var/log/puppetlabs/puppetserver/puppetserver.log; verificare anche che la riga:
Rendered api/v2/config_reports/create.json.rabl
sia presente in /var/log/foreman/production.log. Ricordarsi di riavviare almeno apache2, foreman-proxy e -- forse -- pupperserver)
il file node.rb si scarica dal sorgente di foreman, ed è il file enc.rb rinominato.
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:
---
version: 5
defaults:
datadir: /etc/puppetlabs/code/environments/production/hieradata
data_hash: yaml_data
hierarchy:
- name: "Per-node data"
path: "nodes/%{trusted.certname}.yaml"
# path: "nodes/%{::trusted.certname}.yaml"
- name: "Per-OS defaults"
path: "%{facts.os.distro.codename}.yaml"
# path: "%{::lsbdistcodename}.yaml"
- name: "Common data"
path: "common.yaml"
---
: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.