Installazione di The Foreman in Debian

From RVM Wiki
Revision as of 17:18, 15 January 2020 by Gabriele.vivinetto (talk | contribs) (Aggiunta di client)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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