Skip to content

Releases

ansage v0.4.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 22:14
b3ee237

Full Changelog: v0.3.0...v0.4.0

ansage v0.3.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 18:53

Full Changelog: v0.2.0...v0.3.0

ansage v0.2.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 09:52
4a44a5f

herald is now ansage. This release only changes the name (plus the config docs for
[[neighbor]] and more end-to-end tests), but every name you touch changes with it, so it is
not a drop-in update from herald v0.1.0.

What changes

herald v0.1.0 ansage v0.2.0
/usr/local/bin/herald /usr/local/bin/ansage
/etc/herald/herald.toml /etc/ansage/ansage.toml
user and group herald user and group ansage
herald.service ansage.service
/run/herald/herald.sock /run/ansage/ansage.sock
metrics herald_* metrics ansage_*
env vars HERALD_* (HERALD_SUPERVISED, HERALD_VERSION, HERALD_BASE_URL) ANSAGE_*
github.com/miggish/herald github.com/miggish/ansage (old links redirect)

The config format is unchanged: the same file works as ansage.toml. One exception: if it sets
control_socket = "/run/herald/herald.sock", change it to /run/ansage/ansage.sock (or remove
the line, that is the default); the ansage unit only creates /run/ansage.

Moving from herald v0.1.0

The two daemons must not run at the same time (both would open sessions to the same neighbors).
If your neighbors support Graceful Restart, the switch keeps your routes up: herald closes its
sessions the way herald upgrade does, the neighbors keep your routes for restart_time
(default 30 s), and ansage takes over within a few seconds. Check first:

herald upgrade --dry-run     # every neighbor should say "keeps our routes"
# 1. Install ansage without a config: installed and enabled, not started yet.
curl -fsSL https://github.com/miggish/ansage/releases/download/v0.2.0/install.sh -o install.sh
sudo sh install.sh --operator "$USER"

# 2. The config for ansage: same file, new socket path. Check it with the new binary.
sudo sh -c 'umask 077; sed "s#/run/herald/herald.sock#/run/ansage/ansage.sock#" /etc/herald/herald.toml > /root/ansage.toml'
sudo ansage check -c /root/ansage.toml

# 3. Keep systemd from starting herald again after `herald upgrade` exits.
sudo mkdir -p /etc/systemd/system/herald.service.d
printf '[Service]\nRestart=no\nRestartForceExitStatus=\n' \
  | sudo tee /etc/systemd/system/herald.service.d/no-restart.conf
sudo systemctl daemon-reload

# 4. The switch: herald closes its sessions for a graceful restart and exits; the installer
#    then installs the config, adapts the unit (e.g. [kernel] needs CAP_NET_ADMIN) and starts
#    ansage. `herald upgrade` reports that herald did not come back: expected.
herald upgrade --timeout 3; sudo sh install.sh --config /root/ansage.toml
sudo rm /root/ansage.toml
ansage show summary          # every neighbor Established again (sudo until your next login)

# 5. When ansage looks good, remove herald.
sudo systemctl disable herald
sudo rm -r /etc/systemd/system/herald.service /etc/systemd/system/herald.service.d \
  /etc/systemd/system/herald.service.bak.* /usr/local/bin/herald /etc/herald
sudo systemctl daemon-reload
sudo userdel herald; sudo groupdel herald 2>/dev/null || true

Without Graceful Restart on your neighbors, your routes are withdrawn between the two daemons
(seconds). Replace step 3 and the herald upgrade in step 4 with
herald drain --wait 30 && sudo systemctl disable --now herald, so traffic moves away first.

Do not skip step 1 and copy the config by hand: the installer only adds the capabilities that
[kernel] needs when it sees the config, so let it install the config (step 4).

Tested on a production router (6 neighbors: two transits, two IXP route servers, v4 and v6):
ansage had all sessions Established about 5 s after herald stopped, routes stayed up.

If you run herald with your own unit file instead of the installer's, rename the user, group,
paths and RuntimeDirectory in it the same way.

Also update anything that reads herald from the outside: Prometheus queries, alert rules and
dashboards (herald_* → ansage_*, alert names Herald* → Ansage* if you copied ours), and
scripts that use the socket path or call herald.

Full Changelog: v0.1.0...v0.2.0

herald v0.1.0

Choose a tag to compare

@github-actions github-actions released this 07 Nov 09:33
f534658