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 !