====== Criando box Debian - libvirt ======
===== Instalando a vm =====
$ sudo virt-install \
--name debian11 \
--description="Debian 11 - bullseye" \
--ram 2048 \
--vcpus 2 \
--disk size=32,format=qcow2 \
--cdrom /datastore/imagens/isos/debian-11.3.0-amd64-netinst.iso \
--virt-type kvm \
--os-type=Linux \
--os-variant=debian10 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole
FIXME foi feito uma instalação mínima do Debian, apenas o pacote do **//SSH//** foi selecionado para instalação.
===== Configurando a VM =====
$ sudo virsh domifaddr debian11
Nome Endereço MAC Protocol Address
-------------------------------------------------------------------------------
vnet0 52:54:00:c5:71:ab ipv4 192.168.122.106/24
$ ssh vagrant@192.168.122.106
The authenticity of host '192.168.122.106 (192.168.122.106)' can't be established.
ECDSA key fingerprint is SHA256:0x8BllzbuyMuQKEM/C19XLjYwbaHzrDg255bLPz5YJQ.
ECDSA key fingerprint is MD5:37:1a:8b:59:59:ac:26:44:70:c8:cd:0e:2a:3a:f5:1b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.106' (ECDSA) to the list of known hosts.
vagrant@192.168.122.106's password:
Linux debian 5.10.0-17-amd64 #1 SMP Debian 5.10.136-1 (2022-08-13) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
vagrant@debian:~$
FIXME Usuário e senha **//vagrant//**, criados durante a instalação.
vagrant@debian:~$ su -
Senha:
root@debian:~#
==== Configuração do sudo ====
# apt install sudo
# echo 'vagrant ALL=(ALL) NOPASSWD:ALL' >/etc/sudoers.d/99_vagrant
# chmod 440 /etc/sudoers.d/99_vagrant
==== Configuração de rede ====
# sed -i 's/en[[:alnum:]]*/eth0/g' /etc/network/interfaces;
# sed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 \1"/g' /etc/default/grub;
# update-grub;
# truncate -s 0 /etc/machine-id
==== Removendo arquivo temporários e logs ====
# find /var/log -type f -exec truncate --size=0 {} \;
# find /var/cache -type f -exec rm -rf {} \;
# rm -rf /tmp/* /var/tmp/*
# rm -f /var/lib/systemd/random-seed
# history -c
# exit
sair
vagrant@debian:~$ exit
sair
Connection to 192.168.122.106 closed.
==== Configurando as chaves SSH ====
$ wget https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant
$ wget https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub
$ ssh-copy-id -i vagrant.pub vagrant@192.168.122.106
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "vagrant.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
vagrant@192.168.122.106's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'vagrant@192.168.122.106'"
and check to make sure that only the key(s) you wanted were added.
$ chmod 0600 vagrant
[suporte@mba-vm-03 box]$ ssh -i vagrant vagrant@192.168.122.106
Linux debian 5.10.0-17-amd64 #1 SMP Debian 5.10.136-1 (2022-08-13) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
vagrant@debian:~$
$ export HISTSIZE=0
vagrant@debian:~$ exit
sair
Connection to 192.168.122.106 closed.
==== Criando a box ====
$ sudo virsh shutdown debian11
$ wget https://raw.githubusercontent.com/vagrant-libvirt/vagrant-libvirt/master/tools/create_box.sh
$ sudo bash create_box.sh /datastore/imagens/debian11.qcow2
{32}
==> Creating box, tarring and gzipping
./metadata.json
./Vagrantfile
./box.img
gzip: stdout: No space left on device
==> debian11.box created
==> You can now add the box:
==> 'vagrant box add debian11.box --name debian11'
==== Testando a box local ====
$ vagrant box add debian11.box --name debian11
# -*- mode: ruby -*-
# vi: set ft=ruby :
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'libvirt'
Vagrant.configure("2") do |config|
config.vm.define :debian11 do |debian11|
debian11.vm.box = "debian11"
debian11.vm.hostname = "vm-01"
debian11.vm.provider :libvirt do |lv|
lv.memory = 2048
lv.cpus = 2
end
end
config.vm.synced_folder ".", "/vagrant", disabled: true
end
$ vagrant up
$ vagrant status
Current machine states:
debian11 running (libvirt)
The Libvirt domain is running. To stop this machine, you can run
`vagrant halt`. To destroy the machine, you can run `vagrant destroy`.
$ vagrant ssh debian11
Linux vm-01 5.10.0-17-amd64 #1 SMP Debian 5.10.136-1 (2022-08-13) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Sep 2 15:56:29 2022 from 192.168.122.1
vagrant@vm-01:~$
$ vagrant halt
==> debian11: Attempting graceful shutdown of VM...
$ vagrant destroy
debian11: Are you sure you want to destroy the 'debian11' VM? [y/N] y
==> debian11: Removing domain...
==> debian11: Deleting the machine folder
$ vagrant box remove debian11
==== Publicando uma box ====
$ vagrant cloud publish g3anmart1ns/Debian11 1.0 libvirt debian11.box \
--description "Debian 11 Minimal" \
--version-description "Debian 11 instalação mínima" \
--release --no-private
===== Referências =====
- [[https://computingforgeeks.com/create-rocky-linux-8-vagrant-boxes-using-packer/|How To Create Rocky Linux 8 Vagrant Boxes Using Packer]]
- [[https://leyhline.github.io/2019/02/16/creating-a-vagrant-base-box/|Creating a Vagrant Base Box (from Fedora 29 Server, using Libvirt as Provider)]]
- [[https://unix.stackexchange.com/questions/222427/how-to-create-custom-vagrant-box-from-libvirt-kvm-instance|how to create custom vagrant box from libvirt/kvm instance?]]