sql >> Database teknologi >  >> RDS >> PostgreSQL

Automatisering af Barman med Puppet:it2ndq/barman (del 1)


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!


  1. Sådan opretter du SQL-spor for at fange SQL Server-hændelser

  2. Hvordan udfører jeg en GROUP BY på en aliaseret kolonne i MS-SQL Server?

  3. Hvordan man bedst deler csv-strenge i oracle 9i

  4. Når jeg kalder PreparedStatement.cancel() i et JDBC-program, dræber det det så i en Oracle-database?