= DevOps Sesión 10 (2022-03-14) Vagrant + Packer
== Documentación relacionada
* 3-Topic 703 Machine Deployment/1-Material Curso Vagrant/
== Vagrant
* ./2-Uso básico de vagrant.pdf
* ./Clase Resumen Vagrant.txt
* ./Herramientas Devops entornos de desarrollo en local, para programadores con Docker y Vagrant .pdf
=== multimaquina
* ./Herramientas Devops entornos de desarrollo en local, para programadores con Docker y Vagrant .pdf pàg 153
* ./ejemplos-iaw-practica-vagrant
* ./ejemplos-vagrantfiles-multimaquina
* ./ejemplos-iaw-practica-vagrant/ejemplo-10
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
# Load Balancer
config.vm.define "web-balancer" do |app|
app.vm.hostname = "web-balancer"
app.vm.network "private_network", ip: "192.168.33.10"
app.vm.provision "shell", path: "provision/provision-for-balancer.sh"
end
# Nginx
config.vm.define "web-1" do |app|
app.vm.hostname = "web-1"
app.vm.network "private_network", ip: "192.168.33.11"
app.vm.provision "shell", path: "provision/provision-for-nginx.sh"
end
# Nginx
config.vm.define "web-2" do |app|
app.vm.hostname = "web-2"
app.vm.network "private_network", ip: "192.168.33.12"
app.vm.provision "shell", path: "provision/provision-for-nginx.sh"
end
end
# -*- mode: ruby -*-
# vi: set ft=ruby :
#https://www.vagrantup.com/docs/other/enviromental-variables
ENV['VAGRANT_NO_PARALLEL'] = 'yes'
Vagrant.configure(2) do |config|
NodeCount = 1
(1..NodeCount).each do |i|
config.vm.define "centosvm0#{i}" do |node|
node.vm.box = "centos/7"
node.vm.hostname = "centosvm0#{i}.example.com"
node.vm.network "private_network", ip: "172.42.42.10#{i}"
node.vm.provider "virtualbox" do |v|
v.name = "centosvm0#{i}"
v.memory = 2048
v.cpus = 1
end
end
end
end
# -*- mode: ruby -*-
# vi: set ft=ruby :
ENV['VAGRANT_NO_PARALLEL'] = 'yes'
Vagrant.configure(2) do |config|
CentosNodes = 1
(1..CentosNodes).each do |i|
config.vm.define "centosvm0#{i}" do |node|
node.vm.box = "centos/7"
node.vm.hostname = "centosvm0#{i}.example.com"
node.vm.network "private_network", ip: "172.16.16.10#{i}"
node.vm.provider "virtualbox" do |v|
v.name = "centosvm0#{i}"
v.memory = 1024
v.cpus = 1
end
node.vm.provision "shell", path: "bootstrap_centos.sh"
end
end
UbuntuNodes = 1
(1..UbuntuNodes).each do |i|
config.vm.define "ubuntuvm0#{i}" do |node|
node.vm.box = "ubuntu/focal64"
node.vm.hostname = "ubuntuvm0#{i}.example.com"
node.vm.network "private_network", ip: "172.16.16.20#{i}"
node.vm.provider "virtualbox" do |v|
v.name = "ubuntuvm0#{i}"
v.memory = 1024
v.cpus = 1
end
node.vm.provision "shell", path: "bootstrap_ubuntu.sh"
end
end
end
* [[https://www.vagrantup.com/docs/other/environmental-variables]]
=== plugins
[[https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Plugins]]
==== AWS Provider
* ./vagrant-aws
* ./Clase Resumen Vagrant.txt lin 200
[[https://github.com/mitchellh/vagrant-aws]]
== packer
* ./2-Laboratorios Packer
* https://www.packer.io/downloads
* ./Laboratorio packer resumido.txt
* ./Labortatorio Packer para crear imágenes de máquinas virtuales.pdf
Packer es una herramienta de software libre desarrollada por Hashicorp que nos permite crear imágenes de sistema operativo de forma automatizada y utilizando archivos de configuración para tal efecto.
* ficheros de configuración JSON o HCL2
* builders (constructores)
* [[https://www.packer.io/plugins]]
* providers
* instalación desatendida (propia de cada fabricante)
* RedHat/Centos: ks.cfg
* Debian: preseed.cfg
* Windows: autounattend.xml
*
=== lab
cd ./packer-centos7-master
packer build -only=virtualbox-iso centos7-packer-version1.6.json
# genera: centos71-x64-virtualbox.box
vagrant box list
vagrant box add --name centos71-lab centos71-x64-virtualbox.box
vagrant box list
vagrant up
vagrant box remove centos71-lab
== TODO
* registro para Vagrant
* artifactory