Criação de Imagem KVM do Oracle Linux 9 Usando o Packer
Este tutorial detalha os passos para criar uma imagem KVM do Oracle Linux 9 utilizando o Packer e o QEMU no Ubuntu.
Instalação do Packer no Ubuntu
Para instalar o Packer no Ubuntu, execute os comandos abaixo:
1
2
3
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install packer
Verifique se o Packer foi instalado corretamente com o seguinte comando:
1
packer -v
Criando os Scripts
Organize os arquivos de configuração criando um diretório específico:
1
2
mkdir -p ~/packer/ol9
cd ~/packer/ol9
Script HCL - os-install.pkr.hcl
Crie o arquivo os-install.pkr.hcl com o conteúdo abaixo, que define a imagem que será gerada usando Packer e QEMU:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
packer {
required_version = ">= 1.5.0" # Garantia de que a versão do Packer seja compatível
required_plugins {
qemu = {
version = "= 1.1.0"
source = "github.com/hashicorp/qemu"
}
}
}
source "qemu" "iso" {
vm_name = "ol9-amd64.raw"
iso_url = "https://yum.oracle.com/ISOS/OracleLinux/OL9/u4/x86_64/OracleLinux-R9-U4-x86_64-boot.iso"
iso_checksum = "975de11be8761efa4aa2c87d7d3bedcb62c9dc956909b68f62c99062d11599e9"
memory = 2048
disk_image = false
output_directory = "build/os-base"
accelerator = "kvm"
disk_size = "16384M"
disk_interface = "virtio"
format = "raw"
net_device = "virtio-net"
boot_wait = "3s"
boot_command = [
"<up>",
"<tab><wait>",
" inst.ks=http://{{.HTTPIP}}:{{.HTTPPort}}/ks.cfg",
"<enter>"
]
http_directory = "http"
cpu_model = "host"
shutdown_command = "echo 'packer' | sudo -S shutdown -P now"
ssh_username = "packer"
ssh_password = "packer"
ssh_timeout = "60m"
}
build {
name = "iso"
sources = ["source.qemu.iso"]
}
Nota: Confirme a compatibilidade das versões mencionadas no script.
Script Kickstart - http/ks.cfg
Agora, crie o diretório http e adicione o arquivo Kickstart ks.cfg, que automatiza a instalação do sistema operacional:
1
mkdir http
No arquivo http/ks.cfg, insira o seguinte conteúdo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
graphical
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
keyboard --xlayouts='br'
lang pt_BR.UTF-8
url --url="http://yum.oracle.com/repo/OracleLinux/OL9/baseos/latest/x86_64"
%packages
@^minimal-environment
%end
firstboot --enable
ignoredisk --only-use=vda
autopart
clearpart --none --initlabel
timezone America/Sao_Paulo --utc
rootpw --lock
user --groups=wheel --name=packer --password=$6$Jfl.H/kwDSeu7FWF$S/Mc/qsxM2DRupVkxKQawCgjQ3.i6beyCgY1fQCC0NUadW9pucgYnraGMWaCSg8g6t4GbozowE40X/FtAGert. --iscrypted --gecos="packer"
reboot
%post
echo "packer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/01packer
/bin/chown root:root /etc/sudoers.d/01packer
/bin/chmod 0440 /etc/sudoers.d/01packer
%end
Criando o Template
Inicialize o Packer e inicie a criação da imagem com o comando:
1
2
packer init .
PACKER_LOG=1 packer build os-install.pkr.hcl
Convertendo a Imagem para QCOW2
Após a conclusão do processo de build, converta a imagem para o formato QCOW2, que é amplamente utilizado com KVM:
1
2
qemu-img convert -O qcow2 -c build/os-base/ol9-amd64.raw ol9-amd64.qcow2
qemu-img info ol9-amd64.qcow2