### Second Overlord Apply and Get Info Source: https://github.com/dtxdf/overlord/wiki/ephemeral This sequence demonstrates reapplying the deployment after the guest OS installation and checking the project and VM status. ```console $ overlord apply -f app.yml $ overlord get-info -f app.yml -t projects --filter-per-project datacenter: http://controller.namespace.lan:8888 entrypoint: main chain: None labels: - all - desktop - services - vm-only projects: fbsd143: state: DONE last_log: 2025-08-07_16h47m22s locked: False services: - {'name': 'vm', 'status': 0, 'jail': 'fbsd143'} up: operation: RUNNING last_update: 3.28 seconds job_id: 133 $ overlord get-info -f app.yml -t projects --filter-per-project datacenter: http://controller.namespace.lan:8888 entrypoint: main chain: None labels: - all - desktop - services - vm-only projects: fbsd143: state: DONE last_log: 2025-08-07_17h00m24s locked: False services: - {'name': 'vm', 'status': 0, 'jail': 'fbsd143'} up: operation: COMPLETED output: rc: 0 stdout: {'errlevel': 0, 'message': None, 'failed': []} last_update: 8.72 seconds job_id: 133 restarted: False $ overlord get-info -f app.yml -t vm --filter-per-project datacenter: http://controller.namespace.lan:8888 entrypoint: main chain: None labels: - all - desktop - services - vm-only ``` -------------------------------- ### Basic cloud-init user-data example Source: https://github.com/dtxdf/overlord/wiki/cloud-init A simple example of cloud-init user-data to set a hostname and install packages. This is typically provided as a file or directly to the cloud provider's instance creation API. ```cloud-config #cloud-config # Set the hostname hostname: my-server # Install packages packages: - nginx - vim ``` -------------------------------- ### Start VM and Enable Services Source: https://github.com/dtxdf/overlord/wiki/ephemeral Initiates the virtual machine and enables services like `tailscaled` and `sshd`. ```shell tailscaled_enable: -> YES sshd_enable: NO -> YES vm_list: -> myvm Starting myvm * found guest in /vm/myvm * booting... ``` -------------------------------- ### SSH into Jail and Install Package Source: https://github.com/dtxdf/overlord/wiki/ephemeral Connect to the deployed jail via SSH and install the 'fastfetch' package using pkg. ```console $ ssh root@100.78.139.110 The authenticity of host '100.78.139.110 (100.78.139.110)' can't be established. ED25519 key fingerprint is SHA256:+0KHV4m5X42UZgZ2N+qtJDwm4EFl0yhvYo6VRenZlxc. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '100.78.139.110' (ED25519) to the list of known hosts. root@myvm:~ # pkg install -y fastfetch Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:15:amd64/latest, please wait... Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done Installing pkg-2.2.1... Newer FreeBSD version for package pkg: To ignore this error set IGNORE_OSVERSION=yes - package: 1500054 - running userland: 1500053 Ignore the mismatch and continue? [y/N]: y Extracting pkg-2.2.1: 100% Updating FreeBSD repository catalogue... pkg: Repository FreeBSD has a wrong packagesite, need to re-create database Fetching meta.conf: 100% 179 B 0.2kB/s 00:01 Fetching data.pkg: 100% 10 MiB 230.3kB/s 00:46 Processing entries: 0% Processing entries: 100% FreeBSD repository update completed. 36062 packages processed. Updating FreeBSD-kmods repository catalogue... FreeBSD-kmods repository is up to date. Updating FreeBSD-base repository catalogue... FreeBSD-base repository is up to date. All repositories are up to date. Updating database digests format: 100% The following 5 package(s) will be affected (of 0 checked): New packages to be INSTALLED: FreeBSD-bluetooth: 15.snap20250721070021 [FreeBSD-base] FreeBSD-libsdp: 15.snap20250707041723 [FreeBSD-base] fastfetch: 2.48.1 [FreeBSD] hwdata: 0.397,1 [FreeBSD] yyjson: 0.11.1 [FreeBSD] Number of packages to be installed: 5 The process will require 12 MiB more space. 2 MiB to be downloaded. [1/5] Fetching FreeBSD-bluetooth-15.snap20250721070021.pkg: 100% 182 KiB 186.6kB/s 00:01 [2/5] Fetching yyjson-0.11.1.pkg: 100% 126 KiB 129.1kB/s 00:01 [3/5] Fetching fastfetch-2.48.1.pkg: 100% 446 KiB 228.3kB/s 00:02 [4/5] Fetching hwdata-0.397,1.pkg: 100% 2 MiB 344.8kB/s 00:05 [5/5] Fetching FreeBSD-libsdp-15.snap20250707041723.pkg: 100% 8 KiB 8.3kB/s 00:01 Checking integrity... done (0 conflicting) [1/5] Installing FreeBSD-bluetooth-15.snap20250721070021... [1/5] Extracting FreeBSD-bluetooth-15.snap20250721070021: 100% [2/5] Installing FreeBSD-libsdp-15.snap20250707041723... [2/5] Extracting FreeBSD-libsdp-15.snap20250707041723: 100% [3/5] Installing hwdata-0.397,1... [3/5] Extracting hwdata-0.397,1: 100% [4/5] Installing yyjson-0.11.1... [4/5] Extracting yyjson-0.11.1: 100% [5/5] Installing fastfetch-2.48.1... [5/5] Extracting fastfetch-2.48.1: 100% root@myvm:~ # fastfetch ``` -------------------------------- ### Get Virtual Machine Details Source: https://github.com/dtxdf/overlord/wiki/ephemeral_vm Inspect the virtual machine's operational details, including its storage configuration (md0, zpool, zfs datasets) and package installation status. This command is useful for deep-diving into VM setup. ```bash $ overlord get-info -f pubVM/bsdtest.yml -t vm --filter-per-project datacenter: http://controller.namespace.lan:8888 entrypoint: main chain: None labels: - all - desktop - services - vm-only - dc-air projects: bsdtest: virtual-machines: operation: COMPLETED output: | md0 created md0p1 added md0p2 added md0p3 added + set -o pipefail + POOL=tank + [ format '=' format ] + zpool create -o 'altroot=/usr/local/appjail/jails/bsdtest/jail/mnt' -O 'compress=lz4' -O 'atime=off' -m none -t overlord-0059dd52-4743-41fc-97ac-ca001e3c7321 tank /dev/md0p3 + zfs create -o 'mountpoint=none' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/ROOT + zfs create -o 'mountpoint=/' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/ROOT/default + zfs create -o 'mountpoint=/home' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/home + zfs create -o 'mountpoint=/tmp' -o 'exec=on' -o 'setuid=off' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/tmp + chmod 1777 /usr/local/appjail/jails/test-vm/jail/mnt/tmp + zfs create -o 'mountpoint=/usr' -o 'canmount=off' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/usr + zfs create -o 'setuid=off' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/usr/ports + zfs create overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/usr/src + zfs create -o 'mountpoint=/var' -o 'canmount=off' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/var + zfs create -o 'exec=off' -o 'setuid=off' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/var/audit + zfs create -o 'exec=off' -o 'setuid=off' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/var/crash + zfs create -o 'exec=off' -o 'setuid=off' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/var/log + zfs create -o 'atime=on' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/var/mail + zfs create -o 'setuid=off' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/var/tmp + chmod 1777 /usr/local/appjail/jails/test-vm/jail/mnt/var/tmp + zfs set 'mountpoint=/tank' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321 + zpool set 'bootfs=overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/ROOT/default' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321 + mkdir -p /usr/local/appjail/jails/bsdtest/jail/mnt/boot/zfs + zpool set 'cachefile=/usr/local/appjail/jails/bsdtest/jail/mnt/boot/zfs/zpool.cache' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321 + zfs set 'canmount=noauto' overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/ROOT/default + zpool export overlord-0059dd52-4743-41fc-97ac-ca001e3c7321 bootcode written to md0 partcode written to md0p1 + set -o pipefail + POOL=tank + [ mount '=' format ] + [ mount '=' mount ] + zpool import -t -R /usr/local/appjail/jails/bsdtest/jail/mnt -d /dev/md0p3 tank overlord-0059dd52-4743-41fc-97ac-ca001e3c7321 + zfs mount overlord-0059dd52-4743-41fc-97ac-ca001e3c7321/ROOT/default + mkdir -p /usr/local/appjail/jails/bsdtest/jail/mnt/var/cache/pkg + mount -t nullfs /var/cache/pkgcache/FreeBSD:15:amd64 /usr/local/appjail/jails/bsdtest/jail/mnt/var/cache/pkg pkg: Setting ABI requires setting OSVERSION, guessing the OSVERSION as: 1500000 pkg: Warning: Major OS version upgrade detected. Running "pkg bootstrap -f" recommended Updating FreeBSD-base repository catalogue... Fetching meta.conf: . done Fetching data.pkg: ..... done Processing entries: .......... done FreeBSD-base repository update completed. 490 packages processed. All repositories are up to date. The following 61 package(s) will be affected (of 0 checked): New packages to be INSTALLED: FreeBSD-at: 15.snap20251023095006 FreeBSD-audit-lib: 15.snap20251023095006 ``` -------------------------------- ### SSH into Deployed VM and Install Fastfetch Source: https://github.com/dtxdf/overlord/wiki/ephemeral Connects to a deployed VM via SSH and installs the 'fastfetch' utility using apt. This demonstrates post-deployment interaction. ```console $ ssh user@100.89.3.114 The authenticity of host '100.89.3.114 (100.89.3.114)' can't be established. ED25519 key fingerprint is SHA256:QJvf2940g8JlsnTiWosIYR8VKHeBjfooxoj2qmS+jHE. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '100.89.3.114' (ED25519) to the list of known hosts. Linux debian 6.12.35+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.35-1 (2025-07-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. user@debian:~$ sudo apt install fastfetch Installing: fastfetch Installing dependencies: libyyjson0 Summary: Upgrading: 0, Installing: 2, Removing: 0, Not Upgrading: 0 Download size: 632 kB Space needed: 2083 kB / 38.9 GB available Continue? [Y/n] y Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B] Get:2 https://deb.debian.org/debian trixie/main amd64 libyyjson0 amd64 0.10.0+ds-1+b1 [89.3 kB] Get:3 https://deb.debian.org/debian trixie/main amd64 fastfetch amd64 2.40.4+dfsg-1 [543 kB] Fetched 632 kB in 1s (481 kB/s) Selecting previously unselected package libyyjson0:amd64. (Reading database ... 29601 files and directories currently installed.) Preparing to unpack .../libyyjson0_0.10.0+ds-1+b1_amd64.deb ... Unpacking libyyjson0:amd64 (0.10.0+ds-1+b1) ... Selecting previously unselected package fastfetch. Preparing to unpack .../fastfetch_2.40.4+dfsg-1_amd64.deb ... Unpacking fastfetch (2.40.4+dfsg-1) ... Setting up libyyjson0:amd64 (0.10.0+ds-1+b1) ... Setting up fastfetch (2.40.4+dfsg-1) ... Processing triggers for man-db (2.13.1-1) ... Processing triggers for libc-bin (2.41-12) ... user@debian:~$ fastfetch _,met$$$$$gg. user@debian ,g$$$$$$$$$$$$$$$P. ----------- ,g$$P" """Y$$.. OS: Debian GNU/Linux 13 (trixie) x86_64 ,$$P' `$$$. Host: BHYVE (1.0) ',$$P ,ggs. `$$b: Kernel: Linux 6.12.35+deb13-amd64 `d$$' ,$P"' . $$$ Uptime: 9 mins $$P d$' , $$P Packages: 327 (dpkg) $$: $$. - ,d$$' Shell: bash 5.2.37 $$; Y$b._ _,d$P' Terminal: /dev/pts/0 Y$$. `.`"Y$$$$P"' CPU: 4 x Intel(R) Core(TM) i5-7500T (4) @ 3.30 GHz `$$b "-.__ Memory: 445.67 MiB / 3.83 GiB (11%) `Y$$b Swap: Disabled ``` -------------------------------- ### nbdkit Configuration and Setup Source: https://github.com/dtxdf/overlord/wiki/ephemeral_vm This snippet defines the configuration for nbdkit, including volume mounting, network settings, and package installation. It also includes commands for creating and setting permissions for the disk image. ```shell OPTION start OPTION overwrite=force OPTION volume=nbdkit-data mountpoint:/data owner:0 group:0 OPTION virtualnet=: address:${nbdkit_address} default OPTION nat INCLUDE gh+DtxdF/efficient-makejail CMD mkdir -p /usr/local/etc/pkg/repos COPY ${OVERLORD_METADATA}/nbdkit.pkg.conf /usr/local/etc/pkg/repos/Latest.conf PKG nbdkit RAW if appjail cmd jexec "${APPJAIL_JAILNAME}" [ ! -f "/data/${nbdkit_volume}.img" ]; then CMD truncate -s "${nbdkit_size}" "/data/${nbdkit_volume}.img" CMD chown nobody:nobody "/data/${nbdkit_volume}.img" CMD chmod 600 "/data/${nbdkit_volume}.img" RAW fi COPY ${OVERLORD_METADATA}/nbdkit.sh /nbdkit.sh CMD chmod +x /nbdkit.sh CMD mkdir -p /data/.config CMD echo "${nbdkit_volume}" > /data/.config/volume CMD echo "${nbdkit_fadvise}" > /data/.config/fadvise STOP STAGE start CMD /nbdkit.sh ``` -------------------------------- ### Install Tailscale and Configure for appConfig Source: https://github.com/dtxdf/overlord/wiki/appconfig Installs the Tailscale package and configures it with an authentication key. Also enables the sshd service. ```shell + pkg -c /mnt install -y tailscale + head -1 -- /metadata/ts_auth_key + ts_auth_key=[REDACTED] + echo '/usr/local/bin/tailscale up --accept-dns=false --auth-key="[REDACTED]" && rm -f /etc/rc.local' + sysrc -f /mnt/etc/rc.conf 'tailscaled_enable=YES' + sysrc -f /mnt/etc/rc.conf 'sshd_enable=YES' ``` -------------------------------- ### Deployment Command Example Source: https://github.com/dtxdf/overlord/wiki/dataplaneapi This is a placeholder for the command to deploy the previously defined YAML files. The actual command is not provided in the source. ```console ``` -------------------------------- ### Install Tailscale and CA Certificates Source: https://github.com/dtxdf/overlord/wiki/appconfig This snippet shows the process of installing the tailscale package and ca_root_nss certificates on a FreeBSD system. It includes fetching, integrity checking, and installation steps. ```shell Processing entries: Processing entries............. done FreeBSD-base repository update completed. 525 packages processed. All repositories are up to date. The following 2 package(s) will be affected (of 0 checked): New packages to be INSTALLED: ca_root_nss: 3.108 [FreeBSD] tailscale: 1.82.5 [FreeBSD] Number of packages to be installed: 2 The process will require 35 MiB more space. 11 MiB to be downloaded. [vmtest002.appjail] [1/2] Fetching tailscale-1.82.5.pkg: .......... done [vmtest002.appjail] [2/2] Fetching ca_root_nss-3.108.pkg: .......... done Checking integrity... done (0 conflicting) [vmtest002.appjail] [1/2] Installing ca_root_nss-3.108... [vmtest002.appjail] [1/2] Extracting ca_root_nss-3.108: ....... done [vmtest002.appjail] [2/2] Installing tailscale-1.82.5... [vmtest002.appjail] [2/2] Extracting tailscale-1.82.5: ...... done ===== Message from ca_root_nss-3.108: -- FreeBSD does not, and can not warrant that the certification authorities whose certificates are included in this package have in any way been audited for trustworthiness or RFC 3647 compliance. Assessment and verification of trust is the complete responsibility of the system administrator. This package installs symlinks to support root certificate discovery for software that either uses other cryptographic libraries than OpenSSL, or use OpenSSL but do not follow recommended practice. If you prefer to do this manually, replace the following symlinks with either an empty file or your site-local certificate bundle. * /etc/ssl/cert.pem * /usr/local/etc/ssl/cert.pem * /usr/local/openssl/cert.pem ``` -------------------------------- ### Initial Jail Setup Script Source: https://github.com/dtxdf/overlord/wiki/ephemeral This script configures a jail for deployment, setting up networking, timezone, SSH, and package repositories. ```shell + head -1 -- /metadata/ts_auth_key + ts_auth_key=[REDACTED] + echo '/usr/local/bin/tailscale up --accept-dns=false --auth-key="[REDACTED]" && rm -f /etc/rc.local' + sysrc -f /mnt/etc/rc.conf 'tailscaled_enable=YES' + [ -f /metadata/timezone ] + head -1 -- /metadata/timezone + timezone=America/Caracas + ln -fs /usr/share/zoneinfo/America/Caracas /mnt/etc/localtime + [ -f /metadata/sshd_config ] + sysrc -f /mnt/etc/rc.conf 'sshd_enable=YES' + cp /metadata/sshd_config /mnt/etc/ssh/sshd_config + [ -f /metadata/ssh_key ] + cp /metadata/ssh_key /mnt/etc/ssh/authorized_keys + [ -f /metadata/sysctl.conf ] + cp /metadata/sysctl.conf /mnt/etc/sysctl.conf + [ -f /metadata/pkg.conf ] + mkdir -p /mnt/usr/local/etc/pkg/repos + cp /metadata/pkg.conf /mnt/usr/local/etc/pkg/repos/Latest.conf ``` -------------------------------- ### Install Overlord Package Source: https://github.com/dtxdf/overlord/wiki/install Install the Overlord package using pkg. ```shell pkg install -y py311-overlord ``` -------------------------------- ### Kicksecure YAML Deployment Configuration Source: https://github.com/dtxdf/overlord/wiki/nofreebsd_vm Example of a Kicksecure deployment configuration file. It specifies the ISO file to use and indicates that the OS has already been installed. ```yaml ... from: type: 'iso' isoFile: 'Kicksecure-Xfce-17.2.8.5.Intel_AMD64.iso' installed: true ``` -------------------------------- ### Initial Overlord Apply and Get Info Source: https://github.com/dtxdf/overlord/wiki/ephemeral This sequence shows the initial application of the Overlord deployment and retrieving project and VM information to check the status. ```console $ overlord apply -f app.yml $ overlord get-info -f app.yml -t projects --filter-per-project datacenter: http://controller.namespace.lan:8888 entrypoint: main chain: None labels: - all - desktop - services - vm-only projects: fbsd143: state: DONE last_log: 2025-08-07_16h47m22s locked: False services: - {'name': 'vm', 'status': 0, 'jail': 'fbsd143'} up: operation: NOOP last_update: 6.5 seconds job_id: 131 $ overlord get-info -f app.yml -t vm --filter-per-project datacenter: http://controller.namespace.lan:8888 entrypoint: main chain: None labels: - all - desktop - services - vm-only projects: fbsd143: virtual-machines: operation: COMPLETED output: | vm_list: -> fbsd143 Starting fbsd143 * found guest in /vm/fbsd143 * booting... last_update: 24.17 seconds job_id: 131 ``` -------------------------------- ### Configure FreeBSD VM for NBD Source: https://github.com/dtxdf/overlord/wiki/ephemeral_vm Installs necessary packages, enables NBD services, and configures the FreeBSD VM to use an NBD device for storage. This setup is crucial for ephemeral VM deployments. ```shell env ABI="${PKG_ABI}" pkg --chroot /mnt update -r FreeBSD-ports env ABI="${PKG_ABI}" pkg --chroot /mnt install -Ur FreeBSD-ports nbd-client-kmod sysrc -f /mnt/etc/rc.conf gnbd_enable="YES" sysrc -f /mnt/etc/rc.conf gnbd_devices="nbd0" sysrc -f /mnt/etc/rc.conf gnbd_nbd0_host="${VOLUME}" mkdir -p /mnt/usr/local/etc/rc.d cp /metadata/pubVM.mountdata.rc /mnt/usr/local/etc/rc.d/mountdata chmod +x /mnt/usr/local/etc/rc.d/mountdata sysrc -f /mnt/etc/rc.conf mountdata_enable="YES" fi sysrc -f /mnt/etc/rc.conf zpool_upgrade+="tank" touch /mnt/firstboot ``` -------------------------------- ### Install NBD Client Kernel Module Source: https://github.com/dtxdf/overlord/wiki/ephemeral_vm Installs the nbd-client-kmod package on the host system. This is a prerequisite for creating and managing NBD devices used by the ephemeral VMs. ```console pkg install -y nbd-client-kmod ``` -------------------------------- ### Overlord Deployment Chains Source: https://github.com/dtxdf/overlord/blob/main/README.md Shows example deployment chains for projects in Overlord, specifying entry points for deployment based on labels. ```text main . alpha . charlie & main . alpha . charlie . delta ``` -------------------------------- ### Apply Metadata and Get Info Source: https://github.com/dtxdf/overlord/wiki/metadata Commands to apply a metadata file and then retrieve information about the metadata resource. ```sh $ overlord apply -f metadata.yml $ overlord get-info -f metadata.yml -t metadata datacenter: http://127.0.0.1:8888 ``` -------------------------------- ### Deploy Kicksecure VM Source: https://github.com/dtxdf/overlord/wiki/nofreebsd_vm Commands to apply the VM deployment configuration and retrieve initial project information. Use these to start the VM creation process and check its status. ```console $ overlord apply -f kicksecure.yml $ overlord get-info -f kicksecure.yml -t projects --filter-per-project ``` -------------------------------- ### Overlord Apply and Get Info Commands Source: https://github.com/dtxdf/overlord/wiki/cloud-init Commands to apply the VM configuration and retrieve deployment status and virtual machine information using Overlord. ```console $ overlord apply -f debian/app.yml $ overlord get-info -f debian/app.yml -t projects --filter-per-project datacenter: http://controller.namespace.lan:8888 entrypoint: main chain: provider labels: - all - provider - vm-only projects: debian: state: DONE last_log: 2025-08-04_12h43m53s locked: False services: - {'name': 'vm', 'status': 0, 'jail': 'debian'} up: operation: COMPLETED output: rc: 0 stdout: {'errlevel': 0, 'message': None, 'failed': []} last_update: 5 minutes and 55.49 seconds job_id: 1 restarted: False $ overlord get-info -f debian/app.yml -t vm --filter-per-project datacenter: http://controller.namespace.lan:8888 entrypoint: main chain: provider labels: - all - provider - vm-only projects: debian: virtual-machines: operation: COMPLETED output: | vm_list: -> debian Starting debian * found guest in /vm/debian * booting... last_update: 5 minutes and 0.34 seconds job_id: 1 ``` -------------------------------- ### Get Project Info (Unfinished VM) Source: https://github.com/dtxdf/overlord/wiki/ephemeral Retrieves information about a project, showing a virtual machine in an unfinished state with a running operation. ```bash $ overlord get-info -f app.yml -t projects --filter-per-project datacenter: http://controller.namespace.lan:8888 entrypoint: main chain: None labels: - all - desktop - services - vm-only projects: myvm: state: UNFINISHED last_log: 2025-08-07_15h47m57s locked: True services: - {'name': 'vm', 'status': 0, 'jail': 'myvm'} up: operation: RUNNING last_update: 13.58 seconds job_id: 119 ``` -------------------------------- ### Get project information with overlord Source: https://github.com/dtxdf/overlord/wiki/appconfig Retrieves detailed project information, including VM state and logs, for a specific appConfig deployment. ```console $ overlord get-info -f app-components.yml -t projects --filter-per-project datacenter: http://127.0.0.1:8888 entrypoint: main chain: None labels: - all - desktop - services - vm-only projects: vmtest001: state: DONE last_log: 2025-05-02_20h35m10s locked: False services: - {'name': 'vm', 'status': 0, 'jail': 'vmtest001'} up: operation: COMPLETED output: rc: 0 stdout: {'errlevel': 0, 'message': None, 'failed': []} last_update: 1 minute and 50.25 seconds job_id: 5 restarted: False ``` -------------------------------- ### Get Project Information Source: https://github.com/dtxdf/overlord/wiki/ephemeral_vm Retrieve detailed information about projects, including their state, labels, and services, after deployment. This helps in verifying the deployment status. ```bash $ overlord get-info -f pubVM/bsdtest.yml -t projects --filter-per-project datacenter: http://controller.namespace.lan:8888 entrypoint: main chain: None labels: - all - desktop - services - vm-only - dc-air projects: bsdtest: state: DONE last_log: 2025-10-28_18h56m25s locked: False services: - {'name': 'vm', 'status': 0, 'jail': 'bsdtest'} up: operation: COMPLETED output: rc: 0 stdout: {'errlevel': 0, 'message': None, 'failed': []} last_update: 4 minutes and 24.6 seconds job_id: 1 restarted: False ``` -------------------------------- ### Overlord VM Deployment Output Source: https://github.com/dtxdf/overlord/wiki/nofreebsd_vm Example output from the overlord get-info command, showing the status and details of a deployed virtual machine. It confirms the operation completion and provides job information. ```text datacenter: http://127.0.0.1:8888 entrypoint: main chain: None labels: - all - desktop - vm-only projects: spo: virtual-machines: operation: COMPLETED output: | vm_list: -> spo Starting spo * found guest in /vm/spo * booting... last_update: 6.49 seconds job_id: 10 ``` -------------------------------- ### Configure rc.local for Tailscale Source: https://github.com/dtxdf/overlord/wiki/appconfig This snippet configures the rc.local file to start Tailscale on boot and then removes the original rc.local. Ensure the tailscale auth key is set in the environment. ```bash echo "/usr/local/bin/tailscale up --accept-dns=false --auth-key=\""${ts_auth_key}\"" && rm -f /etc/rc.local" > /mnt/etc/rc.local ``` -------------------------------- ### VM Jail Configuration with ISO Installation Source: https://github.com/dtxdf/overlord/wiki/ephemeral YAML configuration for deploying a virtual machine jail using an ISO image. This setup specifies options for ISO mounting and disk layout for installation. ```yaml kind: vmJail datacenter: main: entrypoint: !ENV '${ENTRYPOINT}' access_token: !ENV '${TOKEN}' deployIn: labels: - desktop vmName: 'fbsd143' makejail: 'gh+DtxdF/vm-makejail' overwrite: true datastore: '/var/appjail-vm/fbsd143/data' options: - fstab: '/var/appjail-vm/fbsd143/data vm-data ' - fstab: '/var/os-images/uploads /vm/.iso nullfs ro' template: loader: 'uefi' cpu: '4' memory: '2G' graphics: 'yes' graphics_listen: '0.0.0.0' graphics_res: '1280x720' xhci_mouse: 'yes' network0_type: 'virtio-net' network0_switch: 'public' wired_memory: 'YES' diskLayout: driver: 'nvme' size: '40G' from: type: 'iso' isoFile: 'FreeBSD-14.3-RELEASE-amd64-disc1.iso' ``` -------------------------------- ### Create a Deployment File (YAML) Source: https://github.com/dtxdf/overlord/wiki/deploy Define your project's configuration, including datacenters, entrypoints, access tokens, labels, project name, and service details like makejail. This file serves as the source of truth for your deployment. ```yaml kind: directorProject datacenter: main: entrypoint: 'http://127.0.0.1:8888' access_token: '' deployIn: labels: - desktop projectName: hello-http projectFile: | options: - virtualnet: ': default' - nat: services: hello-http: makejail: gh+DtxdF/hello-http-makejail ``` -------------------------------- ### Get VM information with overlord Source: https://github.com/dtxdf/overlord/wiki/appconfig Retrieves detailed virtual machine information, including network configuration and package installation status, for a specific appConfig deployment. ```console $ overlord get-info -f app-components.yml -t vm --filter-per-project datacenter: http://127.0.0.1:8888 entrypoint: main chain: None labels: - all - desktop - services - vm-only projects: vmtest002: virtual-machines: operation: COMPLETED output: | md0 created md0p1 added md0p2 added md0p3 added /dev/md0p3: 8190.0MB (16773120 sectors) block size 32768, fragment size 4096 using 14 cylinder groups of 625.22MB, 20007 blks, 80128 inodes. with soft updates super-block backups (for fsck_ffs -b #) at: 192, 1280640, 2561088, 3841536, 5121984, 6402432, 7682880, 8963328, 10243776, 11524224, 12804672, 14085120, 15365568, 16646016 Using inode 4 in cg 0 for 67108864 byte journal bootcode written to md0 partcode written to md0p1 ifconfig_vtnet0: -> inet 192.168.8.2/24 defaultrouter: NO -> 192.168.8.1 fsck_y_enable: NO -> YES clear_tmp_enable: NO -> YES dumpdev: NO -> NO moused_nondefault_enable: YES -> NO hostname: -> vmtest002 [vmtest002.appjail] Installing pkg-2.1.2... [vmtest002.appjail] Extracting pkg-2.1.2: .......... done Updating FreeBSD repository catalogue... [vmtest002.appjail] Fetching data.pkg: .......... done Processing entries: .......... done FreeBSD repository update completed. 35977 packages processed. Updating FreeBSD-base repository catalogue... [vmtest002.appjail] Fetching data.pkg: ... done ``` -------------------------------- ### Build Overlord from Source Source: https://github.com/dtxdf/overlord/wiki/install Clone the Overlord repository, build it, and copy configuration files. ```shell git clone https://github.com/DtxdF/overlord.git cd ./overlord/ make cp .overlord.yml /usr/local/etc/overlord.yml # See note#1 chmod 600 /usr/local/etc/overlord.yml cp supervisord/supervisord.conf /usr/local/etc/supervisord.conf # See note#2 mkdir -p /usr/local/etc/supervisord.d cp supervisord/supervisord.d/overlord.ini /usr/local/etc/supervisord.d mkdir -p /var/log/overlord service supervisord start ``` -------------------------------- ### Applying Project Configuration and Getting Project Info Source: https://github.com/dtxdf/overlord/wiki/autoscale-p1 These commands apply a project configuration and then retrieve detailed information about the project, including its state, logs, and service status, filtered by auto-scale labels. This helps verify the deployment and monitor its health. ```console # overlord apply -f hello-http.yml # overlord get-info -f hello-http.yml -t projects --use-autoscale-labels --filter-per-project datacenter: http://127.0.0.1:8888 entrypoint: main chain: bravo labels: - all - centralita - services projects: hello-http: state: DONE last_log: 2025-03-27_19h25m21s locked: False services: - {'name': 'darkhttpd', 'status': 0, 'jail': '6f027aa1a5'} up: operation: COMPLETED output: rc: 0 stdout: {'errlevel': 0, 'message': None, 'failed': []} last_update: 9 minutes and 35.07 seconds job_id: 12 labels: error: False message: None load-balancer: services: darkhttpd: error: False message: None skydns: services: darkhttpd: error: False message: (project:hello-http, service:darkhttpd, records:[address:True,ptr:None,srv:None] records has been updated. datacenter: http://127.0.0.1:8888 entrypoint: main chain: delta labels: - all - service002 - services projects: hello-http: state: DONE last_log: 2025-03-27_15h33m53s locked: False services: - {'name': 'darkhttpd', 'status': 0, 'jail': 'a5d6606a2c'} up: operation: COMPLETED output: rc: 0 stdout: {'errlevel': 0, 'message': None, 'failed': []} last_update: 9 minutes and 13.03 seconds job_id: 21 labels: error: False message: None load-balancer: services: darkhttpd: error: False message: None skydns: services: darkhttpd: error: False message: (project:hello-http, service:darkhttpd, records:[address:True,ptr:None,srv:None] records has been updated. ```