Aller au contenu principal

DevOpsBoxes une boxe vagrant pour DevOps

· 3 minutes de lecture
Stéphane ROBERT
Consultant DevOps

Je continue le développement de ma configuration Devops 2022 et je viens de franchir le pas de la publication de ma première box sur le site vagrantUp.

Pour rappel, cette boxe vagrant est construite sur la base d'une Ubuntu 21.10 et on y trouve préinstallé :

  • Python v3.9.7
  • Docker version 20.10.14, build a224086
  • Vagrant 2.2.19
  • Libvirt / KVM / QEMU
  • Arkade 0.8.14

Pour le moment, je n'ai pas encore intégré asdf mais comme le playbook actuel le fait, il est installé.

Je viens de la publier dans sa version 0.1.0

Build de la boxes avec packer

Je ne suis pas parti d'une feuille vierge puisque je me suis largement inspiré de celle fournie sur le nom generic.

Si vous voulez reconstruire en local (il faudra être très patient !)

git clone git@gitlab.com:b4288/devopsboxes.git
packer build -force .\devopsboxes-hyperv.json
cd output
vagrant box add .\devopsboxes-ubuntu2110-hyperv-0.1.0.box --name devopsboxes/ubuntu2110 --force

Installation de la configuration Devops 2022

Le Vagrantfile se trouve dans le répertoire provision :

# -*- mode: ruby -*-
# vi: set ft=ruby :

$script = <<-SCRIPT
echo I am provisioning...
apt update -y
apt dist-upgrade -y
SCRIPT

$script2 = <<-SCRIPT
pip install ansible --user
git config --global user.email "adresse@gmail.com"
git config --global user.name "Stephane ROBERT"
git config --global core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
git clone https://github.com/stephrobert/my-vagrant-box.git
/home/vagrant/.local/bin/ansible-playbook /home/vagrant/my-vagrant-box/provision.yml
SCRIPT

Vagrant.configure("2") do |config|
    config.vm.box = "devopsboxes/ubuntu2110"
    config.vm.define 'devopsbox' do |node|
        node.vm.hostname = 'devopsbox'
    end
    config.vm.provider "hyperv" do |hyperv|
        hyperv.vmname = "devopsbox"
        hyperv.cpus = 3
        hyperv.memory = 2048
        hyperv.maxmemory = 2048
        # allow nested virtualization
        hyperv.enable_virtualization_extensions = true
        hyperv.linked_clone = true
    end
  config.vm.provision "shell", inline: $script
  config.vm.provision "shell", inline: $script2, privileged: false
  config.vm.synced_folder ".", "/vagrant", disabled: true
end

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

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

Conclusion

Je sais que j'ai encore du travail et sans vos commentaires, j'aurais bien du mal.