
Това не е първият път, когато 2ndQuadrant разглежда Puppet. Габриеле Бартолини вече е написал статия в две части за това как бързо да конфигурирате PostgreSQL сървър чрез Puppet и Vagrant, придружена от пускането на кода, използван в примера в GitHub (https://github.com/2ndquadrant-it/vagrant -puppet-postgresql).
Разделена на три части, целта на тази статия е да демонстрира автоматизация на настройката и конфигурацията на Barman за архивиране на тестов сървър на PostgreSQL.
Тази статия е актуализация на написаното от Габриеле с идеята за създаване на две виртуални машини вместо една, PostgreSQL сървър и Barman сървър.
it2ndq/barman е модулът, издаден от 2ndQuadrant Италия за управление на инсталацията на Barman чрез Puppet. Модулът има GPLv3 лиценз и е достъпен в GitHub на адрес https://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 (https://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 (https://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 = 'https://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 за действителната инсталация ще бъде предмет на следващата статия.
Чао за сега!