Vagrant – Introduction à Ansible

Une fois l’OS installé et mis en place, on va pouvoir passer à l’installation des différentes briques qui vont constituer la VM dans son état final.

Installation de Java 8

Depuis Vagrant, il est possible d’envoyer des lignes de commande à la VM de manière à installer certains éléments simples.

Par exemple, pour installer OpenJDK 8, il faut ajouter les lignes suivantes au Vagrantfile :

  #Install JDK8
  config.vm.provision :shell, :inline => "apt-get -qy update"
  config.vm.provision :shell, :inline => "apt-get -qy install openjdk-8-jdk"

 

Il est également possible de passer par un provisionneur qui lui est dédié à cette tâche d’installation. Dans notre cas, nous allons utiliser Ansible (https://www.ansible.com/ ). Cet outil utilise une arborescence particulière et un ensemble de fichiers YAML pour arriver à ses fins.

Pour initialiser l’utilisation d’Ansible, il faut ajouter les lignes suivantes au Vagrantfile :

         #Installation et lancement de Ansible
         provisioner = Vagrant::Util::Platform.windows? ? :ansible_local : :ansible
         config.vm.provision provisioner do |ansible|
                        ansible.playbook = "FirstVM.yml"
                        ansible.install_mode = :pip
                        ansible.version = "latest"
                        ansible.limit = "all"
         end

 

Nous définissons le nom d’un « playbook » appelé ici FirstVM.yml.

C’est dans ce fichier que nous allons définir les briques logicielles à installer. Dans ce fichier, on trouve le code suivant :

---
- name: Tuto Ansible
  hosts: all
  become: true
  roles:
    - role: java
...

Hosts donne la liste des machines de l’infrastructure qui pourront être prises pour cible.

Become permet de spécifier que certaines commandes seront lancées en tant qu’un autre user que le user vagrant standard.

Enfin roles permet de lister l’ensemble des rôles qui doivent être lancés successivement pour atteindre notre objectif.

Dans notre cas, pour le moment, nous allons lancer l’installation de Java.

Dans le répertoire racine de notre projet Vagrant, il faut créer un sous-répertoire « roles » qui va contenir la définition de chacun des rôles à traiter.

Dans ce répertoire « roles », il faut créer un sous-répertoire par rôle, chacun portant le nom défini dans le playbook.

Nous nous retrouvons alors avec l’arborescence suivante : FirstVM è roles è java

Dans le répertoire java, il faut alors définir un sous-répertoire « tasks » qui va contenir un fichier main.yml.

Le contenu de ce fichier est le suivant :

---
- name: Install OpenJDK 8
  apt:
    name: openjdk-8-jdk
    state: latest
    update_cache: yes
...

La ligne name est informative, elle sera affichée lors de l’initialisation de la VM.

La ligne « apt » indique que nous allons utiliser le gestionnaire de paquets pour installer un logiciel. Le nom du package est précisé sur la ligne « name ».

« state » indique quelle version nous souhaitons installer. Dans notre cas, la plus récente.

« update » indique qu’il faut lancer une commande apt-get update avant d’installer le logiciel.

Il faut faire très attention à l’indentation dans le fichier, elle est importante et permet au parser de comprendre l’enchaînement des actions à effectuer.

Une fois tous ces points réalisés, si la VM est en train de tourner, lancer la commande vagrant provision permettra de prendre ces modifications en compte. Sinon, un vagrant up va relancer la machine et installer ces nouveaux éléments.

L’installation d’une brique peut prendre un certain temps en fonction de la taille du package à télécharger. Nous verrons un peu plus tard comment accélérer ça en stockant les packages en local.

Une fois la VM mise à jour, se connecter en ssh (vagrant ssh) puis vérifier que java a correctement été installé avec la commande java -version.

Pour info, tous les fichiers utilisés dans ce tutoriel sont disponibles sur Github :

https://github.com/bdauvissat/ELKVagrantAnsible

A propos Benjamin

Développeur Java, évangéliste du logiciel libre auprès de mes proches, j'essaie de concilier tout ça avec la curiosité qui m'a toujours fait avancer.
Ce contenu a été publié dans Ansible, Elasticsearch, Industrialisation, Kibana, Vagrant, avec comme mot(s)-clé(s) , , , , . Vous pouvez le mettre en favoris avec ce permalien.

2 réponses à Vagrant – Introduction à Ansible

  1. Alex dP dit :

    Ca a l’air bien dis donc. Je crois que je vais me laisser tenter par un maquettage.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.