Dette er ikke første gang, at 2ndQuadrant har set på Puppet. Gabriele Bartolini har allerede skrevet en artikel i to dele om, hvordan man hurtigt konfigurerer en PostgreSQL-server gennem Puppet og Vagrant, ledsaget af frigivelsen af koden, der blev brugt i eksemplet på GitHub (http://github.com/2ndquadrant-it/vagrant) -puppet-postgresql).
Opdelt i tre dele er formålet med denne artikel at demonstrere automatisering af opsætning og konfiguration af Barman til backup af en PostgreSQL testserver.
Denne artikel er en opdatering af det, der blev skrevet af Gabriele med ideen om at skabe to virtuelle maskiner i stedet for én, en PostgreSQL-server og en Barman-server.
it2ndq/barman
er modulet udgivet af 2ndQuadrant Italien til at styre installationen af Barman gennem Puppet. Modulet har en GPLv3-licens og er tilgængeligt på GitHub på adressen http://github.com/2ndquadrant-it/puppet-barman. Følgende procedure blev skrevet til en Ubuntu 14.04 Trusty Tahr, men kan udføres på lignende måde på andre distributioner.
Krav
For at starte modulet til Barman på en virtuel maskine, har vi brug for følgende software:
- VirtualBox
- Vagrant
- Ruby>=1,9
- Dukke
- bibliotekar-marionet
Vagrant
Vagrant er en virtuel maskinmanager, der er i stand til at understøtte mange virtualiseringssoftware med VirtualBox som standard.
Vi installerer VirtualBox på denne måde:
$ sudo apt-get install virtualbox virtualbox-dkms |
Den seneste version af Vagrant kan downloades fra webstedet og installeres med kommandoen:
$ sudo dpkg -i /path/to/vagrant_1.7.2_x86_64.deb |
Ruby
Med hensyn til Ruby er vores råd at bruge rbenv
, som opretter et Ruby-udviklingsmiljø, hvori man kan specificere versionen for den aktuelle bruger, og derved undgå at forurene systemmiljøet. For at installere rbenv
vi foreslår at bruge rbenv-installer
(http://github.com/fesplugas/rbenv-installer).
Lad os downloade og udføre scriptet:
$ curl https://raw.githubusercontent.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash |
I slutningen vil scriptet bede dig om at tilføje følgende linjer til ~/.bash_profile
fil:
export RBENV_ROOT="${HOME}/.rbenv" if [ -d "${RBENV_ROOT}" ]; then export PATH="${RBENV_ROOT}/bin:${PATH}" eval "$(rbenv init -)" fi |
Vi skal nu genindlæse den netop ændrede ~/.bash_profile
:
$ exec bash -l |
På dette tidspunkt installerer vi en Ruby-version lokalt (i dette tilfælde 2.1.5) og indstiller brugeren til at køre denne version i stedet for systemversionen:
$ rbenv install 2.1.5 $ rbenv global 2.1.5 |
Dukke
Puppet er påkrævet ikke kun på VM'erne, men også på den maskine, der kører dem. Derfor er vi nødt til at installere Puppet perlen.
$ gem install puppet |
Bibliotekar-dukke
Til sidst librarian-puppet
er et værktøj til at automatisere Puppet-modulernes administration. Ligesom Puppet, librarian-puppet
kan installeres som en perle:
$ gem install librarian-puppet |
Vagrant:konfiguration
Nu hvor vi har afhængighederne på plads, kan vi begynde at skrive Vagrant- og Puppet-konfigurationerne til vores backup-system.
Vi starter med at oprette en arbejdsmappe:
$ mkdir ~/vagrant_puppet_barman $ cd ~/vagrant_puppet_barman |
Vagrant har brug for, at vi skriver en fil kaldet Vagrantfile
hvor den leder efter konfigurationen af VM'erne.
Følgende Vagrantfile
starter to Ubuntu Trusty VM'er, kaldet pg
og backup
, med ip-adresser 192.168.56.221
og 192.168.56.222
. På begge maskiner udføres klargøring via et inline shell-script.
Dette script starter puppet-bootstrap
(http://github.com/hashicorp/puppet-bootstrap), et script, der automatisk installerer og konfigurerer Puppet på forskellige typer maskiner. Da det ikke skal køres mere end én gang, blev der indsat en test i scriptet for at forhindre yderligere eksekveringer.
Vagrant.configure("2") do |config| { :pg => { :ip => '192.168.56.221', :box => 'ubuntu/trusty64' }, :backup => { :ip => '192.168.56.222', :box => 'ubuntu/trusty64' } }.each do |name,cfg| config.vm.define name do |local| local.vm.box = cfg[:box] local.vm.hostname = name.to_s + '.local.lan' local.vm.network :private_network, ip: cfg[:ip] family = 'ubuntu' bootstrap_url = 'http://raw.github.com/hashicorp/puppet-bootstrap/master/' + family + '.sh' # Run puppet-bootstrap only once local.vm.provision :shell, :inline => <<-eos if [ ! -e /tmp/.bash.provision.done ]; then curl -L #{bootstrap_url} | bash touch /tmp/.bash.provision.done fi eos end end end |
Opdragelse af VM'erne
Vi har defineret to Ubuntu Trusty VM'er, der indeholder Puppet. Dette er ikke den endelige Vagrantfile
men tillader allerede oprettelsen af de to maskiner. Hvis du er nysgerrig, er det muligt at bekræfte, at de to maskiner er blevet oprettet med kommandoen:
$ vagrant up |
og derefter oprette forbindelse ved hjælp af følgende kommandoer:
$ vagrant ssh pg $ vagrant ssh backup |
Endelig kan maskinerne destrueres med:
$ vagrant destroy -f |
Konklusioner
I denne første del af selvstudiet har vi set, hvordan man konfigurerer afhængighederne og endte med de to virtuelle maskiner, som vi installerer på, via Puppet, PostgreSQL og Barman. At skrive dukkemanifestet til selve installationen vil være emnet for den næste artikel.
Farvel nu!