diff --git a/website/content/docs/v0.13/Cloud Platforms/nocloud.md b/website/content/docs/v0.13/Cloud Platforms/nocloud.md index 0050e390b..f721f852d 100644 --- a/website/content/docs/v0.13/Cloud Platforms/nocloud.md +++ b/website/content/docs/v0.13/Cloud Platforms/nocloud.md @@ -3,4 +3,123 @@ title: "Nocloud" description: "Creating a cluster via the CLI using qemu." --- -Talos is known to work on nocloud; however, it is currently undocumented. +Talos supports [nocloud](https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html) data source implementation. + +There are two ways to configure Talos server with `nocloud` platform: + +* via SMBIOS "serial number" option +* using CDROM or USB-flash filesystem + +### SMBIOS Serial Number + +This method requires the network connection to be up (e.g. via DHCP). +Configuration is delivered from the HTTP server. + +```text +ds=nocloud-net;s=http://10.10.0.1/configs/;h=HOSTNAME +``` + +After the network initialization is complete, Talos fetches: + +* the machine config from `http://10.10.0.1/configs/user-data` +* the network config (if available) from `http://10.10.0.1/configs/network-config` + +#### SMBIOS: QEMU + +Add the following flag to `qemu` command line when starting a VM: + +```bash +qemu-system-x86_64 \ + ...\ + -smbios type=1,serial=ds=nocloud-net;s=http://10.10.0.1/configs/ +``` + +#### SMBIOS: Proxmox + +Set the source machine config through the serial number on Proxmox GUI. + + + +The Proxmox stores the VM config at `/etc/pve/qemu-server/$ID.conf` (```$ID``` - VM ID number of virtual machine), you will see something like: + +```conf +... +smbios1: uuid=ceae4d10,serial=ZHM9bm9jbG91ZC1uZXQ7cz1odHRwOi8vMTAuMTAuMC4xL2NvbmZpZ3Mv,base64=1 +... +``` + +Where serial holds the base64-encoded string version of `ds=nocloud-net;s=http://10.10.0.1/configs/`. + +### CDROM/USB + +Talos can also get machine config from local attached storage without any prior network connection being established. + +You can provide configs to the server via files on a VFAT or ISO9660 filesystem. +The filesystem volume label must be ```cidata``` or ```CIDATA```. + +#### Example: QEMU + +Create and prepare Talos machine config: + +```bash +export CONTROL_PLANE_IP=192.168.1.10 + +talosctl gen config talos-nocloud https://$CONTROL_PLANE_IP:6443 --output-dir _out +``` + +Prepare cloud-init configs: + +```bash +mkdir -p iso +mv _out/controlplane.yaml iso/user-data +echo "local-hostname: controlplane-1" > iso/meta-data +cat > iso/network-config << EOF +version: 1 +config: + - type: physical + name: eth0 + mac_address: "52:54:00:12:34:00" + subnets: + - type: static + address: 192.168.1.10 + netmask: 255.255.255.0 + gateway: 192.168.1.254 +EOF +``` + +Create cloud-init iso image + +```bash +cd iso && genisoimage -output cidata.iso -V cidata -r -J user-data meta-data network-config +``` + +Start the VM + +```bash +qemu-system-x86_64 \ + ... + -cdrom iso/cidata.iso \ + ... +``` + +#### Example: Proxmox + +Proxmox can create cloud-init disk [for you](https://pve.proxmox.com/wiki/Cloud-Init_Support). +Edit the cloud-init config information in Proxmox as follows, substitute your own information as necessary: + + + +and then update ```cicustom``` param at `/etc/pve/qemu-server/$ID.conf`. + +```config +cicustom: user=local:snippets/master-1.yml +ipconfig0: ip=192.168.1.10/24,gw=192.168.10.254 +nameserver: 1.1.1.1 +searchdomain: local +``` + +> Note: `snippets/master-1.yml` is Talos machine config. +It is usually located at `/var/lib/vz/snippets/master-1.yml`. +This file must be placed to this path manually, as Proxmox does not support snippet uploading via API/GUI. + +Click on `Regenerate Image` button after the above changes are made. diff --git a/website/content/docs/v0.14/Cloud Platforms/nocloud.md b/website/content/docs/v0.14/Cloud Platforms/nocloud.md index 0050e390b..f721f852d 100644 --- a/website/content/docs/v0.14/Cloud Platforms/nocloud.md +++ b/website/content/docs/v0.14/Cloud Platforms/nocloud.md @@ -3,4 +3,123 @@ title: "Nocloud" description: "Creating a cluster via the CLI using qemu." --- -Talos is known to work on nocloud; however, it is currently undocumented. +Talos supports [nocloud](https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html) data source implementation. + +There are two ways to configure Talos server with `nocloud` platform: + +* via SMBIOS "serial number" option +* using CDROM or USB-flash filesystem + +### SMBIOS Serial Number + +This method requires the network connection to be up (e.g. via DHCP). +Configuration is delivered from the HTTP server. + +```text +ds=nocloud-net;s=http://10.10.0.1/configs/;h=HOSTNAME +``` + +After the network initialization is complete, Talos fetches: + +* the machine config from `http://10.10.0.1/configs/user-data` +* the network config (if available) from `http://10.10.0.1/configs/network-config` + +#### SMBIOS: QEMU + +Add the following flag to `qemu` command line when starting a VM: + +```bash +qemu-system-x86_64 \ + ...\ + -smbios type=1,serial=ds=nocloud-net;s=http://10.10.0.1/configs/ +``` + +#### SMBIOS: Proxmox + +Set the source machine config through the serial number on Proxmox GUI. + + + +The Proxmox stores the VM config at `/etc/pve/qemu-server/$ID.conf` (```$ID``` - VM ID number of virtual machine), you will see something like: + +```conf +... +smbios1: uuid=ceae4d10,serial=ZHM9bm9jbG91ZC1uZXQ7cz1odHRwOi8vMTAuMTAuMC4xL2NvbmZpZ3Mv,base64=1 +... +``` + +Where serial holds the base64-encoded string version of `ds=nocloud-net;s=http://10.10.0.1/configs/`. + +### CDROM/USB + +Talos can also get machine config from local attached storage without any prior network connection being established. + +You can provide configs to the server via files on a VFAT or ISO9660 filesystem. +The filesystem volume label must be ```cidata``` or ```CIDATA```. + +#### Example: QEMU + +Create and prepare Talos machine config: + +```bash +export CONTROL_PLANE_IP=192.168.1.10 + +talosctl gen config talos-nocloud https://$CONTROL_PLANE_IP:6443 --output-dir _out +``` + +Prepare cloud-init configs: + +```bash +mkdir -p iso +mv _out/controlplane.yaml iso/user-data +echo "local-hostname: controlplane-1" > iso/meta-data +cat > iso/network-config << EOF +version: 1 +config: + - type: physical + name: eth0 + mac_address: "52:54:00:12:34:00" + subnets: + - type: static + address: 192.168.1.10 + netmask: 255.255.255.0 + gateway: 192.168.1.254 +EOF +``` + +Create cloud-init iso image + +```bash +cd iso && genisoimage -output cidata.iso -V cidata -r -J user-data meta-data network-config +``` + +Start the VM + +```bash +qemu-system-x86_64 \ + ... + -cdrom iso/cidata.iso \ + ... +``` + +#### Example: Proxmox + +Proxmox can create cloud-init disk [for you](https://pve.proxmox.com/wiki/Cloud-Init_Support). +Edit the cloud-init config information in Proxmox as follows, substitute your own information as necessary: + + + +and then update ```cicustom``` param at `/etc/pve/qemu-server/$ID.conf`. + +```config +cicustom: user=local:snippets/master-1.yml +ipconfig0: ip=192.168.1.10/24,gw=192.168.10.254 +nameserver: 1.1.1.1 +searchdomain: local +``` + +> Note: `snippets/master-1.yml` is Talos machine config. +It is usually located at `/var/lib/vz/snippets/master-1.yml`. +This file must be placed to this path manually, as Proxmox does not support snippet uploading via API/GUI. + +Click on `Regenerate Image` button after the above changes are made. diff --git a/website/content/docs/v0.15/Cloud Platforms/nocloud.md b/website/content/docs/v0.15/Cloud Platforms/nocloud.md index 0050e390b..f721f852d 100644 --- a/website/content/docs/v0.15/Cloud Platforms/nocloud.md +++ b/website/content/docs/v0.15/Cloud Platforms/nocloud.md @@ -3,4 +3,123 @@ title: "Nocloud" description: "Creating a cluster via the CLI using qemu." --- -Talos is known to work on nocloud; however, it is currently undocumented. +Talos supports [nocloud](https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html) data source implementation. + +There are two ways to configure Talos server with `nocloud` platform: + +* via SMBIOS "serial number" option +* using CDROM or USB-flash filesystem + +### SMBIOS Serial Number + +This method requires the network connection to be up (e.g. via DHCP). +Configuration is delivered from the HTTP server. + +```text +ds=nocloud-net;s=http://10.10.0.1/configs/;h=HOSTNAME +``` + +After the network initialization is complete, Talos fetches: + +* the machine config from `http://10.10.0.1/configs/user-data` +* the network config (if available) from `http://10.10.0.1/configs/network-config` + +#### SMBIOS: QEMU + +Add the following flag to `qemu` command line when starting a VM: + +```bash +qemu-system-x86_64 \ + ...\ + -smbios type=1,serial=ds=nocloud-net;s=http://10.10.0.1/configs/ +``` + +#### SMBIOS: Proxmox + +Set the source machine config through the serial number on Proxmox GUI. + + + +The Proxmox stores the VM config at `/etc/pve/qemu-server/$ID.conf` (```$ID``` - VM ID number of virtual machine), you will see something like: + +```conf +... +smbios1: uuid=ceae4d10,serial=ZHM9bm9jbG91ZC1uZXQ7cz1odHRwOi8vMTAuMTAuMC4xL2NvbmZpZ3Mv,base64=1 +... +``` + +Where serial holds the base64-encoded string version of `ds=nocloud-net;s=http://10.10.0.1/configs/`. + +### CDROM/USB + +Talos can also get machine config from local attached storage without any prior network connection being established. + +You can provide configs to the server via files on a VFAT or ISO9660 filesystem. +The filesystem volume label must be ```cidata``` or ```CIDATA```. + +#### Example: QEMU + +Create and prepare Talos machine config: + +```bash +export CONTROL_PLANE_IP=192.168.1.10 + +talosctl gen config talos-nocloud https://$CONTROL_PLANE_IP:6443 --output-dir _out +``` + +Prepare cloud-init configs: + +```bash +mkdir -p iso +mv _out/controlplane.yaml iso/user-data +echo "local-hostname: controlplane-1" > iso/meta-data +cat > iso/network-config << EOF +version: 1 +config: + - type: physical + name: eth0 + mac_address: "52:54:00:12:34:00" + subnets: + - type: static + address: 192.168.1.10 + netmask: 255.255.255.0 + gateway: 192.168.1.254 +EOF +``` + +Create cloud-init iso image + +```bash +cd iso && genisoimage -output cidata.iso -V cidata -r -J user-data meta-data network-config +``` + +Start the VM + +```bash +qemu-system-x86_64 \ + ... + -cdrom iso/cidata.iso \ + ... +``` + +#### Example: Proxmox + +Proxmox can create cloud-init disk [for you](https://pve.proxmox.com/wiki/Cloud-Init_Support). +Edit the cloud-init config information in Proxmox as follows, substitute your own information as necessary: + + + +and then update ```cicustom``` param at `/etc/pve/qemu-server/$ID.conf`. + +```config +cicustom: user=local:snippets/master-1.yml +ipconfig0: ip=192.168.1.10/24,gw=192.168.10.254 +nameserver: 1.1.1.1 +searchdomain: local +``` + +> Note: `snippets/master-1.yml` is Talos machine config. +It is usually located at `/var/lib/vz/snippets/master-1.yml`. +This file must be placed to this path manually, as Proxmox does not support snippet uploading via API/GUI. + +Click on `Regenerate Image` button after the above changes are made. diff --git a/website/static/images/no-cloud/proxmox-cloudinit.png b/website/static/images/no-cloud/proxmox-cloudinit.png new file mode 100644 index 000000000..517ed2177 Binary files /dev/null and b/website/static/images/no-cloud/proxmox-cloudinit.png differ diff --git a/website/static/images/no-cloud/proxmox-smbios.png b/website/static/images/no-cloud/proxmox-smbios.png new file mode 100644 index 000000000..aefc03b8e Binary files /dev/null and b/website/static/images/no-cloud/proxmox-smbios.png differ