Това не е първият път, когато 2ndQuadrant разглежда Puppet. Габриеле Бартолини вече е написал статия в две части за това как бързо да конфигурирате PostgreSQL сървър чрез Puppet и Vagrant, придружена от пускането на кода, използван в примера в GitHub (http://github.com/2ndquadrant-it/vagrant -puppet-postgresql).
Разделена на три части, целта на тази статия е да демонстрира автоматизация на настройката и конфигурацията на Barman за архивиране на тестов сървър на PostgreSQL.
Тази статия е актуализация на написаното от Габриеле с идеята за създаване на две виртуални машини вместо една, PostgreSQL сървър и Barman сървър.
it2ndq/barman
е модулът, издаден от 2ndQuadrant Италия за управление на инсталацията на Barman чрез Puppet. Модулът има GPLv3 лиценз и е достъпен в GitHub на адрес http://github.com/2ndquadrant-it/puppet-barman. Следната процедура е написана за Ubuntu 14.04 Trusty Tahr, но може да бъде изпълнена по подобен начин в други дистрибуции.
Изисквания
За да стартираме модула за Barman на виртуална машина, се нуждаем от следния софтуер:
- VirtualBox
- Скитник
- Ruby>=1.9
- Кукла
- библиотекар-кукла
Скитник
Vagrant е мениджър на виртуални машини, способен да поддържа много софтуери за виртуализация с VirtualBox по подразбиране.
Инсталираме VirtualBox по следния начин:
$ sudo apt-get install virtualbox virtualbox-dkms |
Най-новата версия на Vagrant може да бъде изтеглена от сайта и инсталирана с командата:
$ sudo dpkg -i /path/to/vagrant_1.7.2_x86_64.deb |
Рубин
По отношение на Ruby, нашият съвет е да използвате rbenv
, което създава среда за разработка на Ruby, в която да се посочи версията за текущия потребител, като по този начин се избягва замърсяването на системната среда. За да инсталирате rbenv
предлагаме да използвате rbenv-installer
(http://github.com/fesplugas/rbenv-installer).
Нека изтеглим и изпълним скрипта:
$ curl https://raw.githubusercontent.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash |
В края скриптът ще ви подкани да добавите следните редове към ~/.bash_profile
файл:
export RBENV_ROOT="${HOME}/.rbenv" if [ -d "${RBENV_ROOT}" ]; then export PATH="${RBENV_ROOT}/bin:${PATH}" eval "$(rbenv init -)" fi |
Сега трябва да презаредим току-що променения ~/.bash_profile
:
$ exec bash -l |
В този момент ние инсталираме локално версия на Ruby (в този случай 2.1.5) и настройваме потребителя да стартира тази версия, а не версията на системата:
$ rbenv install 2.1.5 $ rbenv global 2.1.5 |
Кукла
Puppet се изисква не само на виртуалните машини, но и на машината, която ги изпълнява. Затова трябва да инсталираме скъпоценния камък Puppet.
$ gem install puppet |
Библиотекар-кукла
И накрая, librarian-puppet
е инструмент за автоматизиране на управлението на модулите Puppet. Като Puppet, librarian-puppet
може да бъде инсталиран като скъпоценен камък:
$ gem install librarian-puppet |
Вагрант:конфигурация
Сега, когато имаме определени зависимости, можем да започнем да пишем конфигурациите Vagrant и Puppet за нашата система за архивиране.
Започваме със създаване на работна директория:
$ mkdir ~/vagrant_puppet_barman $ cd ~/vagrant_puppet_barman |
Vagrant се нуждае от нас да напишем файл, наречен Vagrantfile
където търси конфигурацията на виртуалните машини.
Следният Vagrantfile
стартира две Ubuntu Trusty VM, наречени pg
и backup
, с ip адреси 192.168.56.221
и 192.168.56.222
. И на двете машини обезпечаването ще се извърши чрез вграден шел скрипт.
Този скрипт стартира puppet-bootstrap
(http://github.com/hashicorp/puppet-bootstrap), скрипт, който автоматично инсталира и конфигурира Puppet на различни типове машини. Тъй като не е необходимо да се изпълнява повече от веднъж, в скрипта беше вмъкнат тест, за да се предотврати по-нататъшно изпълнение.
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 |
Извеждане на виртуалните машини
Дефинирахме две Ubuntu Trusty VM, съдържащи Puppet. Това не е окончателният Vagrantfile
но вече позволява създаването на двете машини. Ако сте любопитни, възможно е да проверите дали двете машини са създадени с командата:
$ vagrant up |
и след това се свържете с помощта на следните команди:
$ vagrant ssh pg $ vagrant ssh backup |
И накрая, машините могат да бъдат унищожени с:
$ vagrant destroy -f |
Заключения
В тази първа част от урока видяхме как да конфигурираме зависимостите и се оказахме с двете виртуални машини, на които ще инсталираме, чрез Puppet, PostgreSQL и Barman. Написването на манифеста Puppet за действителната инсталация ще бъде предмет на следващата статия.
Чао за сега!