Linux/Proxmox: Difference between revisions
Appearance
< Linux
| (21 intermediate revisions by the same user not shown) | |||
| Line 6: | Line 6: | ||
** gui -> local storage -> iso images | ** gui -> local storage -> iso images | ||
== Create VM | == Create VM from Cloud Image to be used as template == | ||
<pre> | <pre> | ||
iso folder: /var/lib/vz/template/iso/ | iso folder: ls -Flah /var/lib/vz/template/iso/ | ||
qm create 9001 --memory 2048 --net0 virtio,bridge=vmbr0 -- | qm create 9001 --name "ubuntu-2404-ci" --memory 2048 --cores 8 --net0 virtio,bridge=vmbr0 | ||
qm importdisk 9001 /var/lib/vz/template/iso/ubuntu-24.04-server-cloudimg-amd64.img lvm | |||
qm set 9001 --scsihw virtio-scsi-single --scsi0 lvm:vm-9001-disk-0,discard=on,iothread=1 | |||
#local:9001/vm-9001-disk-0.raw | |||
qm | qm set 9001 --boot order=scsi0 | ||
qm set 9001 --serial0 socket | |||
qm set 9001 --vga serial0 # qm set 9001 --vga std | |||
qm set 9001 -- | qm set 9001 --cpu cputype=host | ||
qm set 9001 --ostype l26 # linux | |||
qm set 9001 --agent 1 # qemu guest agent | |||
qm set 9001 -- | |||
qm set 9001 -- | |||
qm set 9001 -- | |||
qm set 9001 --agent 1 | |||
# set cloud-init definitions | # set cloud-init definitions | ||
qm set 9001 -- | qm set 9001 --scsi1 lvm:cloudinit # drive with cloudinit information | ||
qm set 9001 --ciuser "username" | qm set 9001 --ciuser "username" | ||
qm set 9001 --cipassword "password" | qm set 9001 --cipassword "password" | ||
qm set 9001 --ipconfig0 "ip=dhcp" | qm set 9001 --ipconfig0 "ip=dhcp" # qm set 9001 --ipconfig0 ip=192.168.111.123/24,gw=192.168.111.1 | ||
qm set 9001 --ciupgrade 1 # upgrade packages on boot | |||
</pre> | </pre> | ||
== Manual rework to prepare template == | |||
<pre> | <pre> | ||
# echo 'Acquire::http::Proxy "http://192.168.111.11:3142";' > /etc/apt/apt.conf.d/00aptproxy | |||
echo 'Acquire::http::Proxy "http://192.168.111.11:3142";' > /etc/apt/apt.conf.d/00aptproxy | |||
sudo dpkg-reconfigure keyboard-configuration | |||
apt install qemu-guest-agent | apt install qemu-guest-agent | ||
apt install mc | |||
</pre> | |||
* install [[Linux/Docker/Installation|docker]] | |||
* install https://gitea.marcluerssen.de/linux-public/.dotfiles | |||
<pre> | |||
apt clean | apt clean | ||
echo -n >/etc/machine-id | |||
rm /var/lib/dbus/machine-id | |||
ln -s /etc/machine-id /var/lib/dbus/machine-id | |||
</pre> | </pre> | ||
== Clone template to new VM == | |||
<pre> | <pre> | ||
qm clone 9001 123 --name docker1 | qm template 9001 # turn vm 9001 into template | ||
qm clone 9001 123 --name docker1 # deploy vm from template | |||
qm resize 123 scsi0 20G | qm resize 123 scsi0 20G | ||
</pre> | |||
* switch back from template to vm | |||
<pre> | |||
/etc/pve/qemu-server | |||
-> template: 0 | |||
</pre> | </pre> | ||
| Line 116: | Line 131: | ||
</pre> | </pre> | ||
== Links == | == Links == | ||
Latest revision as of 20:04, 5 November 2024
Download Ubuntu Cloud Image
- https://cloud-images.ubuntu.com/releases/
- e.g.: ubuntu-22.04-server-cloudimg-amd64.img
- upload cloud-init image from proxmox
- gui -> local storage -> iso images
Create VM from Cloud Image to be used as template
iso folder: ls -Flah /var/lib/vz/template/iso/
qm create 9001 --name "ubuntu-2404-ci" --memory 2048 --cores 8 --net0 virtio,bridge=vmbr0
qm importdisk 9001 /var/lib/vz/template/iso/ubuntu-24.04-server-cloudimg-amd64.img lvm
qm set 9001 --scsihw virtio-scsi-single --scsi0 lvm:vm-9001-disk-0,discard=on,iothread=1
#local:9001/vm-9001-disk-0.raw
qm set 9001 --boot order=scsi0
qm set 9001 --serial0 socket
qm set 9001 --vga serial0 # qm set 9001 --vga std
qm set 9001 --cpu cputype=host
qm set 9001 --ostype l26 # linux
qm set 9001 --agent 1 # qemu guest agent
# set cloud-init definitions
qm set 9001 --scsi1 lvm:cloudinit # drive with cloudinit information
qm set 9001 --ciuser "username"
qm set 9001 --cipassword "password"
qm set 9001 --ipconfig0 "ip=dhcp" # qm set 9001 --ipconfig0 ip=192.168.111.123/24,gw=192.168.111.1
qm set 9001 --ciupgrade 1 # upgrade packages on boot
Manual rework to prepare template
# echo 'Acquire::http::Proxy "http://192.168.111.11:3142";' > /etc/apt/apt.conf.d/00aptproxy sudo dpkg-reconfigure keyboard-configuration apt install qemu-guest-agent apt install mc
- install docker
- install https://gitea.marcluerssen.de/linux-public/.dotfiles
apt clean echo -n >/etc/machine-id rm /var/lib/dbus/machine-id ln -s /etc/machine-id /var/lib/dbus/machine-id
Clone template to new VM
qm template 9001 # turn vm 9001 into template qm clone 9001 123 --name docker1 # deploy vm from template qm resize 123 scsi0 20G
- switch back from template to vm
/etc/pve/qemu-server -> template: 0
Terraform + Proxmox
- main.tf
terraform {
required_providers {
proxmox = {
source = "telmate/proxmox"
version = "2.9.3"
}
}
}
provider "proxmox" {
pm_api_url = "https://vm-host:8006/api2/json"
pm_password = "password"
pm_user = "root@pam"
pm_tls_insecure = "true"
}
resource "proxmox_vm_qemu" "proxmox_vm" {
name = "vm-01"
desc = "Terraform VM"
target_node = "vm-host"
clone = "ubuntu-20.04-cloudinit"
os_type = "cloud-init"
agent = 1
cores = 1
sockets = 1
cpu = "host"
memory = 2048
scsihw = "virtio-scsi-pci"
boot = "c"
bootdisk = "scsi0"
disk {
type = "scsi"
storage = "local-lvm"
size = "20G"
}
network {
bridge = "vmbr0"
firewall = false
model = "virtio"
}
lifecycle {
ignore_changes = [
network
]
}
}
Proxmox + Ansible
- on proxmox host:
apt install sudo adduser username usermod -aG sudo username sudo visudo > username ALL = (ALL) NOPASSWD: ALL apt install python3-proxmoxer