Installazione di The Foreman in Debian
the Foreman installa un puppet master e gli strumenti fi gestione per un ambiente fisico o virtuale, per gestire un parco macchine linux dall'installazione alla gestione
Installazione in Debian Wheezy
- Su una macchina appena installata, aggiungere le fonti apt, installare la chiave gpgp ed i pacchetti:
sudo apt-get update sudo apt-get dist-upgrade echo "deb http://deb.theforeman.org/ wheezy 1.5" |sudo tee /etc/apt/sources.list.d/foreman.list echo "deb http://deb.theforeman.org/ plugins 1.5" | sudo tee -a /etc/apt/sources.list.d/foreman.list cat /etc/apt/sources.list.d/foreman.list wget -q http://deb.theforeman.org/foreman.asc -O- | sudo apt-key add - sudo apt-get update && sudo apt-get install foreman-installer
- Lanciare l'installazione (attenzione, la macchina deve avere accesso libero https o avere un proxy di sistema configurato, altrimenti i pacchetti foreman-bootdisk e foreman-installer non si riusciranno d installare):
sudo foreman-installer
- Loggarsi ora all'url della macchina installata (ci sarà redirect su https) http://server.example.com con credenziali
admin changeme
- Ora The Foreman è installato in "basic mode" e funziona solo da raccoglitore di report. Per poter installare e gestire gli host, va configurato in "unattended mode"
Verifica installazione
- Lanciare puppet sulla macchina appena configurata per inviare il primo report:
sudo puppet agent --test
- L'errore è ignorabile:
err: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from environment production source(s) puppet://rserver.example.com/plugins
- Verificare che nella console web nella dashboard ci sia un host che abbia inviato un report puppet.
Utilizzo di un modulo puppet
- Installiamo ora un modulo di test:
sudo puppet module install -i /etc/puppet/environments/production/modules saz/ntp
- Importiamolo ed attiviamo la classe. Via web, selezioniamo:
Configure > Puppet Classes Import from server.example.com
- La classe ntp apparirà nell'elenco: selezioniamola, e clicchiamo su update per importarla. Ora la classe è disponibile per essere utilizzata.
- Modifichiamo un parametro di default della classe, ad esempio l'elenco dei server ntp di default da utilizzare. Selezioniamo la classe ntp appena importata, e clicchiamo sulal scheda
Smart Class Parameters
- Selezioniamo a sinistra il valore
server_list
- Clicchiamo su "override" ed inseriamo nel textbox "Default values" l'elenco dei server ntp da utilizzare:
["0.debian.pool.ntp.org","1.debian.pool.ntp.org","2.debian.pool.ntp.org","3.debian.pool.ntp.org"]
Clicchiamo
Submit
- Ora assegnamo la classe nt al nostro host. Selezioniamo dal menu in alto
Hosts->All hosts server.example.com
- Si aprirà la scheda con tutti i dettagli dell'host. Cliccare
Edit
- Andare sulla scheda
Puppet classes
- Espandere la classe ntp, ed aggiungerla con il + e premere Submit
- Per curiosità, sui può vedere il codice yaml generato per l'host, che comprenderà la classe ntp con i valori dei server ntp precedentemente specificati.
- Se si vuole, nella classe ntp, nella scheda "Parameters" è possibile modificare gli "smart parameters" utilizzati.
- Sull'host, eseguire puppet per verificare che ntpd sia installato e si configuri come specificato:
sudo puppet agent --test
- L'errore è ignorabile:
err: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from environment production source(s) puppet://server.example.com/plugins
- Ora fare refresh nell'interfaccia web , e aprire il Last report" dell'host configurato: se ne vedranno i dettagli.
- Per gestire un altro host, una volta installato puppet, è possibile assegnargli come server puppet la macchina foreman:
sudoedit /etc/puppet/puppet.conf
[agent]
server = foreman.example.com
- Lanciare
sudo puppet agent --test
- Poi sulla macchina foreman, firmare il certificato:
sudo puppet cert sign nuovohost.example.com
- Oppure via web
Infrastructure > Smart Proxies
- Cliccare direttamente su "Certificates" nella riga dell'host foreman, NON scegliere Autosign
- Rilanciare sull'host puppet, e poi sarà visibile negli host via web:
puppet agent --test
Riferimenti
Aggiunta di client
Sul client, utilizzare questo script pe rinstallare puppet 5 ed impostarlo:
#!/bin/bash
#set -x
PUPPETMASTER="puppet.rvmgroup.it"
RELEASE=$(lsb_release -c| cut -f 2)
FILENAME=puppet5-release-${RELEASE}.deb
if (lsb_release -c -s>/dev/null 2>&1); \
then echo "Good: lsb_release is installed."; \
cd /tmp && \
wget --no-check-certificate -O /tmp/${FILENAME} https://apt.puppetlabs.com/${FILENAME} && \
dpkg -i /tmp/${FILENAME} && \
apt-get update && \
apt-get dist-upgrade && \
sudo apt-get install augeas-lenses augeas-tools puppet-agent puppet-;
else echo -e "BAD: lsb_release is not installed. Please install it:\n sudo apt-get install lsb-release"; \
sudo apt-get install lsb-release;
echo "NOW RELAUNCH."
exit 1
fi
# Set PuppetServer
augtool -s set /files/etc/puppetlabs/puppet/puppet.conf/agent/server $PUPPETMASTER
# Set Environment
augtool -s set /files/etc/puppetlabs/puppet/puppet.conf/agent/environment production
# Set ca cert
augtool -s set /files/etc/puppetlabs/puppet/puppet.conf/agent/ca_server $PUPPETMASTER
# Set cert name
read -p "Enter your certname [$(hostname -f)]: " FQDN
FQDN=${FQDN:-$(hostname -f)}
augtool -s set /files/etc/puppetlabs/puppet/puppet.conf/agent/certname $FQDN
# Puppet Plugins
augtool -s set /files/etc/puppetlabs/puppet/puppet.conf/main/pluginsync true
# Allow puppetrun from foreman/puppet master to work
augtool -s set /files/etc/puppetlabs/puppet/puppet.conf/main/listen true
# Allow execution of puppetrun button from puppet master
num=$(awk 'END { print NR }' /etc/puppetlabs/puppet/auth.conf)
lunum=`expr $num - 4`
sed -i "$lunum i\ \n#added to allow execution of puppetrun button\npath /run\nauth any\nmethod save\nallow $PUPPETMASTER\n" /etc/puppetlabs/puppet/auth.conf
# for older versions of puppet, also need to "touch /etc/puppet/namespace.auth"
# check in to foreman
/opt/puppetlabs/bin/puppet agent --test
read -p "Press ENTER when you have signed the cert in Foreman: " OK
/opt/puppetlabs/bin/puppet agent --test
systemctl enable puppet
systemctl restart puppet