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
plugins
AWS Provider
- ./vagrant-aws
- ./Clase Resumen Vagrant.txt lin 200
packer
- ./2-Laboratorios Packer
- ./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)
- 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