Road to DevOps
5 min read

Road to DevOps

Road to DevOps

Cet article a pour but de détailler mon cheminement quant à mon apprentissage des technologies en lien avec le DevOps. Je partagerais donc avec vous les différentes étapes qui m'amènent à me former sur le sujet. Cet article servira de squelette et vous redirigera vers les différents articles abordant les technologies utilisé au cours de ce voyage vers la maîtrise de la philosophie DevOps.

Qu'est-ce que le DevOps?

Le DevOps est avant tout un mouvement, une philosophie en ingénierie informatique qui unifie le développement logiciel (dev) avec l'administration système et réseaux (ops).

Il est aujourd'hui, de par sa nature compliquée de définir avec exactitude ce que représente le DevOps tant celui-ci se transforme à mesure que de nouvelles technologies s'offrent à nous.

Cependant, si nous devions définir le DevOps dans sa vision la plus globale, celui-ci tendrait vers la promotion de l'automatisation et du monitoring de toutes les étapes de la création d'un logiciel. En l'occurrence, nous pourrions découper ces étapes en 5.

drawio-4-

Chaque étape pourrait être divisée en sous-catégories et forme dans sa globalité, la chaîne du CI/CD pour Continuous Intégration/ Continuous Deployment (intégration et Déploiement Continue) ou plus communément appeler un Pipeline.

Si l'on devait résumer en d'autres mots ce qu'est le DevOps et son pipeline nous pourrions dire de par l'automatisation et la standardisation qu'il apporte, qu'il s'agit de l'entrée dans l'aire de l'industrialisation de l'IT, une aire ou la création artisanal d'une infrastructure s'effectue de manière industrielle, comme le furent les industries Ford à l'époque.

Pour qui?

Le DevOps s'adresse aussi bien aux développeurs soucieux d'en comprendre plus sur la chaîne de développement d'une application en adoptant une vision plus globale du SI que des administrateurs féru d'automatisation et de nouvelles technologies.

Les méthodes

Scrum

Scrum est un méthode agile destiné à contrôler les projets informatiques, facilitant la communication et les virages en temps opportun. Aujourd'hui, c'est une méthode privilégié en entreprise afin d'adopter l'approche dite "agile". Forte de son succès dans le monde de l'informatique, elle s'impose aujourd'hui comme une nouvelle organisation d'entreprise en « mode projet ».

Artboard-1-1

Agile

La méthode agile est quant à elle basé sur le manifest agile qui prone quatre valeurs fondamentales : l’individu et interactions plutôt que processus. Les fonctionnalités opérationnelles plutôt que documentation exhaustive. La Collaboration avec le client plutôt que la contractualisation des relations. L’Acceptation du changement plutôt que la conformité aux plans.

schemaagile

Boite à outils

Un administrateur système DevOps n'est pas nécessairement obligé de connaitre chaques technologies sur le bout des doigts, il doit avant tout être capable de piocher dans une boite à outil et connaitre à minima un outil pour travailler sur chaques étapes du pipeline devops. En l'occurence, nous pourrions définir qu'un DevOps à besoins de maitriser sommairement des outils comme:

  • un orchestrateur
  • un ordonnanceur de tâches
  • des outils de gestion de dépôts
  • des outils de test unitaires
  • des outils de monitoring
  • avoir des connaissances en virtualisation (conteneurs, cloud, hyperviseur...)
  • posséder des notions de base de données

Dans notre cas, si nous reprenons notre shéma de pipeline, voici les outils sur lesquelles nous allons nous concentrer durant ce tutoriel.

drawio-5-

(Des outils se rajouterons à ce shéma au fur à mesure du temps)

Git flow

Il est important de comprendre la notion de git flow car celle-ci va définir les différents serveurs qui vont régir notre pipeline devops, notamment via un serveur de dev, de test, et de production.

2a5d5c1d5f42a3d0fd712ae7e4b23824

Je vous invite à vous intéresser à git, notamment au travers du sheet cheat git en lien ci-dessous qui ne rentre pas dans les details de comment fonctionne git mais vous présente sommairement les différentes commandes et leur utilitée.

Cheat sheet - Git
W = working zone;S = staging zone;C = commit zone;B(*) = Branche *;H(*) = Header *; Initialisation Configuration $ git config --global user.email “email@domain.com” $ git config --global user.name “Denis Brogniart” Working zone Demarrer un dépot GIT #W $ git init Cloner un dépot…

Infrastructure

Notre intrastructure sera composé de 6 serveurs:

  • Serveur jenkins : jenkins / docker / docker-compose / ansible
  • Serveur gitlab
  • Serveur BDD : postgresql
  • Serveur dev : debian 11
  • Serveur stage : debian 11
  • Serveur prod : debian 11

drawio-8-

Installation de l'infrastructure avec Vagrant

Vagrant est un logiciel libre et open-source permmant la création et la configuration d'envrionnements de développement virtuels. En l'occurence, celui-ci nous servira à generer les différentes VM (sur VirtualBox) afin de mettre en place l'infrastructure qui recevra notre pipeline.

Installation de virtualbox
sudo apt install virtualbox

Installation de vagrant

wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list

sudo apt update && sudo apt install vagrant

Commandes à retenir:

  • vagrant up : télécharge et lance l'image
  • vagrant up : telecharge et lance l'image définit dans le vagrant file.
  • vagrant snapshot push : fait un snapshot de la VM
  • vagrant snapshot list : listes les snapshots
  • vagrant snapshot pop : charge le snapshot
  • vagrant halt : arrête la ou les machines
  • vagrant destroy : détruit la ou les machines
  • vagrant status : listes les machines
  • cat Vagrantfile | grep -ri "ip" : liste les ips des machines
  • Documentation : https://www.vagrantup.com/docs

Installation des VMs

  1. Serveur Jenkins, Dev, Stage, Prod:
    (Git) Configuration Vagrant - Serveur Jenkins, Dev, Stage, Prod
  2. Serveur DDB