Difference between revisions of "IT-SDK-Vagrant"
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. | + | * Ubuntu 14.04 LTS: ubuntu/trusty64 |
| − | * Ubuntu | + | * Ubuntu 16.04 LTS: ubuntu/xenial64 |
| − | == | + | * Ubuntu 18.04 LTS: ubuntu/bionic64 |
| + | * Ubuntu 20.04 LTS: ubuntu/focal64 | ||
| + | |||
| + | =Installation= | ||
| + | ==VirtualBox== | ||
<pre class="code"> | <pre class="code"> | ||
| − | + | 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 |
| − | sudo sudo dnf | + | 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= | ||
<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= | ||
| + | * 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 = | + | 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" |
| − | + | 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> | ||
| − | + | =Resizing Storage= | |
| − | + | *https://tuhrig.de/resizing-vagrant-box-disk-space/ | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<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
Contents
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
- 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