Mes outils quotidiens pour du devsecops (et pas que...)
Besoin de vous constituer une palette d'outil ? Je vous liste ce que j'utilise au quotidien, sans fioritures.
Bienvenue dans une partie des coulisses de mon environnement, un écosystème dans lequel l'innovation s'unit à la rigueur pour façonner une infrastructure agile et performante. Au cœur de cet univers, des éditeurs de code, des gestionnaires de version et des orchestrateurs de conteneurs convergent pour créer une synergie sans faille.
Dans cet article, je vous invite à explorer les méandres d'une palette d'outils DevSecOps, où chaque ligne de commande est une étape vers l'excellence opérationnelle.
Mes 12 principaux outils
- VS Code : Un éditeur de code polyvalent et populaire, offrant des fonctionnalités étendues et des extensions pour un développement efficace. Il m'arrive d'utiliser un simple notepad ou un Nano.
- Git : Un système de contrôle de version indispensable pour notamment la gestion du code source, facilitant le suivi des modifications et la collaboration. Bien que travaillant parfois seul sur des projets, je m'oblige à poursuivre une certaine rigueur.
- Terraform : Un outil d'infrastructure en tant que code (IaC) pour définir et provisionner des ressources de manière reproductible. Couplé dans un dépôt de type git, il est possible d'itérer et suivre les modifications aisément.
- Ansible : Un outil de gestion de configuration et d'automatisation pour déployer des configurations. Que ce soit pour de simples installations ou des configurations de cluster, c'est devenu un outil indispensable !
- Docker et Podman : Des outils de gestion de conteneurs pour empaqueter des applications et leurs dépendances dans des environnements isolés. Ce sont des alliés pour tester rapidement et à grande échelle sans trop de risque sur n'importe quelle machine.
- Vagrant : Un outil pour la création et la gestion d'environnements de développement, configurant facilement des machines virtuelles pour divers projets. Je l'utilise pour créer des VM disposant d'outils et des configurations sans devoir les faire à postériori.
- Packer : Utilisé pour créer des images machine (VM) pré-configurées pour des déploiements reproductibles. Je m'en sers notamment avec Proxmox et VirtualBox pour ne plus perdre de temps à créer un modèle (souvent appelé Golden Image)
- Proxmox VE : Un hyperviseur libre et gratuit offrant des fonctionnalités de gestion complètes pour les machines virtuelles et les conteneurs. Un must-have dans un homelab.
- RKE2 (Kubernetes) : RKE2 est un gestionnaire de cluster Kubernetes disposant de base d'une configuration renforcée. Kubernetes est une plateforme d'orchestration de conteneurs pour le déploiement distribué (et attiser des débats sur X).
- Des linters : Ce sont des outils pour contrôler et dénoncer les erreurs de syntaxe dans les fichiers. Pour ma part, les linters que j'utilise sont "Yamllint" et "ansible-lint".
- Le langage Markdown : Dans une démarche d'ouverture et de compatibilité sur le long terme, je stocke mes documentations dans un format texte exploitable et lisible facilement, partout et par quiconque. La quasi-totalité de mes documents est saisie en Markdown.
- Mon imagination : Les outils informatiques sont une chose, l'esprit en est un autre. Que pourrait-on faire sans imagination ? à mon avis, rien. Ayez un esprit critique, posez-vous des questions, cherchez plus loin que ce qu'on vous livre sur un papier.
Il y a d'autres outils qui gravitent autour de ceux cités ci-dessus, je pense notamment aux terminaux, en passant par Nano ou encore par des IA comme ChatGPT pour corriger quelques bouts de code.
D'une manière générale, je n'utilise que très peu de plugin dans mes outils. Je préfère les versions et configurations d'origine, disposant du minimum nécessaire pour faire fonctionner les services. C'est aussi une habitude pour maîtriser les outils sans être dépendant d'un plugin qui ferait le travail à ma place, sans me laisser la connaissance.
Tout comme je n'utilise pas d'alias dans mes terminaux, j'écris et exécute au maximum les commandes dans leur format plein. Je pense particulièrement aux commandes kubectl
, souvent tronquées via un alias k=kubectl
ou encore kgp=kubectl get pod
... C'est plus long à écrire, mais je sais ce qu'il se passe.
Addendum pour VS Code
J'utilise quelques plugins génériques pour parfaire l'outil et me faciliter certaines tâches. Voici la liste :
- "Ansible" par Red Hat et "Ansible Core Snippets" par Stéphane Robert
- "GitLens" par GitKraken
- "Sort Lines" par Daniel Imms
Les quelques plugins sont légers et n'alourdissent pas cet éditeur de code déjà bien (trop) gourmand en ressources.