Puppet Master en Agent instellen op CentOS 8

Puppet is een open-source configuratiebeheer gereedschap en server automatiserings raamwerk. Puppet kan draaien op Unix-achtige besturingssystemen, maar ook op de Microsoft Windows systemen. Je kunt er beheerstaken en de configuratie van honderden systemen mee beheren en uitvoeren vanaf één hoofdserver.

In deze zelfstudie laat ik je zien hoe je Puppet op CentOS 8 kunt installeren. Ik zal een CentOS 8 server installeren en configureren als puppet ‘master’, en de andere als ‘agent’.

Vereisten

  • 2 of meer CentOS 8 servers
  • Root voorrechten

Wat we zullen doen:

  • Puppet voor-installatie
  • Installeer en Configureer Puppet server
  • Installeer en Configureer Puppet Agent
  • Verifieer Puppet Agent Configuratie
  • Maak het eerste Puppet Manifest

Stap 1 – Puppet Voor-Installatie

In deze eerste stap gaan we zowel de master als de agent servers voorbereiden voor de puppet installatie. We gaan hosts en FQDN van de server instellen, de NTP server instellen en de puppet repository voor CentOS 8 server toevoegen.

Hostnamen instellen

Eerst gaan we hosts en FQDN instellen voor beide servers. De puppet master krijgt de hostnaam ‘master’ met de FQDN ‘master.hakase-labs.io’, en de agent krijgt de hostnaam ‘agent01’ met de FQDN ‘agent01.hakase-labs.io’.

Stel de hostnaam in met het ‘hostnamectl’ commando hieronder.

hostnamectl set-hostname hostname

Bewerk daarna het ‘/etc/hosts’ bestand om de FQDN server in te stellen.

vim /etc/hosts

Verander het IP adres en de domeinnaam met je eigen en plak erin.

10.5.5.21   master.hakase-labs.io   master
10.5.5.22   agent01.hakase-labs.io  agent01

Bewaar en sluit.

Start nu de hostnamedienst opnieuw om een nieuwe hostnaam en FQDN toe te passen.

systemctl restart systemd-hostnamed

En controleer daarna de hostname en de FQDN met het volgende commando.

hostname
hostname -f

En je krijgt een nieuwe hostnaam en FQDN is geconfigureerd en op het systeem toegepast.

Stel de hostnaam van de server in

NTP server instellen

Voor de NTP server gaan we “chrony” gebruiken.

Installeer chrony met het onderstaande dnf commando.

dnf install chrony

Bewerk daarna de chrony configuratie ‘/etc/chrony.conf’ met vim editor.

vim /etc/chrony.conf

Verander nu de pool server met de dichtstbijzijnde pool van je land. Je kunt beschikbare pool NTP controleren met het‘https://www.pool.ntp.org/zone/COUNTRYID‘.

Kopieer alle beschikbare NTP servers van je land en plak ze in het ‘chrony.conf’ bestand zoals hieronder.

server 0.id.pool.ntp.org iburst
server 1.id.pool.ntp.org iburst
server 2.id.pool.ntp.org iburst
server 3.id.pool.ntp.org iburst

Bewaar en sluit.

Start nu de chronyd service en voeg hem toe aan de opstarttijd.

systemctl start chronyd
systemctl enable chronyd

De configuratie van de NTP server is voltooid.

Instellen van datum en tijd

Puppet Repository toevoegen voor CentOS 8

Voor de puppet repository CentOS 8 server kun je die handmatig installeren met het rpm commando zoals hieronder.

sudo rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm

Controleer daarna alle beschikbare repository’s op het systeem met het onderstaande dnf commando.

dnf repolist

En je krijgt dat de puppet repository aan het CentOS 8 systeem is toegevoegd.

Voeg de puppet repository toe

SELinux uitschakelen

Om SELinux uit te schakelen, kun je de ‘/etc/sysconfig/selinux’ configuratie bewerken met vim editor.

vim /etc/sysconfig/selinux

Verander nu de configuratie ‘SELINUX’ waarde in “disabled”.

SELINUX=disabled

Bewaar en sluit, herstart dan de server.

sudo reboot

Zodra je weer ingelogd bent, controleer je de SELinux status met het volgende commando.

sestatus

En je krijgt de SELinux disabled status.

Stap 2 – Installeer en configureer Puppetserver

In deze stap gaan we de puppetserver installeren en configureren op de master node.

Installeer de puppetserver met het onderstaande dnf commando.

sudo dnf install puppetserver

Daarna moeten we de ‘init settings’ voor puppetserver bewerken en de geheugentoewijzing veranderen, afhankelijk van het RAM dat we hebben.

Bewerk de puppetserver init instelling die in het ‘/etc/sysconfig/puppetserver’ staat met behulp van vim editor.

vim /etc/sysconfig/puppetserver

Verander nu de ‘JAVA_ARGS’ configuratie voor geheugentoewijzing, afhankelijk van je RAM.

JAVA_ARGS="-Xms1g -Xmx1g ...."

Bewaar en sluit.

Ga vervolgens naar de ‘/etc/puppetlabs’ directory en bewerk het puppet configuratiebestand ‘puppet.conf’.

cd /etc/puppetlabs/
vim puppet/puppet.conf

Definieer onder de master configuratie de DNS alternatieve namen met de FQDN van de master server.

[master]
....
dns_alt_names=master.hakase-labs.io,puppet
....

Definieer daarna de puppet hoofdserver configuratie zoals hieronder.

[main]
certname = master.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h

Sla op en sluit.

Voeg nu de puppetserver service toe aan de opstarttijd en start de service.

systemctl enable puppetserver
systemctl start puppetserver

De puppetserver is up and running op CentOS 8 server met de standaard TCP poort ‘8140’.

Voeg de puppetserver poort ‘8140’ toe aan de firewalld met het volgende commando.

firewall-cmd --add-port=8140/tcp --permanent
firewall-cmd --reload

En als resultaat is de puppet master installatie en configuratie met succes voltooid.

Configureer de firewall

Stap 3 – Installeer en configureer Puppet Agent

Na de installatie van de Puppet master server ‘master.hakase-labs.io’, gaan we een puppet agent installeren op de ‘agent01’ server.

Log in op de ‘agent01’ server en installeer het puppet-agent pakket met het onderstaande dnf commando.

sudo dnf install puppet-agent

Ga daarna naar de ‘/etc/puppetlabs’ directory en bewerk het configuratiebestand ‘puppet.conf’ met een vim editor.

cd /etc/puppetlabs/
vim puppet/puppet.conf

Verander de ‘certname’ en ‘server’ configuratie met je eigen en plak ze in de configuratie.

[main]
certname = agent01.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h

Bewaar en sluit.

Start vervolgens puppet service en registreer de Puppet agent op de master server met het volgende commando.

/opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

En je krijgt het resultaat zoals hieronder.

Start de puppet dienst

De puppet agent is nu up and running, hij probeert zich te registreren bij de Puppet master server.

Ga nu terug naar de Puppet master server en controleer de hangende certificaat aanvragen.

/opt/puppetlabs/bin/puppetserver ca list

En je krijgt het ‘agent01.hakase-labs.io’ certificaat op de lijst.

Onderteken nu het ‘agent01’ certificaat met het onderstaande commando.

/opt/puppetlabs/bin/puppetserver ca sign --certname agent01.hakase-labs.io

En de puppet agent is nu geregistreerd op de master server.

Registreer marionet agent

Stap 4 – Verifieer Puppet Agent Configuratie

Controleer nu de Puppet agent configuratie en test de verbinding tussen de puppet agent en de master met het volgende commando.

/opt/puppetlabs/bin/puppet agent --test

En je krijgt het resultaat zoals hieronder.

Test marionet agent

Het resultaat is dat de Puppet agent de configuratie uit de puppet master haalde en die zonder enige fout op de server toepaste.

Stap 5 – Maak het eerste Manifest

In dit stadium zijn de installatie en configuratie van Puppet voor master en agent voltooid.

En voor deze stap gaan we onze opstelling testen door het eerste puppet manifest te maken voor de installatie van het httpd pakket.

Ga naar de ‘/etc/puppetlabs/code/environments/production/manifests’ directory en maak het eerste puppet manifest bestand ‘httpd.pp’.

cd /etc/puppetlabs/code/
cd environments/production/manifests

vim httpd.pp

Plak er de volgende configuratie in.

node 'agent01.hakase-labs.io' {
    package { 'httpd':
        ensure  => "installed",
    }
    service { 'httpd':
        ensure => running,
    enable => true
    }
}

Bewaar en sluit.

Maak Manifest

Ga nu naar de Puppet agent node ‘agento01’ en voer het volgende commando uit.

/opt/puppetlabs/bin/puppet agent --test

En je krijgt het resultaat te zien zoals hieronder.

Test marionet agent

De Puppet agent haalde een nieuwe configuratie uit de Puppet master om het httpd pakket te installeren en de httpd dienst te starten.

Controleer op de ‘agent01′ node de httpd service status en controleer de HTTP poort ’80’

systemctl status httpd
netstat -plntu

En je krijgt dat de httpd dienst up and running is op de ‘agent01′ server met de standaard HTTP poort ’80’. Het httpd pakket is geïnstalleerd via het puppet manifest dat we bovenaan gemaakt hebben.

Controleer de status van httpd

En als resultaat zijn de installatie en configuratie van de Puppet master en agent op de CentOS 8 server met succes voltooid.

Referentie