Vagrant

Vagrant ist eine freieRubyAnwendung zum Erstellen und Verwalten virtueller Maschinen.[2] Vagrant ermöglicht einfache Softwareverteilung (englischDeployment) insbesondere in der Software- und Webentwicklung und dient als Wrapper zwischen Virtualisierungssoftware wie VirtualBox, KVM/QEMU, VMware und Hyper-V und Software-Configuration-Management-Anwendungen beziehungsweise Systemkonfigurationswerkzeugen wie Chef, Saltstack und Puppet.

Wichtige Befehle :

vagrant global-statusÜbersicht: Was läuft und was läuft nicht?
vagrant box listbereits heruntergeladene Images auflisten
vagrant box updateheruntergeladene Images aktualisieren
vagrant up Maschine starten
vagrant halt Maschine anhalten
vagrant destroyMaschine wegwerfen
vagrant snapshot pushMaschine snapshotten
vagrant snapshot pop zurück zum Snapshot
vagrant snapshot list alle Snapshots auflisten
vagrant reloadMaschine neustarten

Vagrantfile

Mit einer Vagrantfile werden automatisch mehre virtualebox VMs angelegt. In meiner Beispieldatie lege ich mehre Testsysteme an. Damit das funktioniert muss in Virtualbox ein hostonly adapter mit der IP …150… angelegt werden. Damit das funktioniert muss die Datei /etc/vbox/networks.conf mit folgenden Inhalt angelegt werden.

* 0.0.0.0/0 ::/0

Meine Vagrantfile installiert ein ubuntu, debian und rocky.

$script = <<-'SCRIPT'
ANSIBLE_USERPASS=jonnybravo:xxxx
   ROOT_USERPASS=root:xxxxx
useradd -m -s /bin/bash jonnybravo
echo $ANSIBLE_USERPASS | chpasswd
if [ "$1" = "sudo" ]; then
   echo 'jonnybravo ALL=(ALL) ALL' >/etc/sudoers.d/ansible
   sed -ri 's/^(PermitRootLogin).*/\1 no/' /etc/ssh/sshd_config
elif [ "$1" = "sudo-nopasswd" ]; then
   echo 'jonnybravo ALL=(ALL) NOPASSWD: ALL' >/etc/sudoers.d/ansible
   sed -ri 's/^(PermitRootLogin).*/\1 no/' /etc/ssh/sshd_config
elif [ "$1" = "su" ]; then
   echo $ROOT_USERPASS | chpasswd
   sed -ri 's/^(PermitRootLogin).*/\1 no/' /etc/ssh/sshd_config
elif [ "$1" = "direct" ]; then
   echo $ROOT_USERPASS | chpasswd
   sed -ri 's/^(PermitRootLogin).*/\1 yes/' /etc/ssh/sshd_config
fi
systemctl restart sshd.service
SCRIPT
NETWORK_PREFIX = "192.168.150"
Vagrant.configure("2") do |config|
  config.vm.define "debian" do |debian|
    debian.vm.box = "bento/debian-11"
    debian.vm.hostname = "debian"
    debian.vm.network :private_network, ip: "#{NETWORK_PREFIX}.10"
    debian.vm.network "forwarded_port", guest: 22, host: 2323
    debian.vm.provider "virtualbox" do |p|
      p.memory = "1024"
      p.cpus = "2"
    end
    debian.vm.provision :shell, inline: $script, :args => "sudo"
  end
  config.vm.define "ubuntu" do |ubuntu|
    ubuntu.vm.box = "bento/ubuntu-20.04"
    ubuntu.vm.hostname = "ubuntu"
    ubuntu.vm.network :private_network, ip: "#{NETWORK_PREFIX}.40"
    ubuntu.vm.network "forwarded_port", guest: 22, host: 2324
    ubuntu.vm.provider "virtualbox" do |p|
      p.memory = "1024"
      p.cpus = "2"
    end
    ubuntu.vm.provision :shell, inline: $script, :args => "sudo-nopasswd"
  end
  config.vm.define "rocky" do |rocky|
	  rocky.vm.box = "bento/rockylinux-8"
	  rocky.vm.hostname = "rocky"
	  rocky.vm.network :private_network, ip: "#{NETWORK_PREFIX}.20"
   end
end

MIt einen vagrant up werden die VMs erstellt. Die Image kommen von Chefs bento Projekt.

https://app.vagrantup.com/bento

Schreibe einen Kommentar