PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Автоматизиране на барман с кукла:it2ndq/барман (първа част)


Това не е първият път, когато 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 за действителната инсталация ще бъде предмет на следващата статия.

Чао за сега!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL връща функция с персонализиран тип данни

  2. Неуспешно зареждане на sql модули в клъстера на базата данни по време на инсталацията на PostgreSQL

  3. SQL Вземете всички записи, по-стари от 30 дни

  4. Как да се справим с грешката на Ruby on Rails:Моля, инсталирайте Postgresql адаптера:`gem install activerecord-postgresql-adapter'

  5. Можете ли да създадете индекс в дефиницията CREATE TABLE?