PLN(5) FreeBSD File Formats Manual PLN(5)

plnprogressive label notation

Progressive Label Notation is a configuration format used by rset(1). pln allows key-value options to be defined inline, and tab-indented code blocks called to be executed sequentially. Labels support a single type of annotation known as .

pln files are arranged in a two-level hierarchy: a top-level routes file maps hostnames to a list of .pln files. All .pln files included in a route label are expected to be executed within a single .

Options may be set multiple times, and are effective for subsequent labels. The value is assigned all text between first `=` character and ⟨newline⟩

environment=LC_ALL="C.UTF-8"

An name ending with `=` is an empty assignment and will reset the option to a default value.

Labels may be split into multiple aliases separated by commas

svc1,10.0.0.10:
	common.pln
	svc.pln

Alternatively, sequence expressions may be used to define a host range

fs{2..5}.lan:
	zpool.pln

A list of pathnames following ‘:’ indicate directories to be staged on the remote host

scriptedconfiguration.org: common/ hub/
	users.pln
	hub.pln

Content defined between ⟨tab⟩ and ⟨newline⟩ is piped verbatim to external commands, avoiding the need to escape special characters. Empty lines are also permitted

packages:
	echo "http://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
	pkg_add rsync--

	mkdir -p /tftpboot/efi

A pair of braces immediately following a label captures the output of local execution before initiating a remote connection. The result of local execution is concatenated with the label content to form single script

set date:
{
	echo "NOW=$(date +%Y%m%d%H%M)"
}
	date $NOW

In specialized cases, export paths following ‘:’ identifies files to send or retrieve

_archive: hub.tar
	tar -Pp -cf hub.tar /var/www /etc/ssl

Comments begin with ‘#’, and are only recognized at start of a line.

labelgrep(1)

Eric Radman <ericshane@eradman.com>

FreeBSD 15.1-STABLE August 3, 2026 PLN(5)