L’objectif principal de ce projet est de vous aider à monter en compétences sur les outils que l’on utilise le plus souvent dans la mise en place d’une démarche Devops :
- Docker pour construire les images qui seront utilisé dans les pipelines CI/CD
- Vagrant pour instancier sur votre PC de travail des stacks complètes sur des machines virtualisées en utilisant libvirt.
- Terraform pour créer les machines virtuelles sur les mini-pc et cela par la suite chez des clouders
- GitLab et GitHub pour faire tourner les pipelines CI/CD
- Ansible pour configurer les machines virtuelles
- Kubernetes pour apprendre à installer et à gérer des applications Cloud Natives.
- Prometheus pour le monitoring.
- D'autres outils au besoin.
Mon Home Lab Devops se compose actuellement de :
- deux mini-pc :
- un switch Ethernet 24 ports POE
Sur le premier mini-pc tourne :
- un k3s mono noeud hébergeant les runnrs gitlab et Ansible AWX
- un serveur NFS pour y déposer les données persistantes
Sur le second :
- Libvirt est activé et prêt à héberger des applications à la demande du type : Nexus Repository Manager, Rundeck (en cours d'écriture). D'autres vont suivre. Le tout sera instancié avec du Terraform.
J'ai fait l'installation de la version server d'Ubuntu 21.10 avec juste le package OpenSSH (synchro des clés depuis mon compte github). J'ai autorisé le compte admuser, créé pendant l'installation, à utiliser sudo sans mot de passe.
Pour simplifier la gestion des machines :
- Sur ma box internet, j'ai alloué des baux statiques.
- J'ai ajouté au fichier /etc/hosts de la machine depuis laquelle je fais l'administration les adresses IP.
Clonez ce repository sur votre machine servant à l'installation.
git clone https://gitlab.com/b4288/infra-as-code-homelab.git
Avant de passer à l'installation il faut générer des certificats avec mkcert
asdf plugin add mkcert https://github.com/salasrod/asdf-mkcert.git
asdf install mkcert latest
asdf global mkcert latest
mkcert -install
cd certificats mkcert 'devbox1.robert.local' localhost 127.0.0.1 ::1 mkcert 'devbox2.robert.local' localhost 127.0.0.1 ::1
Une fois les machines provisionnées les installations sont faites avec
**Ansible** :
```bash
## Installation des outils de base
ansible-playbook -i inventory playbooks/install.yml
## Installation de Kubernetes et Libvirt
ansible-playbook -i inventory playbooks/provision.yml
Avant, il faudra certainement adapter certaines choses dans les playbooks ou dans l'inventaire.
Vous pouvez aussi utiliser le Vagrantfile pour tester le tout avant :
vagrant up
# On utilise l'inventaire généré par vagrant
ansible-playbook -i ./.vagrant/provisioners/ansible/inventory playbooks/install.yml
L'automatisation de tout le reste AWX, Gitlab runners, Nexus, Rundeck, ...