Vagrant ist eine freieRuby–Anwendung 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 list | bereits heruntergeladene Images auflisten |
| vagrant box update | heruntergeladene Images aktualisieren |
| vagrant up | Maschine starten |
| vagrant halt | Maschine anhalten |
| vagrant destroy | Maschine wegwerfen |
| vagrant snapshot push | Maschine snapshotten |
| vagrant snapshot pop | zurück zum Snapshot |
| vagrant snapshot list | alle Snapshots auflisten |
| vagrant reload | Maschine 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.
Neueste Kommentare