feat: add cloud-init and virt-customize method
This commit is contained in:
parent
32bf78edbe
commit
30c76bf9c5
17 changed files with 119 additions and 0 deletions
1
cloud-init_method/.gitignore
vendored
Normal file
1
cloud-init_method/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*.qcow2
|
7
cloud-init_method/README.md
Normal file
7
cloud-init_method/README.md
Normal 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
|
1
cloud-init_method/cloud-init-config/.gitignore
vendored
Normal file
1
cloud-init_method/cloud-init-config/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
out
|
2
cloud-init_method/cloud-init-config/meta-data.yaml
Normal file
2
cloud-init_method/cloud-init-config/meta-data.yaml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
instance-id: mbessinfra/sandbox03
|
||||||
|
local-hostname: sandbox03
|
22
cloud-init_method/cloud-init-config/user-data.yaml
Normal file
22
cloud-init_method/cloud-init-config/user-data.yaml
Normal 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'
|
0
cloud-init_method/cloud-init-config/vendor-data.yaml
Normal file
0
cloud-init_method/cloud-init-config/vendor-data.yaml
Normal file
10
cloud-init_method/generate-config.sh
Executable file
10
cloud-init_method/generate-config.sh
Executable 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
12
cloud-init_method/init.sh
Executable 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
13
cloud-init_method/run.sh
Executable 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
7
sandbox
Normal 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
1
sandbox.pub
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBeNeE0gk6mO0Bz9dDvKQrhA2Oo7x05FicCQJivxqIyi sandbox
|
2
virt-customize_method/.gitignore
vendored
Normal file
2
virt-customize_method/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
*.qcow2
|
||||||
|
vm
|
1
virt-customize_method/.ssh/authorized_keys
Normal file
1
virt-customize_method/.ssh/authorized_keys
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBeNeE0gk6mO0Bz9dDvKQrhA2Oo7x05FicCQJivxqIyi sandbox
|
7
virt-customize_method/README.md
Normal file
7
virt-customize_method/README.md
Normal 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
15
virt-customize_method/init.sh
Executable 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'
|
||||||
|
|
9
virt-customize_method/netplan/50-dhcp.yaml
Normal file
9
virt-customize_method/netplan/50-dhcp.yaml
Normal 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
9
virt-customize_method/run.sh
Executable 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
|
Loading…
Reference in a new issue