AUTER(1)

πŸ“¦
version 1.0.0 Β· 3 versions
, in epel 10, fedora 43

πŸ’– AUTER(1) πŸ’–

okay bestie, welcome to AUTER(1) β€” the User Commands girlie of the manual world. Sit down, grab a strawberry, we're gonna learn about auter together πŸ“βœ¨


✨ NAME ✨

auter β€” Automatic Update Transaction Execution by Rackspace. no cap, that's the whole name. it's giving "we made the acronym fit, don't @ us" πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

auter [--enable|--disable|--status] [--prep] [--apply] [--reboot]
[--postreboot] [--config=<configfile>] [OPTIONS]

🌸 DESCRIPTION 🌸

Automatic Update Transaction Execution by Rackspace. Basically it's a wrapper around cron and yum/dnf/apt</> that manages your system updates for you, and it's highkey extra about it β€” it can do automatic reboots and run your own custom scripts too. main character energy fr fr πŸ‘‘

πŸŽ€ Actions:

  • --enable β€” turn auter ON. slay πŸ’–
  • --disable β€” turn auter OFF. and also, it deletes the unused pidfile if one's just sitting there existing. bye bestie πŸ‘‹
  • --status β€” shows you whether it's enabled or disabled. the vibe check, essentially ✨
  • --prep β€” pre-download those updates before applying them. look at you, being prepared 🌈
  • --apply β€” apply the updates, and reboot if AUTOREBOOT=yes. big moment πŸ”₯
  • --reboot β€” reboot the system, pre/post reboot scripts included, obviously 🧚
  • --postreboot β€” run the post reboot script 🫢

πŸ’… OPTIONS πŸ’…

  • --config=FILE β€” tell it the full path to an auter config file. if you don't, it just defaults to /etc/auter/auter.conf πŸ’œ
  • --stdout β€” always log to STDOUT, even when there's no tty. no hiding bestie πŸ“’
  • --maxdelay β€” override MAXDELAY straight from the command line. boss move πŸ‘‘
  • --skip-all-scripts β€” skip running all the custom scripts (the default spot for those is /etc/auter/*.d/). not today πŸ’€
  • --skip-scripts-by-phase=PHASE β€” skip the custom scripts for a specific phase. and yes, you can list multiple phases.
    • Valid Phases: pre-prep, post-prep, pre-apply, post-apply, pre-reboot, post-reboot.
    • Example: --skip-scripts-by-phase="pre-prep,post-apply,pre-reboot"
  • --skip-scripts-by-name=SCRIPTNAME β€” skip specific scripts by name. you can specify multiple phases.
    • Example: --skip-scripts-by-name="10-configsnap-pre, 20-startApp.sh"
  • --no-wall β€” if it's possible, suppress the shutdown wall messages during the reboot phase 🀫
  • -h, --help β€” show this help text. you are here πŸ“
  • -v, --version β€” show the version ⭐

🌈 DIRECTORIES 🌈

Default directory locations are listed down below; but you can set custom paths in the config file. and heads up β€” if you're running more than one auter profile, you gotta use additional, non-default config files. it's required, not optional 🫠

🧚 Pre/Post Hooks

If any scripts in the pre/post hook directories are not executable, auter will skip them and log a warning with the filename. and if any scripts in those directories exit with a non-zero exit code, auter logs an error with the filename and the exit code β€” and then auter aborts. like, full stop. 😭

  • /etc/auter/pre-prep.d β€” directory of scripts to run before downloading updates
  • /etc/auter/post-prep.d β€” directory of scripts to run after downloading updates
  • /etc/auter/pre-apply.d β€” directory of scripts to run before applying updates
  • /etc/auter/pre-apply.d β€” wait no bestie, we already said that. next one πŸ‘‡
  • /etc/auter/post-apply.d β€” directory of scripts to run after applying updates
  • /etc/auter/pre-reboot.d β€” directory of scripts to run before rebooting
  • /etc/auter/post-reboot.d β€” directory of scripts to run after rebooting
    • and there's a hard coded delay of 5 minutes post-reboot so the system can get fully ready before the post-reboot scripts run. it's napping. let it nap 😴

πŸŽ€ Hook Execution Order

Files in the pre/post script directories get parsed in sorted lexical order. so like, /etc/auter/pre-apply.d/01_first gets parsed before /etc/auter/pre-apply.d/10_second. and here's the tea β€” because the sorting is lexical, not numeric, /etc/auter/pre-apply.d/1_whoops would load after /etc/pre-apply.d/10_second. yeah. whoops indeed πŸ’€

using a consistent number of leading zeroes in your file names avoids this whole situation. for example, this is the execution order you'd get for pre-apply scripts:

pre-apply.d/00-first.sh
pre-apply.d/99-second.sh
pre-apply.d/AA-fourth.sh
pre-apply.d/aa-third.sh
pre-apply.d/zz-fifth.sh
pre-apply.d/ZZ-sixth.sh

and note that the ordering is case-insensitive, so AA-fourth.sh will be run before aa-third.sh. the alphabet said no favorites today ✨


πŸ‘‘ ENABLE/DISABLE πŸ‘‘

So, to make switching all your auter jobs on/off easy, you use auter --enable or auter --disable β€” which sets the lockfile /var/lib/auter/enabled. auter checks whether that file is present before it runs anything. presence check, that's it, that's the whole system πŸ¦‹

This is also the correct method for cleaning up an unused pidfile. correct method only. no shortcuts 🫢


πŸ”₯ REBOOTING πŸ”₯

Rebooting is an essential part of applying updates, because you need to make sure the updated packages are actually in use. An update to the kernel will always need a reboot, periodt.

Some application updates, like Apache for example, will restart the service. But often libraries get updated β€” openssl, for instance β€” and those don't force a reboot of the services using them. Rebooting guarantees every update is in use by running services. it's the only way to be sure πŸ’…

So you've got two options:

  1. Enable AUTOREBOOT=yes in the config file (the default is AUTOREBOOT=no), to reboot after --apply.
  2. Schedule a separate schedule for --reboot via a second cronjob.

A 2 minute warning is emitted before the server reboots, and a superuser can cancel it with shutdown -c. last chance to change your mind πŸ™ˆ


⭐ EXIT CODES ⭐

 0 = updates successful / no updates available
 3 = issue related to yum / dnf / apt-get command
 4 = auter disabled via lockfile
 5 = script not run as root / DATADIR does not exist / config file does
not exist
 6 = auter is already running / PIDFILE exists
 7 = yum, dnf or apt-get was not found
 8 = a pre/post hook exited with a non-zero error code

πŸ’œ AUTHORS πŸ’œ

This documentation was primarily written by, and we're giving them their flowers πŸ’:

Paolo Gigante
Piers Cornwell
Cameron Beere

🌸 FILES 🌸

  • /etc/auter/auter.conf β€” the default config file location. use the --config option to pass an alternative config file to use within /etc/auter.
  • /etc/cron.d/auter β€” the default cron file, with examples πŸŽ€
  • /usr/bin/auter β€” the main auter script, which contains linux generic code
  • /usr/lib/auter/auter.module β€” the auter module for the relevant package manager
  • /usr/share/doc/auter-0.11/LICENSE β€” the Apache License
  • /usr/share/doc/auter-0.11/MAINTAINERS.md β€” a list of maintainers and mailing list
  • /usr/share/doc/auter-0.11/NEWS β€” the NEWS file and changelog for auter

πŸ› REPORTING BUGS πŸ›

Found a bug? please report it by raising an issue against the github page, or email us at:

https://github.com/rackerlabs/auter/issues
auter-devel@rackspace.com

we wanna hear it. respectfully 🫢


πŸ’– SEE ALSO πŸ’–

auter.conf(5), cron(8), crontab(5)


no cap: every flag, every path, every exit code, every author β€” all here. go forth and update responsibly bestie πŸ’…βœ¨

okay bye, this was auter 1.0.0 from July 2025 β€” she's iconic, she's from Rackspace, and she's got the whole AUTER(1) manual energy. mwah πŸ’‹πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from