PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Automatiser Barman avec Puppet :it2ndq/barman (première partie)


Ce n'est pas la première fois que 2ndQuadrant se penche sur Puppet. Gabriele Bartolini a déjà écrit un article en deux parties sur la configuration rapide d'un serveur PostgreSQL via Puppet et Vagrant, accompagné de la publication du code utilisé dans l'exemple sur GitHub (http://github.com/2ndquadrant-it/vagrant -marionnette-postgresql).

Divisé en trois parties, le but de cet article est de démontrer l'automatisation de l'installation et de la configuration de Barman pour sauvegarder un serveur de test PostgreSQL.

Cet article est une mise à jour de ce qui a été écrit par Gabriele avec l'idée de créer deux machines virtuelles au lieu d'une, un serveur PostgreSQL et un serveur Barman.

it2ndq/barman est le module publié par 2ndQuadrant Italie pour gérer l'installation de Barman via Puppet. Le module dispose d'une licence GPLv3 et est disponible sur GitHub à l'adresse http://github.com/2ndquadrant-it/puppet-barman. La procédure suivante a été écrite pour un Ubuntu 14.04 Trusty Tahr mais peut être effectuée de la même manière sur d'autres distributions.

Exigences

Pour démarrer le module pour Barman sur une machine virtuelle, nous avons besoin du logiciel suivant :

  • VirtualBox
  • Vagabond
  • Rubis>=1.9
  • Marionnette
  • bibliothécaire-marionnette

Vagabond

Vagrant est un gestionnaire de machines virtuelles, capable de prendre en charge de nombreux logiciels de virtualisation avec VirtualBox par défaut.

Nous installons VirtualBox de cette façon :

$ sudo apt-get install virtualbox virtualbox-dkms

La dernière version de Vagrant peut être téléchargée depuis le site et installée avec la commande :

$ sudo dpkg -i /path/to/vagrant_1.7.2_x86_64.deb

Rubis

Concernant Ruby, notre conseil est d'utiliser rbenv , qui crée un environnement de développement Ruby dans lequel spécifier la version pour l'utilisateur actuel, évitant ainsi de contaminer l'environnement système. Pour installer rbenv nous suggérons d'utiliser rbenv-installer (http://github.com/fesplugas/rbenv-installer).

Téléchargeons et exécutons le script :

$ curl https://raw.githubusercontent.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash

À la fin, le script vous demandera d'ajouter les lignes suivantes au ~/.bash_profile fichier :

export RBENV_ROOT="${HOME}/.rbenv"

if [ -d "${RBENV_ROOT}" ]; then
  export PATH="${RBENV_ROOT}/bin:${PATH}"
  eval "$(rbenv init -)"
fi

Nous devons maintenant recharger le ~/.bash_profile qui vient d'être modifié :

$ exec bash -l

À ce stade, nous installons localement une version Ruby (dans ce cas, 2.1.5) et configurons l'utilisateur pour qu'il exécute cette version plutôt que la version système :

$ rbenv install 2.1.5
$ rbenv global 2.1.5

Marionnette

Puppet est requis non seulement sur les machines virtuelles, mais également sur la machine qui les exécute. Par conséquent, nous devons installer le joyau Puppet.

$ gem install puppet

Bibliothécaire-marionnette

Enfin, librarian-puppet est un outil pour automatiser la gestion des modules Puppet. Comme Puppet, librarian-puppet peut être installé en tant que bijou :

$ gem install librarian-puppet

Vagabond :configuration

Maintenant que nous avons les dépendances en place, nous pouvons commencer à écrire les configurations Vagrant et Puppet pour notre système de sauvegarde.

Nous commençons par créer un répertoire de travail :

$ mkdir ~/vagrant_puppet_barman
$ cd ~/vagrant_puppet_barman

Vagrant a besoin que nous écrivions un fichier appelé Vagrantfile où il recherche la configuration des VM.

Le Vagrantfile suivant démarre deux machines virtuelles Ubuntu Trusty, appelées pg et backup , avec les adresses IP 192.168.56.221 et 192.168.56.222 . Sur les deux machines, le provisionnement sera effectué via un script shell en ligne.

Ce script lance puppet-bootstrap (http://github.com/hashicorp/puppet-bootstrap), un script qui installe et configure automatiquement Puppet sur différents types de machines. Comme il n'a pas besoin d'être exécuté plus d'une fois, un test a été inséré dans le script pour empêcher d'autres exécutions.

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

Afficher les VM

Nous avons défini deux machines virtuelles Ubuntu Trusty contenant Puppet. Ce n'est pas le dernier Vagrantfile mais permet déjà la création des deux machines. Si vous êtes curieux, il est possible de vérifier que les deux machines ont bien été créées avec la commande :

$ vagrant up

puis en vous connectant à l'aide des commandes suivantes :

$ vagrant ssh pg
$ vagrant ssh backup

Enfin, les machines peuvent être détruites avec :

$ vagrant destroy -f

Conclusion

Dans cette première partie du tutoriel, nous avons vu comment configurer les dépendances et nous nous sommes retrouvés avec les deux machines virtuelles sur lesquelles nous allons installer, via Puppet, PostgreSQL et Barman. La rédaction du manifeste Puppet pour l'installation proprement dite fera l'objet du prochain article.

Au revoir pour l'instant !