Quick & Dirty Vagrantfile

Ich benötige oftmals mal schnell einen Host, um diverse Dinge zu testen. Aktuell möchte ich Ansible-Playbooks testen und auf die eigenen Ansprüche anpassen. Natürlich soll dabei der grundsätzliche Aufwand, eine entsprechende Maschine zu starten, so klein wie möglich gehalten werden.

Eine recht einfache und schnelle Methode ist die Nutzung von Vagrant. Man benötigt lediglich eine Vagrantfile-Datei, in welcher beschrieben steht, wie die zu erstellende VM (in meinem Fall Virtualbox) aussehen soll. Für Ansible ist es günstig, eine minimale, aktuelle Ubuntu-Box aufzusetzen, die man dann ähnlich der üblichen Cloud-VServer via Ansible konfigurieren kann.

Ein paar kleinere Anpassungen sind allerdings im Gegensatz zu den üblichen Vagrantfiles notwendig, um die VM einfach mit Ansible zu nutzen, bzw. einen „in etwa“-Betrieb mit einem tatsächlichen Cloud-Host zu simulieren:

  • IP-Adresse im eigenen Netzwerk, also keine NAT
  • SSH-Login als root via Key

Da sonst nichts großartig auf der Maschine installiert sein soll, genügen also auch minimale Angaben im Vagrantfile:


1
2
3
4
5
6
7
8
9
Vagrant.configure("2") do |config|
 config.vm.box = "ubuntu/bionic64"
    config.vm.network :public_network
    config.vm.provider :virtualbox do |vb, override|
   # Fix docker not being able to resolve private registry in VirtualBox
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  end
end

In diesem Fall wird eine Ubuntu Bionic x64-Box hochgefahren und das Netzwerk auf Public/local gesetzt. In einer gängigen Umgebung zieht sich die Box via DHCP eine IP-Adresse im LAN. Anstelle Ubuntu kann auch jedes andere minimale Grund-System/-Image gewählt werden. Wichtig ist nur: Falls man via Ansible das APT-Modul nutzt, sollte es eben auch eine Debian-basierte Distribution sein.

Mit dem Kommando vagrant up wird die VM gestartet.

Grundsätzlich kann man sich nun vagrant-üblich via vagrant ssh via SSH auf die VM verbinden. Dies ist zunächst auch mal notwendig, um die IP-Adresse der VM zu ermitteln und gleich den eigenen Public-Key unter /root abzulegen.
Daher wird zunächst der eigene Public-Key kopiert (cat ~/.ssh/id_rsa.pub -> Ausgabe in die Zwischenablage kopieren. Dann via vagrant ssh auf die VM verbinden und den eigenen Pub-Key in authorized_keys von root ablegen – in etwa so: sudo vim /root/.ssh/authorized_keys <- Zwischenablage einfügen & VIM mit [ESC]:wq verlassen.

Via ip addr erfährt man zudem dann gleich die IP-Adresse aus dem eigenen LAN, die sich die VM gezogen hat. Diese IP-Adresse am besten gleich merken oder kopieren.

Vom Host sollte jetzt ein Login ohne Passwort via ssh root@[IP-DER-VM] möglich sein. Um das ganze noch etwas lesbarer zu machen und für die Verwendung mit Ansible zu vereinfachen, editiert man zudem noch die Datei /etc/hosts und setzt hier die IP-Adresse und den gewünschten „Fake-DNS“-Namen für die VM ein (beispielsweise 192.168.22.16 UbuntuVM1. Ab sofort ist dann der Login auch via ssh root@UbuntuVM1 möglich, was die Arbeit mit Ansible dann auch etwas vereinfacht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Durch die Abgabe eines Kommentars akzeptieren sie die Datenschutzerklärung von net73.de

ähnliche Beiträge