Introduction

L’objectif était de déployer un agent d’une application de sécurité sur l’ensemble du parc de serveurs Linux. Il est toujours utile d’être capable de déployer un package et de l’installer sur tous les serveurs distants en même temps avec une configuration uniformisé. C’est ce que nous permet de faire Ansible.

Nous n’allons pas voir comment déployer cette fameuse application de sécurité dont je tairais le nom mais comment déployer n’importe quel package applicatif, l’installer et même configurer l’application.

Notre rôle fonctionnera en 3 étapes :

  • Téléchargement et installation du package de l’application via le module yum
  • Déploiement du template de configuration
  • Redémarrage du service

Arborescence

L’arboresence du rôle que nous allons faire est constituer de 3 répertoires.

  • Le répertoire files constitué du fichier de configuration que nous allons copier sur le serveur distant.
  • Le répertoire tasks constitué du fichier main.yml qui contient les différentes tâches d’installation, de déploiement du fichier de configuration et du redémarrage du service nouvellement installé.
  • Le répertoire vars constitué du fichier main.yml qui contient les différentes variables utilisées dans nos autres fichiers de configuration tel que l’url du fichier RPM à télécharger sur les serveurs distant, le chemin absolue du fichier de configuration sur nos serveurs ainsi que le nom du service à redémarrer.

Arborescence :

  • files
    • file.conf.j2
  • tasks
    • main.yml
  • vars
    • main.yml

Fichier de configuration Jinja

Le fichier de configuration files/file.conf.j2 est un fichier de template Jinja2. Cela nous permet d’appeler des variables du fichier vars/main.yml directement dans notre fichier de configuration. On peut donc générer un fichier de configuration pour chaque serveur tout en prenant la même base de template par exemple en insérant des variables prédéfinis dans Ansible tel que l’adresse IP ou le nom du serveur distant sur lequel sera déployé.

Fichier de tâches

  • Installation du RPM
  • Copie du fichier de configuration
  • Redémarrage du service
---
# Author: dacruzalexy@gmail.com
- name: Installation du RPM
  yum: name={{rpm_package_url}}

- name: Copie du fichier de configuration {{conf_file}}
  template: src="file.conf.j2" dest="{{conf_file}}" owner="root" group="root" mode="u=rw,g=r,o=r"

- name: Restart du service {{servicename}}
  service: name="{{servicename}}" state="restarted" enabled="yes"

Fichier variables

Ces variables seront utilisés dans le fichier de tâches. Si vous ajouter d’autres variables dans ce fichier, elles seront aussi disponible dans votre fichier de template pour la configuration de votre application.

Cela peut-être utile pour uniformiser la configuration de votre application si vous avez plusieurs nœuds dans un cluster applicatif.

VariableValeur
rpm_package_urlhttps://dl.influxdata.com/telegraf/releases/telegraf-1.13.3-1.x86_64.rpm
conf_file/etc/influxdb/influxdb.conf
servicenameinfluxdb
---
# Author: dacruzalexy@gmail.com
rpm_package_url: "https://dl.influxdata.com/telegraf/releases/telegraf-1.13.3-1.x86_64.rpm" #example
conf_file: "/etc/influxdb/influxdb.conf"
servicename: "influxdb"

Téléchargement

Vous pouvez télécharger ce rôle Ansible sur mon Github à cette adresse : https://github.com/geomtech/rpm-deployment-ansible
Ce qui vous permettra de tester, modifier et améliorer ce rôle d’exemple, où même d’en faire un fork pour vos rôles qui peuvent prendre celui-ci comme base de modèle.


Alexy DA CRUZ

Administrateur systèmes depuis maintenant plus d'un an. Passionné par le développement, j'écris des articles sur mon portfolio.

0 commentaire

Laisser un commentaire

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