Difference between revisions of "IT-SDK-Vagrant"

From wiki.samerhijazi.net
Jump to navigation Jump to search
(Update H.D.D.)
(Boxes)
 
(37 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Boxes==
+
=Source=
 +
* https://www.vagrantup.com/docs/vagrantfile/machine_settings.html
 +
* https://www.oracle.com/technical-resources/articles/it-infrastructure/admin-manage-vbox-cli.html
 +
=Preambel=
 +
* Host: Base-Maschine; Guest: VM
 +
* Networking: Bridged adapter; Host-Only Network; NAT
 +
 
 +
=Boxes=
 +
* https://app.vagrantup.com/boxes/search
 
* Base: hashicorp/precise32
 
* Base: hashicorp/precise32
* Ubuntu 14.04.5: ubuntu/trusty64
+
* Ubuntu 14.04 LTS: ubuntu/trusty64
* Ubuntu 17.04: ubuntu/zesty64
+
* Ubuntu 16.04 LTS: ubuntu/xenial64
==Installation==
+
* Ubuntu 18.04 LTS: ubuntu/bionic64
 +
* Ubuntu 20.04 LTS: ubuntu/focal64
 +
 
 +
=Installation=
 +
==VirtualBox==
 
<pre class="code">
 
<pre class="code">
$ wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
+
sudo dnf install @c-development @d-development @virtualization
$ sudo mv virtualbox.repo /etc/yum.repos.d/virtualbox.repo
+
sudo dnf install gcc binutils make glibc-devel patch libgomp glibc-headers kernel-headers kernel-devel-`uname -r` dkms
..
+
---
$ sudo dnf install -y gcc binutils make glibc-devel patch libgomp glibc-headers kernel-headers kernel-devel-`uname -r` dkms
+
sudo dnf config-manager --add-repo http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
$ sudo dnf install -y VirtualBox-6.0
+
sudo dnf install VirtualBox-6.1
..
+
---
$ sudo usermod -a -G vboxusers ${USER}
+
sudo usermod -a -G vboxusers $USER
$ sudo /usr/lib/virtualbox/vboxdrv.sh setup
+
sudo /usr/lib/virtualbox/vboxdrv.sh setup
$ export VAGRANT_HOME=/path/to/vagrant
+
---
..
+
vboxmanage setproperty machinefolder ~/box-vms
sudo sudo dnf -y install vagrant
+
vboxmanage list systemproperties | grep folder
 +
</pre>
 +
 
 +
==KVM==
 +
* https://github.com/vagrant-libvirt/vagrant-libvirt#installation
 +
<pre class="code">
 +
sudo dnf install -y gcc make qemu-kvm libvirt virt-install libvirt-devel libxml2-devel ruby-devel libguestfs-tools
 +
export CONFIGURE_ARGS="with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib64"
 +
vagrant plugin install vagrant-libvirt
 +
</pre>
 +
==Vagrant==
 +
* Ref.: https://releases.hashicorp.com/vagrant/
 +
<pre class="code">
 +
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo
 +
sudo dnf install vagrant
 +
---
 
vagrant plugin install vagrant-hostmanager
 
vagrant plugin install vagrant-hostmanager
 
vagrant plugin install vagrant-cachier
 
vagrant plugin install vagrant-cachier
 
vagrant plugin install vagrant-vbguest
 
vagrant plugin install vagrant-vbguest
 +
vagrant plugin install vagrant-disksize
 
</pre>
 
</pre>
==Work-Cycle==
+
 
 +
=Work-Cycle=
 
<pre class="code">
 
<pre class="code">
 
$ vagrant init hashicorp/bionic64
 
$ vagrant init hashicorp/bionic64
Line 28: Line 57:
 
$ vagrant reload
 
$ vagrant reload
 
</pre>
 
</pre>
==Vagrantfile==
+
 
 +
=Vagrantfile=
 +
* src: https://www.vagrantup.com/docs/vagrantfile/
 
<pre class="code">
 
<pre class="code">
 
# -*- mode: ruby -*-
 
# -*- mode: ruby -*-
 
# vi: set ft=ruby :
 
# vi: set ft=ruby :
 +
N = 2
 +
IMAGE_NAME = "bento/ubuntu-16.04"
 +
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
 +
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'docker'
 +
ENV["LC_ALL"] = "en_US.UTF-8"
  
 
Vagrant.configure("2") do |config|
 
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/zesty64"
+
# --------------------------------------------------------------------
config.vm.hostname = “openstack”
+
  config.vm.provider "virtualbox" do |vb|
 
+
      vb.gui = false
config.vm.provision "shell", path: "script.sh"
+
      vb.name = "OpenStack"
config.vm.provision "shell", path: "source script.sh"
+
      vb.cpus = 1
 
+
      vb.memory = 2048
config.vm.provision "shell", inline: "echo hello", run: “always”
+
  end
config.vm.provision "shell", inline: "route add default gw 192.168.0.1", run: "always" # Manually override the default router configuration  
+
# --------------------------------------------------------------------
 
+
  config.vm.box = "ubuntu/zesty64"
config.vm.provision "shell", run: "always" do |s|
+
  config.vm.hostname = "openstack"
s.inline = "echo hello"
+
  config.vm.synced_folder ".", "/vagrant"
 +
# --------------------------------------------------------------------
 +
  config.vm.network "public_network", bridge: "br0"
 +
  config.vm.network "public_network", bridge: "lan01", mac: "0800278A8081", ip: "192.168.33.10"
 +
  config.vm.network "private_network", bridge: "lan01", mac: "0800278A8081", ip: "192.168.33.10"
 +
  config.vm.network "forwarded_port", guest: 8080, host: 8080
 +
# --------------------------------------------------------------------
 +
  config.vm.provision "shell", path: "script.sh"
 +
  config.vm.provision "shell", path: "source script.sh"
 +
  config.vm.provision "shell", inline: "echo hello", run: “always”
 +
  config.vm.provision "shell", inline: "route add default gw 192.168.0.1", run: "always" # Manually override the default router configuration  
 +
  config.vm.provision "shell", run: "always" do |s|
 +
      s.inline = "echo hello"
 +
  end
 +
# --------------------------------------------------------------------
 +
  config.vm.provision "ansible" do |ansible|
 +
      ansible.playbook = "/location/of/master-playbook.yml"
 +
      ansible.extra_vars = {node_ip: "192.168.50.10",}
 +
  end
 +
# --------------------------------------------------------------------
 +
  (1..N).each do |i|
 +
      config.vm.define "node-#{i}" do |node|        
 +
        node.vm.hostname = "node-#{i}"       
 +
      end
 +
  end
 +
# --------------------------------------------------------------------
 
end
 
end
 +
</pre>
  
config.vm.provider "virtualbox" do |vb|
+
=Resizing Storage=
  vb.gui = false
+
*https://tuhrig.de/resizing-vagrant-box-disk-space/
  vb.name = “OpenStack”
 
  vb.memory = 2048
 
  vb.cpus = 1
 
end
 
config.vm.synced_folder ".", "/vagrant"
 
config.vm.network "private_network", ip: "192.168.33.10", :mac => “0800278A8081”, bridge: "xyx" bridge:
 
config.vm.network "public_network", ip: "192.168.178.201", :mac => “0800278A8081”
 
config.vm.network “forwarded_port”, guest: 8080, host: 8080
 
config.vm.network “forwarded_port”, guest: 22, host: 2222
 
end
 
</pre>
 
==Update H.D.D.==
 
 
<pre class="code">
 
<pre class="code">
 
VBoxManage clonehd "box-disk1.vmdk" "clone-disk1.vdi" --format vdi
 
VBoxManage clonehd "box-disk1.vmdk" "clone-disk1.vdi" --format vdi
 
VBoxManage modifyhd "clone-disk1.vdi" --resize 102400
 
VBoxManage modifyhd "clone-disk1.vdi" --resize 102400
 
+
---
 
VBoxManage showvminfo MASCHIN_ID | grep ".vmdk"
 
VBoxManage showvminfo MASCHIN_ID | grep ".vmdk"
VBoxManage storageattach MASCHIN_ID --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium clone-disk1.vdi
+
VBoxManage storageattach $MASCHIN_ID --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium clone-disk1.vdi
 
</pre>
 
</pre>

Latest revision as of 13:35, 12 November 2021

Source

Preambel

  • Host: Base-Maschine; Guest: VM
  • Networking: Bridged adapter; Host-Only Network; NAT

Boxes

  • https://app.vagrantup.com/boxes/search
  • Base: hashicorp/precise32
  • Ubuntu 14.04 LTS: ubuntu/trusty64
  • Ubuntu 16.04 LTS: ubuntu/xenial64
  • Ubuntu 18.04 LTS: ubuntu/bionic64
  • Ubuntu 20.04 LTS: ubuntu/focal64

Installation

VirtualBox

sudo dnf install @c-development @d-development @virtualization
sudo dnf install gcc binutils make glibc-devel patch libgomp glibc-headers kernel-headers kernel-devel-`uname -r` dkms
---
sudo dnf config-manager --add-repo http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
sudo dnf install VirtualBox-6.1
---
sudo usermod -a -G vboxusers $USER
sudo /usr/lib/virtualbox/vboxdrv.sh setup
---
vboxmanage setproperty machinefolder ~/box-vms
vboxmanage list systemproperties | grep folder

KVM

sudo dnf install -y gcc make qemu-kvm libvirt virt-install libvirt-devel libxml2-devel ruby-devel libguestfs-tools
export CONFIGURE_ARGS="with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib64"
vagrant plugin install vagrant-libvirt

Vagrant

sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo
sudo dnf install vagrant
---
vagrant plugin install vagrant-hostmanager
vagrant plugin install vagrant-cachier
vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-disksize

Work-Cycle

$ vagrant init hashicorp/bionic64
$ vagrant box add hashicorp/bionic64
$ vagrant up --provider=virtualbox
$ vagrant ssh
$ vagrant reload

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :
N = 2
IMAGE_NAME = "bento/ubuntu-16.04"
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'docker'
ENV["LC_ALL"] = "en_US.UTF-8"

Vagrant.configure("2") do |config|
# --------------------------------------------------------------------
   config.vm.provider "virtualbox" do |vb|
      vb.gui = false
      vb.name = "OpenStack"
      vb.cpus = 1
      vb.memory = 2048
   end
# --------------------------------------------------------------------
   config.vm.box = "ubuntu/zesty64"
   config.vm.hostname = "openstack"
   config.vm.synced_folder ".", "/vagrant"
# --------------------------------------------------------------------
   config.vm.network "public_network", bridge: "br0"
   config.vm.network "public_network", bridge: "lan01", mac: "0800278A8081", ip: "192.168.33.10"
   config.vm.network "private_network", bridge: "lan01", mac: "0800278A8081", ip: "192.168.33.10"
   config.vm.network "forwarded_port", guest: 8080, host: 8080
# --------------------------------------------------------------------
   config.vm.provision "shell", path: "script.sh"
   config.vm.provision "shell", path: "source script.sh"
   config.vm.provision "shell", inline: "echo hello", run: “always”
   config.vm.provision "shell", inline: "route add default gw 192.168.0.1", run: "always"	# Manually override the default router configuration 
   config.vm.provision "shell", run: "always" do |s|
      s.inline = "echo hello"
   end
# --------------------------------------------------------------------
   config.vm.provision "ansible" do |ansible|
      ansible.playbook = "/location/of/master-playbook.yml"
      ansible.extra_vars = {node_ip: "192.168.50.10",}
   end
# --------------------------------------------------------------------
   (1..N).each do |i|
      config.vm.define "node-#{i}" do |node|		        
        node.vm.hostname = "node-#{i}"        
      end
   end
# --------------------------------------------------------------------
end

Resizing Storage

VBoxManage clonehd "box-disk1.vmdk" "clone-disk1.vdi" --format vdi
VBoxManage modifyhd "clone-disk1.vdi" --resize 102400
---
VBoxManage showvminfo MASCHIN_ID | grep ".vmdk"
VBoxManage storageattach $MASCHIN_ID --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium clone-disk1.vdi