Puppet
Puppet är ett automatiseringsverktyg för servrar. Puppet är ett väldigt kraftfullt verktyg, du kan få en fil att se likadan ut på 1000 olika servrar på bara 2 minuter eller att se till att SSH confen är den samma. Puppet kan köras i både Unix och Windows miljör. Många stora företag använder Puppet tex, Google, Twitter, Spotify, Dell. Puppet är mycket användbart om man har servrar med olika operativsystem. Skillnaderna mellan olika operativsystem spelar ingen roll, man kan sätta upp en huvudserver och lagra konfigurationer för alla servrar. Huvudservern kallas master och klienterna kör agenter. Klienterna ansluter regelbundet till mastern för att synkronisera sina konfigurationer och rapportera alla lokala ändringar tillbaka till mastern. Master måste vara av samma version eller nyare än de agenter som ansluter till den. Puppet finns i Enterprise eller som open source.
Contents
Installation
Det är viktigt att man kör samma version på puppet master och puppet agent för att inte få några kompatibilitets problem.
Server
Ubuntu 14.04 LTS
sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y install puppetmaster rdoc ntp sudo touch /etc/puppet/manifests/site.pp
Fedora 21 Server
sudo yum update && sudo yum install puppet-server ntp sudo touch /etc/puppet/manifests/site.pp
Klient
sudo apt-get update && sudo apt-get upgrade && sudo apt-get -y install puppet ntp sudo yum update && sudo yum install puppet ntp
Namnuppslag
Default för att hitta till mastern gör klienterna ett namnuppslag på puppet. Sätt upp i din DNS så att puppet pekar mot mastern. T.ex. puppet.exempel.se. Sedan på klienten:
echo "search exempel.se" | sudo tee -a /etc/resolv.conf
Om klienten använder DHCP kan det hända att resolv.conf skrivs över.
Testa
ping puppet
Det måste också vara öppet för klienterna mot mastern på TCP 8140
Konfiguration
Pre-2.6 |
Post-2.6 |
---|---|
puppetmasterd | puppet master |
puppetd | puppet agent |
puppet | puppet apply |
puppetca | puppet cert |
ralsh | puppet resource |
puppetrun | puppet kick |
puppetqd | puppet queue |
filebucket | puppet filebucket |
puppetdoc | puppet doc |
pi | puppet describe |
Master
Konfigurations av puppet görs under /etc/puppet/
Börja med att skapa ett CA cert för din master server. Lägg till dns namnet på din master server i conf filerna.
Under [main]
i puppet.conf
lägg till,
dns_alt_names = puppet,puppet.domän.se
Skapa sedan CA certet med kommandot,
sudo puppet master --verbose --no-daemonize
När det står Notice: Starting Puppet master version <VERSION>
har certet skapats. Tryck ctrl-c för att stoppa.
Hiera
Är ett enkelt sätt att konfigurera dina klienter på. Med hiera slipper man upprepa sig om bara vissa klienter ska använda en viss conf. Det följer med puppet men måste aktiveras. När man konfar hiera använder man sig av yaml.
Skapa filen site.pp
i mappen manifests
och skriv,
hiera_include('classes')
Skapa sedan filen hiera.yaml
i rooten av puppet och fyll den med,
--- :backends: - yaml :yaml: :datadir: /etc/puppet/hieradata :hierarchy: - "node/%{::fqdn}" - "os/%{::osfamily}" - common :logger: - puppet
Skapa sedan en mapp som heter hieradata i rooten av puppet. I den mappen ska du skapa mapparna node
och os
.
:hierarchy
bestämmer vilken ordning och vilken conf som varje node ska ha. I mappen os
kan du skapa en fil som heter tex Ubuntu.yaml
. Då kommer alla ubuntu maskiner få den confen som står där i.
I mappen hieradata
skapa en fil som heter common.yaml
. Confen som står i denna filen kommer alla noder att få.
Exempel conf på common.yaml
som kommer använda modulen utils och installera paketet vim och autofs.
--- classes: -utils utils::packages: - vim - autofs
SSL
All kommunikation görs med SSL och certifikat används för autentisering.
På klient:
sudo puppet agent --waitforcert 120 --test
På server:
sudo puppet cert list sudo puppet cert sign klient.exempel.se
För att autosigna certifikat så lägg till detta under [master]
autosign = true