Host OS baseline
A barracuda pass does more than build the BOA stack. It also maintains parts
of the base operating system underneath it: the syslog daemon (always
rsyslog), what an interactive root login prints, and when the cron service is
started or reloaded. The defaults are right for a normal host, and most
operators never need this page.
Two optional presence markers in /root/ override the cron and login-banner
defaults. Both are operator-created — BOA has no writer for either anywhere in
the tree, and the hosted normalisation passes that create or erase a number of
other /root markers leave both alone — so each one persists until you delete
it. Neither is read for content; only presence matters. Each also has a
supported /root/.barracuda.cnf variable now, and that variable is the switch
to reach for; the marker files stay honoured for one release. And neither
changes anything the moment you set it: the next barracuda up-<tier> system
pass is what enacts the choice. (A third marker, the old syslog-daemon
choice, is retired — see below.)
The two markers at a glance
Marker in /root/ (variable form) |
Default without it | What its presence does |
|---|---|---|
.upstart.cnf (_NO_CRON_AUTOSTART=YES) |
BOA starts or reloads cron at three points | Suppresses those three cron starts — it never stops cron |
.dont.use.fancy.bash.login.cnf (_DONT_USE_FANCY_BASH_LOGIN=YES) |
Decorative root login banner | Neutralises the banner lines in /root/.bashrc and purges the packages behind them |
Turning either on is the same two steps. First set the ONE switch you
want in /root/.barracuda.cnf — both keys ship there, defaulting to
NO:
_NO_CRON_AUTOSTART=YES
# the other switch follows the same pattern:
# _DONT_USE_FANCY_BASH_LOGIN=YES
Then run the pass that applies it:
barracuda up-lts system
The marker files stay honoured for one release, and while one exists it
wins and is re-asserted on every upgrade pass. Turning a switch off during the
transition therefore means setting the variable to NO and deleting the marker
file, then running another pass.
The syslog daemon is rsyslog — no longer a choice
BOA installs and keeps rsyslog, unconditionally, and never removes it.
There used to be a syslog choice here: an OpenVZ-container arm selecting
inetutils-syslogd and a /root/.use.sysklogd.cnf marker (briefly converted
to _USE_SYSKLOGD=YES) selecting the classic sysklogd. Both arms purged
rsyslog first — and because sysklogd no longer has an install candidate on
current Devuan or Debian at all, an opted-in host ended up with no syslog
daemon at all. That is why the choice was retired: rsyslog is now the only
supported daemon, no arm of any pass removes it, and the OpenVZ arm went
with the rest (no OpenVZ hosts remain).
If your host still carries the old marker or a _USE_SYSKLOGD line in
/root/.barracuda.cnf, both are inert and safe to leave in place — nothing
reads them any more. A host that lost its syslog daemon to the old arm gets
rsyslog back on the next barracuda pass — every run now ensures the package
is present, outside the FULL-mode-only package section; to close the gap
immediately, apt-get install rsyslog by hand. If a legacy sysklogd
install is still present from years past, installing rsyslog replaces it —
the packages conflict, so apt swaps the legacy daemon out on its own.
The syslog_legacy process guard that watched those legacy daemons is retired
with them. A conflict-swap removes the old package but leaves its orphaned
/etc/init.d script behind (package state rc), so every barracuda pass now
also purges rc-state sysklogd/inetutils-syslogd leftovers — nothing on the
box references the old daemons any more. See
process guards for the remaining
service watchdogs.
Whether BOA touches the cron service
Setting _NO_CRON_AUTOSTART=YES in /root/.barracuda.cnf suppresses the three
places where BOA starts or reloads cron. /root/.upstart.cnf is the legacy form of
the same switch and stays honoured for one release. The three sites are:
- the tail of the
BOA.sh.txtbootstrap, immediately before it reports that the system is ready for a BOA installation (service cron reload) _finale, the last stage of everybarracudapass (service cron start)- the end of each per-account Octopus setup run (
service cron start)
All three tests are negated — [ ! -e … ] for the marker file, and either
[ "${_NO_CRON_AUTOSTART}" != "YES" ] or a negated anchored grep of the cnf for
the variable — so setting either form is the "leave it alone" state, and
clearing both is the default behaviour.
Two limits are worth stating plainly, because the marker's name and the folklore around it both overpromise:
- It never stops cron. The only
service cron stopin a barracuda pass sits inside the interactive major OS upgrade prompt, and that call consults neither the variable nor the marker. - It is only partially honoured. Several other paths start or reload cron
without checking it: the abnormal-exit cleanup, both in the
barracuda,octopus,boaandclusterwrappers and in the stagedBARRACUDAandOCTOPUSinstallers; the Nginx configuration stage on a fresh install; the duplicate-cron detector in the system monitor; the master-cron enable and disable helpers inrunner.sh, which reload cron on every toggle; the reload the BOA self-update runs after it appends themigration_proxy_certsline to the root crontab; and the migration tools. Read the switch as "BOA will not start cron at the end of a pass", not as a guarantee that cron stays down.
The marker's name is historical, from the Upstart era. It neither detects nor
selects an init system, and BOA never creates or removes it — which is why the
variable is named _NO_CRON_AUTOSTART, after what the switch actually does, rather
than after the file.
The root login banner
By default /root/.bashrc calls fancynow and screenfetch for interactive
root shells, and BOA keeps the toilet and figlet packages installed to draw
them. fancynow also fetches a short weather line from a third-party service on
each interactive login (with a two-second timeout), and prints nothing on hosts
where BOA has not cached a city name.
Creating /root/.dont.use.fancy.bash.login.cnf does two separate things on the
next pass:
- The login lines. Any
fancynowandscreenfetchlines in/root/.bashrcare rewritten to/bin/true. They stay in the file in neutered form rather than being deleted, and the rewrite only runs when the file currently contains afancynowline. - The packages.
toilet,figletandscreenfetchare purged — but only when/usr/bin/screenfetchexists at the time of the pass.
That second condition is a real co-guard and it inverts the outcome when it is
not met: with the marker set on a host that has no /usr/bin/screenfetch, the
else arm runs instead and installs toilet and figlet. This marker is
therefore not cosmetic-only — it moves the installed package set, in both
directions.
Removing the marker re-arms the banner on the next pass, and that moves the
package set back as well. The .bashrc arm purges the distro screenfetch
package whenever /usr/bin/screenfetch is present, then symlinks BOA's own
/opt/local/bin/screenfetch into /usr/bin/ in its place and appends a fresh
interactive-shell block to /root/.bashrc; the package arm reinstalls toilet
and figlet. The lines neutered earlier are left behind as harmless
/bin/true calls; tidy them by hand if you care about a clean .bashrc.
Related
- Manual BOA upgrade reference — the
barracuda up-*pass that applies both markers. - Process guards — the
_proc_controlservice watchdogs (the legacy-syslog guard is retired). - Control files overview — how presence markers sit beside the INI-style variables.
- barracuda.cnf reference — the
variables set in
/root/.barracuda.cnf.