# CHANGELOG ## 2025:12-07 - Tiny Cloud v3.2.3 * Correctly identify empty `user-data` content instead of flagging it as "unknown". ## 2025-06-11 - Tiny Cloud v3.2.2 * Fix `Makefile` to dynamically generate the list of clouds, allowing the new code for DigitalOcean (and future additional clouds) to also be installed. * Fix testing with `oksh`. ## 2025-05-31 - Tiny Cloud v3.2.1 * Fix cloud-config user creation -- `users` would reuse values from previous user if unset. ## 2025-05-30 - Tiny Cloud v3.2.0 * Initial support for `digitalocean` cloud provider * Alpine autoinstall - allow override disk and reboot and set swap (@ncopa) * Warn when hostname is too long (per RFC-1035) instead of setting invalid value. ## 2024-12-03 - Tiny Cloud v3.1.0 * Default to "/usr merge" friendly installation locations * Configure cloud provider via kernel cmdline or DMI system serial -- either with or `tinycloud=cloud=` (we may introduce additional cmdline Tiny Cloud config settings in the future) or `ds=`. * Autodetection of `aws`, `azure`, `gcp`, `hetzner`, `oci`, and (maybe) `scaleway` cloud providers via DMI information. * Current order of priority for determining cloud... * `/etc/tiny-cloud.conf` _(image hardcoded)_ * `/var/lib/cloud/.autodetect` _(previously detected)_ * `/proc/cmdline` _(`tinycloud=cloud=...` or `ds=...`)_ * `/sys/class/dmi/id/product_serial` _(QEMU hack, same `cmdline`)_ * `/usr/lib/tiny-cloud/cloud/*/autodetect` scripts * Makefile improvements * generalize cloud install targets * ensure all user-data handlers get installed ## 2024-11-04 - Tiny Cloud v3.0.8 * Officially add Makefile targets and flesh out tests for newer cloud modules: `hetzner` (@hmrodrigues), `incus` (@ncopa), and `scaleway` (@hmrodrigues). * `cloud-config` user-data handler has been fleshed out with a ***subset*** of functionality, allowing the use of some common `#cloud-config` user-data configuration. * `alpine-config` user-data handler has been reimplemented as an extension of `cloud-config`, adding management of APK repositories and Alpine autoinstall. * Remove deprecated hotplug modules. `nvme-ebs-symlinks` has been deprecated since v3.0.0, and `imds-net-sync` hasn't been supported for AWS since tiny-cloud-network-2.2.2-r0 in Alpine Linux 3.17. * Remove code related to the installation/testing of hotplug modules. ## 2023-09-25 - Tiny Cloud v3.0.2 * Replace non-functioning `tiny-cloud --setup` with working `--enable` and `--disable` to enable/disable the set of Tiny Cloud init scripts. * Reload user-data if bootstrap is incomplete, even if previous user-data file exists. * Init actions that fail should cause `tiny-cloud` to also terminate with an error. ## 2023-06-12 - Tiny Cloud v3.0.1 * Adds support for additional `ssh-authorized-keys` via userdata for experimental Alpine auto installer. ## 2023-05-31 - Tiny Cloud v3.0.0 ### INIT SCRIPTS / PHASES * Tiny Cloud has been reorganized into **four** init script phases... * `boot` - "boot" runlevel, after `syslogd` is started, and before networking is up. * `early` - "default" runlevel, after networking is up, but *before* user-data is made available. This phase is responsible for pulling in user-data for *later* phases. * `main` - "default" runlevel, after user-data is available. Most things get done here. * `final` - "default" runlevel, after all other init scripts have finished. Typically user-data scripts are run here, and bootstrap status is marked as complete. * Tiny Cloud init functionality has been consolidated into **/sbin/tiny-cloud** and init scripts should use `tiny-cloud ` to indicate whether `boot`, `early`, `main`, or `final` actions should be taken. * Use `tiny-cloud --setup` to add/update Tiny Cloud's init scripts into the right runlevels. Currently only OpenRC is supported. * The example OpenRC init scripts been updated and moved to **dist/openrc/**. ### NEW STUFF * Tiny Cloud now supports the concept of user-data handlers, to support acting on different payload content-types. * Clouds and user-data handlers can specify their own (or supercede the default) init functions and/or change the init phase in which they are executed. The order of declaration is default --> cloud --> user-data (last one wins). * We now have an experimental `alpine` installer "cloud", based on NoCloud, and an associated `#alpine-config` user-data handler, which supports a subset of `#cloud-config` features, plus some extensions. As this is new, we expect it to experience some continued evolution. * Also thanks to Nataniel Copa (@ncopa), Tiny Cloud now has unit tests. ### DEPRECATION * `nvme-ebs-symlinks` has been _deprecated_ and disabled by default. The **mdev-conf** package, as of v4.4 is now responsible for maintaining NVMe device symlinks for AWS. ***WARNING:*** The behavior of **mdev-conf** is slightly different -- either **/dev/sd** or **/dev/xvd** symlinks are created as indicated in NVMe device metadata, *but NOT both*! ### MISCELLANEOUS * Tiny Cloud configuration has moved to **/etc/tiny-cloud.conf**. * `imds` now supports `@local-hostname` alias. For most clouds this is the same as `@hostname`. * Fixed setting `local-hostname` metadata from **/proc/cmdline** for NoCloud. ---- _CHANGELOG begins 2023-04-29_