Není to poprvé, co se 2ndQuadrant podíval na Puppet. Gabriele Bartolini již napsala článek ve dvou částech o tom, jak rychle nakonfigurovat server PostgreSQL pomocí Puppet a Vagrant, spolu s vydáním kódu použitého v příkladu na GitHubu (http://github.com/2ndquadrant-it/vagrant -puppet-postgresql).
Cílem tohoto článku, rozděleného do tří částí, je demonstrovat automatizaci nastavení a konfigurace Barmana pro zálohování testovacího serveru PostgreSQL.
Tento článek je aktualizací toho, co napsal Gabriele s myšlenkou vytvořit dva virtuální stroje místo jednoho, PostgreSQL server a Barman server.
it2ndq/barman
je modul vydaný společností 2ndQuadrant Italy pro správu instalace Barmana prostřednictvím Puppet. Modul má licenci GPLv3 a je dostupný na GitHubu na adrese http://github.com/2ndquadrant-it/puppet-barman. Následující postup byl napsán pro Ubuntu 14.04 Trusty Tahr, ale lze jej provést podobným způsobem na jiných distribucích.
Požadavky
Ke spuštění modulu pro Barman na virtuálním stroji potřebujeme následující software:
- VirtualBox
- Tulák
- Rubín>=1,9
- Loutka
- knihovník-loutka
Vagrant
Vagrant je správce virtuálních strojů schopný podporovat mnoho virtualizačních softwarů s VirtualBoxem jako výchozím.
VirtualBox nainstalujeme takto:
$ sudo apt-get install virtualbox virtualbox-dkms |
Nejnovější verzi Vagrantu lze stáhnout z webu a nainstalovat pomocí příkazu:
$ sudo dpkg -i /path/to/vagrant_1.7.2_x86_64.deb |
Ruby
Pokud jde o Ruby, doporučujeme použít rbenv
, která vytváří vývojové prostředí Ruby, ve kterém lze specifikovat verzi pro aktuálního uživatele, čímž se zabrání kontaminaci systémového prostředí. Chcete-li nainstalovat rbenv
doporučujeme použít rbenv-installer
(http://github.com/fesplugas/rbenv-installer).
Pojďme si stáhnout a spustit skript:
$ curl https://raw.githubusercontent.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash |
Na konci vás skript vyzve k připojení následujících řádků k ~/.bash_profile
soubor:
export RBENV_ROOT="${HOME}/.rbenv" if [ -d "${RBENV_ROOT}" ]; then export PATH="${RBENV_ROOT}/bin:${PATH}" eval "$(rbenv init -)" fi |
Nyní musíme znovu načíst právě změněný ~/.bash_profile
:
$ exec bash -l |
V tomto okamžiku lokálně nainstalujeme verzi Ruby (v tomto případě 2.1.5) a nastavíme uživatele, aby spouštěl tuto verzi, nikoli verzi systému:
$ rbenv install 2.1.5 $ rbenv global 2.1.5 |
Loutka
Loutka je vyžadována nejen na virtuálních počítačích, ale také na stroji, který je provozuje. Proto musíme nainstalovat drahokam Puppet.
$ gem install puppet |
Knihovník-loutka
Nakonec librarian-puppet
je nástroj pro automatizaci správy modulů Puppet. Jako Puppet, librarian-puppet
lze nainstalovat jako klenot:
$ gem install librarian-puppet |
Vagrant:konfigurace
Nyní, když máme závislosti na místě, můžeme začít psát konfigurace Vagrant a Puppet pro náš záložní systém.
Začneme vytvořením pracovního adresáře:
$ mkdir ~/vagrant_puppet_barman $ cd ~/vagrant_puppet_barman |
Vagrant potřebuje, abychom napsali soubor s názvem Vagrantfile
kde hledá konfiguraci virtuálních počítačů.
Následující Vagrantfile
spustí dva Ubuntu Trusty VM, nazvané pg
a backup
, s IP adresami 192.168.56.221
a 192.168.56.222
. Na obou počítačích bude zajišťování prováděno prostřednictvím inline shell skriptu.
Tento skript spustí puppet-bootstrap
(http://github.com/hashicorp/puppet-bootstrap), skript, který automaticky instaluje a konfiguruje Puppet na různých typech počítačů. Protože není nutné jej spouštět více než jednou, byl do skriptu vložen test, který zabrání dalšímu spouštění.
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 |
Vyvolání virtuálních počítačů
Definovali jsme dva virtuální počítače Ubuntu Trusty obsahující Puppet. Toto není konečný Vagrantfile
ale již umožňuje vytvoření dvou strojů. Pokud jste zvědaví, je možné ověřit, že oba stroje byly vytvořeny pomocí příkazu:
$ vagrant up |
a poté se připojte pomocí následujících příkazů:
$ vagrant ssh pg $ vagrant ssh backup |
Nakonec lze stroje zničit pomocí:
$ vagrant destroy -f |
Závěry
V této první části tutoriálu jsme viděli, jak nakonfigurovat závislosti, a skončili jsme u dvou virtuálních strojů, na které budeme instalovat, přes Puppet, PostgreSQL a Barman. Napsání manifestu Puppet pro skutečnou instalaci bude předmětem dalšího článku.
Zatím ahoj!