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 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.