Ma configuration DEVOPS 2022
Devant refaire son installation, je profite de l’occasion pour vous partager ma configuration devops 2022.
On retrouve dessus les outils devops ce que j’ai pu vous faire découvrir ces derniers temps. Au menu :
- Docker accompagné de docker-compose, hadolint, trivy et buildx
- Vagrant/Libvirt pour jouer toutes les démos que je partage
- Terraform et quelques outils : tfsec (je dois compléter)
- Ansible accompagné d’ansible-lint, ansible-runner, ansible-builder, jc , ansible-navigator et la cli AWX/Tower
- Kind et Minikube pour installer un cluster Kubernetes rapidement. On retrouve également toute une série d’outils: regula, polaris, popeye, k9s, kubens, kubectx, stern, …
- Les cli pour gérer vos repositories sous gitlab et github : gh et glab
- Les cli des clouders : AWX, GCP et Azure
- Quelques outils : arkade, lastversion, asdf le choco du devops, yq et jq
J’ai fait le choix d’utiliser comme base la dernière distribution Ubuntu disponible, la 2204.
MAJ : Les distributions Fedora et ArchLinux sont prise en charge. D’autres vont suivre.
Installation de la configuration Devops 2022
J’ai fait le choix d’utiliser hyper-v, car pour moi, c’est l’hyperviseur qui offre les meilleures performances sur une machine windows.
Voici le Vagrantfile. Vous pouvez le télécharger à cette adresse ↗ :
# -*- mode: ruby -*-# vi: set ft=ruby :
$distrib = ENV['DISTRIB'] || 'ubuntu2204'$script_name = "scripts/%s.sh" % $distrib
Vagrant.configure("2") do |config| config.vm.box = "generic/%s" % $distrib config.vm.define 'devbox' do |node| node.vm.hostname = 'devbox' end config.vm.provider "hyperv" do |hyperv| hyperv.vmname = "devbox" hyperv.cpus = 6 hyperv.memory = 4096 hyperv.maxmemory = 8192 # allow nested virtualization hyperv.enable_virtualization_extensions = true hyperv.linked_clone = true end config.vm.provider "libvirt" do |libvirt| libvirt.memory = 4096 libvirt.cpus = 6 end config.vm.provision "shell", path: $script_name config.vm.provision "shell", path: "scripts/install-ansible.sh", privileged: false config.vm.synced_folder ".", "/vagrant", disabled: trueend
Quelques explications :
- J’utilise une box generic qui fournit une image hyper-v.
- La configuration retenue est de 6 CPU et 4096Mo de mémoire avec un max fixé 8192Mo. Vous pouvez adapter ces valeurs à votre configuration.
- J’active directement la virtualisation imbriquée afin de pouvoir utiliser Qemu.
- Je joue deux scripts :
- un avec le compte root qui installe git et python3 pour pouvoir installer ansible pour installer le reste.
- un second avec le compte vagrant pour lancer toutes les installations avec ansible.
Pour lancer l’installation :
- Il faut installer vagrant sur le poste Windows :
choco install vagrant
- Il faut activer hyper-v. Dans une fenêtre PowerShell avec les droits admin :
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
- Ensuite, il faut copier le Vagrantfile et depuis une fenêtre PowerShell :
vagrant up --provider hyperv
Pour installer Fedora 36 il suffit d’ajouter la variable d’environnement :
DISTRIB=fedora36 vagrant up --provider hyperv
Une fois la VM provisionnée je vous conseille d’installer Vscode pour y accéder avec les extensions Remote Dev de Microsoft.
choco install vscode
Pour se connecter il faut récupérer les paramètres de connexion :
vagrant ssh-config
Host devboxes HostName 172.22.32.166 User vagrant Port 22 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile D:/Projets/arch/.vagrant/machines/devboxes/hyperv/private_key IdentitiesOnly yes LogLevel FATAL
Recopier ces lignes en remplaçant l’adresse IP par devboxes.mshome.net
dans le
fichier ~/.ssh/config
dans les paramètres de vscode (image ci-dessous). Cela
vous évitera de devoir changer cette adresse à chaque démarrage de votre machine
windows. Plus d’infos sur les extensions remote
development.
Installation sur une machine existante
Pour le moment je gère les distributions :
- Ubuntu 22.04
- Fedora 36
- Arch Linux
Si vous avez la chance de pouvoir utiliser un poste Linux directement (quelle chance), alors il suffit de cloner le projet et d’adapter le playbook (chgt chemin user) à votre besoin :
Installation sur Ubuntu 22.04
apt update -yapt dist-upgrade -yapt install python3-pip git -ypip install ansiblegit clone https://github.com/stephrobert/my-vagrant-box.gitcd my-vagrant-boxansible-playbook provision.yml
Installation sur Fedora 36
dnf update -ydnf install python3-pip git -ypip install ansiblegit clone https://github.com/stephrobert/my-vagrant-box.gitcd my-vagrant-boxansible-playbook provision.yml
Installation sur Arch Linux
pacman -S --noconfirm python-pip git -ypip install ansiblegit clone https://github.com/stephrobert/my-vagrant-box.gitcd my-vagrant-boxansible-playbook provision.yml
Erreurs connues
Dans le cas où vous obtenez un message d’erreur du type, sur un poste linux :
error: internal error Network is already in use by interface xxxx
Comme indiqué cela indique que le réseau 192.168.121.0
est déjà utilisé (par
défault). Pour éviter ce genre d’erreur il faut ajouter les directives suivantes
à votre Vagrantfile
en utilisant un range réseau disponible par exemple
10.11.12.0/24
:
config.vm.provider "libvirt" do |v| v.management_network_name = "my_network" v.management_network_address = "10.11.12.0/24"end
Conclusion
Ce n’est pas encore parfait puisque non générique, mais je vais y travailler avec la création de rôles voir d’un module asdf.
Laissez-moi en commentaires vos remarques !!