Comment démarrer rapidement un Centreon 21.04 avec Vagrant ?

Introduction

Comme publié sur notre blog, nous sommes très heureux de partager avec vous la sortie de la dernière version de Centreon 21.04. C'est la troisième fois que les équipes de Centreon publient une nouvelle version majeure depuis le début de la pandémie et de la situation sanitaire actuelle qui entraîne confinement et travail à distance.

Avant de rendre la version disponible à tous, nous devions tester et valider la nouvelle version avec toutes ses nouvelles fonctionnalités et modifications. Nous avons également demandé l'aide de notre communauté et certains membres ont accepté de tester les paquets en bêta. Nous les en remercions vivement ! 

Afin d'accélérer la mise en place d'un environnement Centreon à des fins de test pendant la campagne de validation QA, nous avons utilisé plusieurs solutions telles que des conteneurs Docker déployés sur Portainer, des VMs déployées sur AWS ou des VMs gérées localement par Vagrant

Dans cet article, nous vous proposons un petit guide rapide pour vous montrer comment démarrer rapidement un environnement Centreon 21.04 avec Vagrant.

Qu'est-ce que Vagrant ?

Selon leur documentation officielle, Vagrant est un outil permettant de créer et de gérer des environnements de machines virtuelles en un seul workflow. 

En d'autres termes, Vagrant est un outil qui vous permet de créer, de configurer et de gérer des machines virtuelles via l’utilisation d'une CLI (Command-Line Interface). Il s'agit donc d'une couche logiciel située entre un outil de virtualisation (tel que VirtualBox, Docker, Hyper-V) et une VM.

Vagrant utilise un concept de "box" qui est le format de paquetage des environnements Vagrant. Afin de gérer ces environnements, Vagrant utilise un Vagrantfile, un format standard pour décrire un environnement. Selon la documentation officielle, la fonction principale de Vagrantfile est de décrire le type de machine nécessaire à un projet, ainsi que la manière de configurer et de provisionner ces machines. 

Démarrage avec Vagrant

Prérequis

Avant de commencer, assurez-vous que vous disposez déjà d'une solution de virtualisation sur votre système. Nous supposerons ici que vous disposez déjà d'une installation fonctionnelle de VirtualBox, sinon veuillez suivre cette documentation.

Installation

Pour installer Vagrant, vous pouvez suivre sa documentation officielle ici.  

Création d'un projet

Ci-dessous, vous trouverez la façon la plus simple de démarrer une nouvelle VM sous CentOS 7 (cela génèrera automatiquement un fichier Vagrantfile que vous pourrez modifier plus tard en fonction de votre cas d'utilisation) :

 

cd ~ && mkdir vagrant-centos7
cd vagrant-centos7
vagrant init centos/7
vagrant up
vagrant ssh

Vous pouvez alors vous connecter, via SSH, dans votre nouvelle VM CentOS 7.

Provisioning

Vous avez peut-être remarqué que cette VM n'a pas de Centreon 21.04 pré-installé. Heureusement, Vagrant propose le provisionnement automatique qui peut être réalisé avec notre script unattended.sh disponible sur notre dépôt GitHub. Pour plus de simplicité nous allons fournir un fichier Vagrant complet ci-dessous 🙂

Quelques commandes utiles

Vous pouvez consulter la documentation du CLI pour obtenir plus d'informations. Ci-dessous quelques commandes utiles pour gérer votre VM.

Commande Action
vagrant status Avoir le statut actuel de votre box/VM
vagrant halt Arrêter de votre box/VM
vagrant up Démarrer box/VM
vagrant reload Recharger (arrêt/démarrage) de votre box/VM
vagrant provision Exécuter le provisioning
vagrant destroy Détruire votre box/VM
vagrant save Sauvegarder un snapshot de votre box/VM
vagrant restore Restaurer un snapshot de votre box/VM
vagrant ssh Établir une connexion, via SSH, à votre box/VM

Démarrer un serveur Centreon 21.04 central sur une VM CentOS 7

En exécutant les instructions suivantes, vous serez en mesure d'initialiser une nouvelle VM CentOS 7 avec un serveur Central Centreon 21.04 :

cd ~ && mkdir vagrant-centreon
cd vagrant-centreon

cat <<EOF > Vagrantfile
#Dynamically generated hostname
HOSTNAME = "centos7." + ENV["USER"] + "." + Time.new.strftime("%Y%m%d.%H%M%S")

#Private IP address
IP = 192.168.150.2
Vagrant.configure("2") do |config|

  # type of the box : CentOS 7 here
  config.vm.box = "centos/7"
  config.vm.network "private_network", ip: "#{IP}"
  config.vm.hostname = "#{HOSTNAME}"

  # allocated resources to the VM
  config.vm.provider "virtualbox" do |vm|
   vm.check_guest_additions = false
   vm.memory = 1024
   vm.cpus = 1
  end

  config.vm.provision "shell",
   path: "https://raw.githubusercontent.com/centreon/centreon/21.04.x/unattended.sh",
   env: {
        "ENV_CENTREON_OPERATION" => "install",
        "ENV_CENTREON_REPO" => "stable",
        "ENV_CENTRAL_IP" => "#{IP}",
        "ENV_CENTREON_TOPOLOGY" => "central",
        "ENV_CENTREON_ADMIN_PASSWD" => "centreon",
        "ENV_MARIADB_CENTREON_PASSWD" => "centreon",
        "ENV_WIZARD_AUTOPLAY" => "true",
        }

end
EOF

vagrant up

Quelques minutes plus tard, votre VM est initialisée et vous pourrez accéder à l'interface web de Centreon à l'adresse http://192.168.150.2/centreon avec les informations d'identification suivantes : admin/centreon.

Un seul fichier Vagrant pour les gérer tous

Si vous voulez gérer plusieurs VMs à la fois, vous pouvez ajouter des instructions (pour gérer une VM) dans le même fichier Vagrantfile comme ci-dessous.

ENV["LC_ALL"] = "en_US.UTF-8"

r = Random.new
random_id = r.rand (1..1000)

repos = "stable"

#define your desired environment here
hosts = {
 "poller-1" => { :type => "poller", :ip => "192.168.200.100", :cpus => 1, :mem => 256 },
 "poller-2" => { :type => "poller", :ip => "192.168.200.101", :cpus => 1, :mem => 256 },
 "central" => { :type => "central", :ip => "192.168.200.10", :cpus => 2, :mem => 1024 },
}

os = "oracle8"

Vagrant.configure("2") do |config|
 hosts.each_with_index do |(hostname, info), index|
  config.vm.define hostname do |instance|
     instance_id = "#{os}-#{hostname}-#{random_id}-" + ENV["USER"]

     # type of the box : oracle linux 8 here
     config.vm.box = "oraclelinux/8"
     config.vm.box_url = "https://oracle.github.io/vagrant-projects/boxes/oraclelinux/8.json"

     instance.vm.hostname = "#{instance_id}"
     instance.vm.network "private_network", ip: "#{info[:ip]}"
     instance.vm.provider "virtualbox" do |vm|
       vm.name = "#{instance_id}"
       vm.memory = "#{info[:mem]}"
       vm.cpus = "#{info[:cpus]}"
     end #end of provider

     instance.vm.provision "shell",
     path: "https://raw.githubusercontent.com/centreon/centreon/21.04.x/unattended.sh",
     env: { "ENV_CENTRAL_IP" => "#{info[:ip]}",

            "ENV_CENTREON_TOPOLOGY" => "#{info[:type]}",
            "ENV_CENTREON_OPERATION" => "install",
            "ENV_CENTREON_REPO" => "#{repos}",
            "ENV_CENTREON_ADMIN_PASSWD" => "centreon",
            "ENV_MARIADB_CENTREON_PASSWD" => "centreon",
            "ENV_WIZARD_AUTOPLAY" => "true" }
   end #end of config
 end #end of hosts
end

Le fichier Vangrantfile créera plusieurs VMs que vous pourrez utiliser pour tester un environnement distribué : 
  • 2 Pollers avec la dernière version de Centreon 21.04 : poller-1 et poller-2
  • 1 Central avec la dernière version de Centreon 21.04 : central 

Vous pouvez toujours utiliser la commande vagrant habituelle pour gérer chaque VM individuellement comme suit :

vagrant status
Current machine states:

poller-1                  running (virtualbox)
poller-2                  running (virtualbox)
central                   running (virtualbox)

This environment represents multiple VMs. The VMs are all listed above with their current state. For more information about a specific VM, run `vagrant status NAME`.

Quelques mots sur les variables d'environnement dans le fichier Vagrantfile

Comme vous pouvez le constater, le provisionnement consiste à exécuter le script unattended.sh exactement comme vous pourriez le faire en suivant les instructions disponibles sur notre site download.centreon.com. Cette exécution du script va dépendre des paramètres donnés en entrée. Dans le cas de l'utilisation de Vagrant, nous pouvons définir ces paramètres comme variables d'environnement pour le provisionnement. 

Variable Objectif Valeur proposée
ENV_CENTREON_OPERATION

Type d'opération qui sera exécutée : installation ou mise à niveau. 

Actuellement, seule l'opération "install" (installation à partir de zéro) est supportée.

install
ENV_CENTREON_TOPOLOGY Type de serveur Centreon qui sera installé : un serveur central ou un poller. central ou poller
ENV_CENTREON_REPO

Les dépôts yum de Centreon qui seront utilisés pour l'opération demandée : unstable, testing, stable

Si vous souhaitez tester des paquets bêta ou des versions en cours de développement, vous pouvez définir "unstable,testing".

stable
ENV_CENTRAL_IP Adresse IP de la VM, utile dans le cas où vous voulez tester avec un réseau privé 192.168.150.2 (par exemple)
ENV_CENTREON_ADMIN_PASSWD

Mot de passe de l'utilisateur administrateur par défaut de Centreon. 

Ces informations d'identification seront nécessaires pour la connexion à l’interface Web.

centreon
ENV_MARIADB_CENTREON_PASSWD

Mot de passe de l'utilisateur centreon par défaut de MariaDB. 

Ces informations d'identification seront utilisées par Centreon pour la connexion au serveur MariaDB

centreon
ENV_WIZARD_AUTOPLAY Si cette option est activée (définie sur "true"), le script exécutera automatiquement les étapes d'installation de la partie Web. true

Et ensuite ?

Comme vous pouvez le constater, Vagrant permet à notre équipe d'initialiser très rapidement un environnement local. En effet, en quelques minutes, vous pouvez disposer d'un environnement avec une instance Centreon prête à l'emploi sur CentOS 7 ou Oracle Linux 8. Pour votre information, à titre de test, nous avons également utilisé un fichier Vagrantfile pour une box RHEL 8 avec un mécanisme d'enregistrement automatique des abonnements. Nous travaillons maintenant à l'étape suivante en construisant des box Centreon officielles que nous fournirons directement sur Vagrant Cloud. Nous vous tiendrons au courant, restez connecté !


 

Hung Bui

Hung Bui

Chief Technology Officer, Centreon

Hung Bui est Directeur Technique chez Centreon et dirige la R&D de l’entreprise. Dans ce cadre, Hung supervise la stratégie technologique et l’ingénierie des produits, actuellement axée sur des innovations telles que AIOps, qui combine l’intelligence artificielle, le Machine Learning, l’analyse et d’autres technologies avancées pour améliorer les opérations informatiques. Avant de rejoindre Centreon, Hung a occupé un poste de responsable technique ie chez FastConnect, une entreprise de cloud computing axée sur la performance. Auparavant, il a travaillé dans le domaine des PKI (Public Key Infrastructure) et des solutions de signature numérique chez divers éditeurs de logiciels. Hung est titulaire d’un diplôme d’ingénieur en informatique décerné par l’ESIEE Paris.

Tags :