User Tools

Site Tools


wikiv2:vagrant_box_debian11

Criando box Debian 11 - Libvirt

Criando Vagrant box do Debian 11 para KVM - Libvirt

FIXME Durante a instalação foi criado o usuário vagrant com a senha vagrant e foi usado a senha para o usuário root.

FIXME Instalação miníma. Apenas o SSH foi marcado para ser instalado.

Instalação de pacotes

Com foi feita uma instalação miníma, vamos instalar o sudo e o python. O python é opcional. Nesse caso será instalado caso seja necessário o provisionamento com o ansible. Já o sudo é obrigatório já que precisamos usar o usuário vagrant com privilégios de root quando formos usar a box.

# apt update && apt install -y sudo python3 qemu-guest-agent

Alterando a interface 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;
# echo "pre-up sleep 2" >> /etc/network/interfaces

Elevando os privilégios do usuário vagrant

# visudo -f /etc/sudoers.d/vagrant
vagrant ALL=(ALL) NOPASSWD:ALL

Zerando o histórico de comandos

# export HISTSIZE=0
# exit
$ exit

Chave SSH

$ curl -O https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant
$ curl -O https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub
$ ssh-copy-id -i vagrant.pub vagrant@192.168.122.82
/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.82's password: 
 
Number of key(s) added: 1
 
Now try logging into the machine, with:   "ssh 'vagrant@192.168.122.82'"
and check to make sure that only the key(s) you wanted were added.
$ chmod 0600 vagrant
$ ssh -i vagrant vagrant@192.168.122.82
Linux debian 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) 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.
$ sudo poweroff
Connection to 192.168.122.82 closed by remote host.
Connection to 192.168.122.82 closed.

Criando a box

$ curl -O  https://raw.githubusercontent.com/vagrant-libvirt/vagrant-libvirt/master/tools/create_box.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3263  100  3263    0     0   5869      0 --:--:-- --:--:-- --:--:--  5879
$ sudo bash create_box.sh /home/gean/kvm/images/debian11.qcow2 
{32}
==> Creating box, tarring and gzipping
./metadata.json
./Vagrantfile
./box.img
Total bytes written: 2153594880 (2,1GiB, 36MiB/s)
==> debian11.box created
==> You can now add the box:
==>   'vagrant box add debian11.box --name debian11'

Testando a box

$ vagrant box add debian11.box --name debian11
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'debian11' (v0) for provider: 
    box: Unpacking necessary files from: file:///home/gean/Downloads/vagrant/box/debian11.box
==> box: Successfully added box 'debian11' (v0) for 'libvirt'!
Vagrantfile
$ vim Vagrantfile 
# -*- 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
Bringing machine 'debian11' up with 'libvirt' provider...
==> debian11: No version detected for debian11, using timestamp to watch for modifications. Consider
==> debian11: generating a local metadata for the box with a version to allow better handling.
==> debian11: See https://www.vagrantup.com/docs/boxes/format#box-metadata for further details.
==> debian11: Creating image (snapshot of base box volume).
==> debian11: Creating domain with the following settings...
==> debian11:  -- Name:              box_debian11
==> debian11:  -- Description:       Source: /home/gean/Downloads/vagrant/box/Vagrantfile
==> debian11:  -- Domain type:       kvm
==> debian11:  -- Cpus:              2
==> debian11:  -- Feature:           acpi
==> debian11:  -- Feature:           apic
==> debian11:  -- Feature:           pae
==> debian11:  -- Clock offset:      utc
==> debian11:  -- Memory:            2048M
==> debian11:  -- Base box:          debian11
==> debian11:  -- Storage pool:      default
==> debian11:  -- Image(vda):        /home/gean/kvm/images/box_debian11.img, virtio, 32G
==> debian11:  -- Disk driver opts:  cache='default'
==> debian11:  -- Graphics Type:     vnc
==> debian11:  -- Video Type:        cirrus
==> debian11:  -- Video VRAM:        16384
==> debian11:  -- Video 3D accel:    false
==> debian11:  -- Keymap:            en-us
==> debian11:  -- TPM Backend:       passthrough
==> debian11:  -- INPUT:             type=mouse, bus=ps2
==> debian11: Pruning invalid NFS exports. Administrator privileges will be required...
==> debian11: Creating shared folders metadata...
==> debian11: Starting domain.
==> debian11: Domain launching with graphics connection settings...
==> debian11:  -- Graphics Port:      5900
==> debian11:  -- Graphics IP:        127.0.0.1
==> debian11:  -- Graphics Password:  Not defined
==> debian11:  -- Graphics Websocket: 5700
==> debian11: Waiting for domain to get an IP address...
==> debian11: Waiting for machine to boot. This may take a few minutes...
    debian11: SSH address: 192.168.121.206:22
    debian11: SSH username: vagrant
    debian11: SSH auth method: private key
    debian11: 
    debian11: Vagrant insecure key detected. Vagrant will automatically replace
    debian11: this with a newly generated keypair for better security.
    debian11: 
    debian11: Inserting generated public key within guest...
    debian11: Removing insecure key from the guest if it's present...
    debian11: Key inserted! Disconnecting and reconnecting using new SSH key...
==> debian11: Machine booted and ready!
==> debian11: Setting hostname...
$ vagrant ssh
Linux vm-01 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) 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: Tue Feb 28 20:21:20 2023 from 192.168.122.1
vagrant@vm-01:~$ 
vagrant@vm-01:~$ exit
$ vagrant halt
$ vagrant destroy -f

Publicando a 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

wikiv2/vagrant_box_debian11.txt · Last modified: by 127.0.0.1