feat: add cloud-init and virt-customize method

This commit is contained in:
Matthieu Bessat 2024-06-21 11:28:42 +02:00
parent 32bf78edbe
commit 30c76bf9c5
17 changed files with 119 additions and 0 deletions

1
cloud-init_method/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*.qcow2

View file

@ -0,0 +1,7 @@
# Auto setup of debian vm with cloud image + cloudinit method
First download cloud generic image
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
To run the VM

View file

@ -0,0 +1 @@
out

View file

@ -0,0 +1,2 @@
instance-id: mbessinfra/sandbox03
local-hostname: sandbox03

View file

@ -0,0 +1,22 @@
#cloud-config
hostname: jpplandhost
groups:
- jppland
users:
- default
- calyjohn
- name: mbess
passwd: "$6$QQuYYEMEG0bJf7iH$mhFeXl10jSQhFO8ltMAi3CtoGLOz5tPdnEBTcp.4JzS5mnBbpANvm9s.VQFMvWq8nfzgzdDZMGr1hnZLGVd2V." #root
sudo: ALL=(ALL) NOPASSWD:ALL
groups: sudo
shell: /bin/bash
lock_passwd: false
ssh_authorized_keys:
- "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBeNeE0gk6mO0Bz9dDvKQrhA2Oo7x05FicCQJivxqIyi sandbox"
write_files:
- encoding: gzip
content: !!binary |
H4sIAIDb/U8C/1NW1E/KzNMvzuBKTc7IV8hIzcnJVyjPL8pJ4QIA6N+MVxsAAAA=
path: /usr/bin/hello
permissions: '0755'

View file

@ -0,0 +1,10 @@
#!/usr/bin/sh
cd cloud-init-config
rm -rf out
mkdir -p out
cp meta-data.yaml out/meta-data
cp user-data.yaml out/user-data
cd out
genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data

12
cloud-init_method/init.sh Executable file
View file

@ -0,0 +1,12 @@
#!/usr/bin/sh
wget -N https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
# virt-install \
# --name=sandbox03 \
# --ram=512 --vcpus=1 \
# --import --disk path=debian-12-generic-amd64.qcow2,format=qcow2 \
# --disk path=cloud-init-config/seed.iso,device=cdrom \
# --os-variant=debian12 \
# --network bridge=virbr0,model=virtio

13
cloud-init_method/run.sh Executable file
View file

@ -0,0 +1,13 @@
#!/usr/bin/sh
qemu-system-x86_64 \
-machine accel=kvm \
-cpu host \
-m 512 \
-nographic \
-hda ./debian-12-generic-amd64.qcow2 \
-drive driver=raw,file=./cloud-init-config/out/seed.iso,if=virtio \
-net nic \
-net user,hostfwd=tcp::2222-:22
#-smbios type=1,serial=ds='nocloud;s=http://10.0.2.2:8000/'

7
sandbox Normal file
View file

@ -0,0 +1,7 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAXjXhNIJOpjtAc/XQ7ykK4QNjqO8dORYnAkCYr8aiMogAAAJBTmHyjU5h8
owAAAAtzc2gtZWQyNTUxOQAAACAXjXhNIJOpjtAc/XQ7ykK4QNjqO8dORYnAkCYr8aiMog
AAAEAmrXAipMd8QVHaDDofYK9OvJ1NXzcz7wwCeC/zCb4gOxeNeE0gk6mO0Bz9dDvKQrhA
2Oo7x05FicCQJivxqIyiAAAAB3NhbmRib3gBAgMEBQY=
-----END OPENSSH PRIVATE KEY-----

1
sandbox.pub Normal file
View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBeNeE0gk6mO0Bz9dDvKQrhA2Oo7x05FicCQJivxqIyi sandbox

2
virt-customize_method/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
*.qcow2
vm

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBeNeE0gk6mO0Bz9dDvKQrhA2Oo7x05FicCQJivxqIyi sandbox

View file

@ -0,0 +1,7 @@
# Initial setup of debian VM with virt-customize + netplan
This method consist of using the debian generic cloud image and just customizing it before first boot with the [virt-customize](https://man.archlinux.org/man/virt-customize.1.en) util.
Then for the network config, we will be using [netplan](https://netplan.readthedocs.io/en/stable/).

15
virt-customize_method/init.sh Executable file
View file

@ -0,0 +1,15 @@
#!/usr/bin/sh
base="$(pwd)"
mkdir -p vm
cd vm
wget -N https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
virt-customize \
--add ./debian-12-generic-amd64.qcow2 \
--root-password password:root \
--hostname "sandbox05" \
--firstboot-install "procps,psmisc,vim,net-tools,curl,dnsutils,file,tmux" \
--copy-in "$base/netplan:/etc" \
--copy-in "$base/.ssh:/root" \
--firstboot-command 'netplan apply && ssh-keygen -A && systemctl restart sshd'

View file

@ -0,0 +1,9 @@
network:
version: 2
ethernets:
all-en:
match:
name: "en*"
dhcp4: true
dhcp6: true

9
virt-customize_method/run.sh Executable file
View file

@ -0,0 +1,9 @@
cd vm
qemu-system-x86_64 \
-net nic \
-net user \
-machine accel=kvm \
-cpu host \
-m 512 \
-nographic \
-hda ./debian-12-generic-amd64.qcow2