NETWORK-CONFIG(5)
π¦ NETWORK-CONFIG(5) π¦
okay bestie, welcome to network-config(5) from the File Formats Manual β yes it's a section 5 page, yes it's a whole vibe β¨
π NAME π
network-config β the tiny-cloud-supported NoCloud network configuration format, and honestly? she's tiny, she's specific, she's iconic π
πΈ DESCRIPTION πΈ
network-config describes the subsets of the cloud-init network configuration versions 1 and 2 that tiny-cloud's NoCloud provider supports. not all of it, just the subsets β read the fine print, bestie, it matters π«Ά
This document is supplied as the separate NoCloud network-config file. Important: it does not have a top-level network key. and #network-config user-data? not yet supported. nope. not today. π«
β¨ VERSION 1 β¨
Version 1 documents contain a config list, like so:
version: 1
config:
- type: physical
name: eth0
subnets:
- type: dhcp4
The supported physical keys are name, mac_address, mtu, accept-ra, and subnets. The interface name is required β no name, no deal π. When a MAC address is supplied, tiny-cloud verifies an existing interface of that name or arranges a rename when necessary.
The supported subnet types are:
staticandstatic6dhcpanddhcp4dhcp6andipv6_dhcpv6-statefulipv6_dhcpv6-statelessipv6_slaac
Static subnets support address, IPv4 netmask, and gateway. DHCP subnets support metric. Subnets may also contain dns_nameservers and dns_search lists. Multiple physical entries and multiple supported subnets are emitted β yes, all of them, we're not playing favorites π
IPv4 dotted netmasks are converted to CIDR prefixes for ifupdown-ng. This includes /32 provider addressing with an explicitly supplied gateway. lowkey a flex, ngl.
A type: nameserver entry supports global address and search lists. Unsupported entry and subnet types are warned about and skipped, which lets the supported siblings get applied. so like, one flop doesn't ruin the whole group chat π
π VERSION 2 π
Version 2 documents contain an ethernets mapping:
version: 2
ethernets:
eth0:
dhcp4: true
The supported keys are:
ethernetsdhcp4anddhcp6accept-ramtumatch.macaddressset-nameaddressesgateway4andgateway6nameservers.addressesandnameservers.searchdhcp4-overrides.route-metricdhcp6-overrides.route-metric
All entries in an addresses list are emitted β every single one, no skips, periodt π₯. Addresses must use the CIDR notation expected by network-config version 2. that's the rule, don't fight it π
π§ INTERFACE RENAMING π§
Version 1 uses name with mac_address. A rename is required only when the requested interface name is not already present. Version 2 requests a rename with match.macaddress and set-name.
For a required rename, tiny-cloud applies the new name before networking and makes it persistent using the detected init system. here's the tea β:
- On OpenRC, tiny-cloud writes
/etc/tiny-cloud/iftab, configures/etc/conf.d/macifrenameto use it, and enables and starts themacifrenameservice. - On systemd, tiny-cloud writes native
.linkfiles under/etc/systemd/networkand reloadssystemd-udevd.
The affected entry is skipped when the required rename mechanism is unavailable. no mechanism, no rename, moving on π
π DHCP π
Ordinary DHCPv4 uses the default ifupdown-ng DHCP client. DHCPv6 and DHCP route metrics require dhcpcd.
If dhcpcd is unavailable, tiny-cloud warns and ignores only the unsupported DHCPv6 or metric setting. Other usable configuration on the interface β like DHCPv4, static addresses, or IPv6 router advertisements β is preserved π«Ά we do not throw the whole interface away, we are not messy.
π PRECEDENCE AND FALLBACK π
When PRESERVE_NETWORK_INTERFACES=1 and /etc/network/interfaces already exists, tiny-cloud preserves that file. If no interfaces file exists, normal processing continues. simple as that β¨
A nonempty separate NoCloud network-config file takes precedence over legacy meta-data/network-interfaces and an existing /etc/network/interfaces. A valid, usable version 1 or version 2 document is rendered and replaces the interfaces file atomically. no half-written files, we don't do that here π
When the separate network-config file is absent or empty, tiny-cloud uses legacy meta-data/network-interfaces when available. Otherwise, an existing interfaces file is preserved. If neither exists, normal tiny-cloud network fallback generates loopback and DHCP configuration for a detected interface.
β οΈ A present but malformed, unsupported, or unusablenetwork-configdoes not fall through to legacymeta-data/network-interfaces. An existing interfaces file is preserved; if none exists, normal tiny-cloud network fallback applies. so yes β a broken doc has consequences, ok?? π
Rendering is atomic. Failed rendering does not replace an existing interfaces file or apply DNS settings from the rejected document. rejected doc = rejected DNS, that's the rule π«
π FILES π
/var/lib/cloud/network-configNoCloud network configuration input./etc/network/interfacesGenerated ifupdown-ng configuration./etc/tiny-cloud/iftabPersistent MAC-to-interface-name mappings generated by tiny-cloud./etc/systemd/network/10-tiny-cloud-N.linkPersistent systemd interface rename policy generated by tiny-cloud./etc/conf.d/macifrenameOpenRC configuration selecting tiny-cloud's interface mapping file.
β SEE ALSO β
tiny-cloud.conf(5), tiny-cloud(8), interfaces(5) β go read those too, they're the supporting cast and they ate π
and that's the whole page bestie π this version is dated 2026-08-24 and it's NETWORK-CONFIG(5) all the way down β go configure something iconic π
π¦ where this page comes from
- alpine 3.24: tiny-cloud-doc 3.4.1-r2 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms