Update README.html.
authorMatt Birkholz <matt@birchwood-abbey.net>
Mon, 1 Apr 2024 23:01:27 +0000 (18:01 -0500)
committerMatt Birkholz <matt@birchwood-abbey.net>
Mon, 1 Apr 2024 23:01:27 +0000 (18:01 -0500)
README.html

index e4eed8415dd7dcab09b085a71c039028c6d3b397..b3b98236fa91803feb0dd8c9c883caa866a1022b 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2024-03-12 Tue 10:37 -->
+<!-- 2024-04-01 Mon 17:59 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Birchwood Abbey Networks</title>
@@ -64,7 +64,7 @@ map is very similar, with differences mainly in terminology,
 philosophy, attitude.
 </p>
 
-<pre class="example" id="org8911127">
+<pre class="example" id="orgb020477">
                 |                                                   
                 =                                                   
               _|||_                                                 
@@ -116,7 +116,7 @@ found in <a href="Institute/private/vars.yml"><q>Institute/private/vars.yml</q><
 </p>
 
 <div class="org-src-container">
-<q>public/vars.yml</q><pre class="src src-conf">---
+<a href="public/vars.yml"><q>public/vars.yml</q></a><pre class="src src-conf">---
 domain_name: birchwood-abbey.net
 
 full_name: Birchwood Abbey
@@ -136,15 +136,15 @@ with Apache2, spooling email with Postfix and serving it with
 Dovecot-IMAPd, and hosting a VPN with OpenVPN.
 </p>
 </div>
-<div id="outline-container-org0722391" class="outline-3">
-<h3 id="org0722391"><span class="section-number-3">3.1.</span> Install Emacs</h3>
+<div id="outline-container-orgd21e868" class="outline-3">
+<h3 id="orgd21e868"><span class="section-number-3">3.1.</span> Install Emacs</h3>
 <div class="outline-text-3" id="text-3-1">
 <p>
 The monks of the abbey are masters of the staff (bo) and Emacs.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/tasks/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-front/tasks/main.yml"><q>roles_t/abbey-front/tasks/main.yml</q></a><pre class="src src-conf">---
 - name: Install Emacs.
   become: yes
   <span class="org-variable-name">apt: pkg</span>=emacs
@@ -164,7 +164,7 @@ from there, forwarding <code>sysadm</code> to a real person.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/tasks/main.yml"><q>roles_t/abbey-front/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install abbey email aliases.
   become: yes
   blockinfile:
@@ -184,7 +184,7 @@ from there, forwarding <code>sysadm</code> to a real person.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/handlers/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-front/handlers/main.yml"><q>roles_t/abbey-front/handlers/main.yml</q></a><pre class="src src-conf">---
 - name: New aliases.
   become: yes
   command: newaliases
@@ -265,7 +265,7 @@ like <code>git-tasks</code> and <code>git-handlers</code>.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/tasks/main.yml"><q>roles_t/abbey-front/tasks/main.yml</q></a><pre class="src src-conf">
 &lt;&lt;git-tasks&gt;&gt;
 </pre>
 </div>
@@ -303,7 +303,7 @@ like <code>git-tasks</code> and <code>git-handlers</code>.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/handlers/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/handlers/main.yml"><q>roles_t/abbey-front/handlers/main.yml</q></a><pre class="src src-conf">
 &lt;&lt;git-handlers&gt;&gt;
 </pre>
 </div>
@@ -481,6 +481,21 @@ filename suffixes.
 &lt;/Directory&gt;
 </pre>
 </div>
+
+<p>
+The following <q>.htaccess</q> file works with the directives above.  It
+declares most the native source files in the current directory tree to
+be plain text, so that they are displayed rather than downloaded.
+</p>
+
+<div class="org-src-container">
+<a href=".htaccess"><q>.htaccess</q></a><pre class="src src-conf">ReadmeName notfound.html
+IndexIgnore README.org
+AddType text/plain attr campus_vpn cfg cnf conf crt daily_letsencrypt
+AddType text/plain domain el htaccess idx j2 key old org pack pem
+AddType text/plain private pub public_vpn req rev sample txt yml
+</pre>
+</div>
 </div>
 </div>
 <div id="outline-container-org1a605db" class="outline-3">
@@ -529,7 +544,7 @@ rest of the Let's Encrypt configuration is discussed in the following
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/tasks/main.yml"><q>roles_t/abbey-front/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Configure Apache.
   become: yes
   vars:
@@ -549,7 +564,7 @@ rest of the Let's Encrypt configuration is discussed in the following
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/handlers/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/handlers/main.yml"><q>roles_t/abbey-front/handlers/main.yml</q></a><pre class="src src-conf">
 &lt;&lt;apache-gitweb-handlers&gt;&gt;
 </pre>
 </div>
@@ -573,7 +588,7 @@ The replacement <q>logrotate-mailer</q> does, and includes it in a
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/tasks/main.yml"><q>roles_t/abbey-front/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Configure Apache log archival.
   become: yes
   lineinfile:
@@ -613,7 +628,7 @@ The replacement <q>logrotate-mailer</q> does, and includes it in a
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/handlers/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/handlers/main.yml"><q>roles_t/abbey-front/handlers/main.yml</q></a><pre class="src src-conf">
 - name: Reload systemd.
   become: yes
   systemd:
@@ -630,7 +645,7 @@ page.)
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/files/logrotate-mailer.conf</q><pre class="src src-conf">[<span class="org-type">Service</span>]
+<a href="roles_t/abbey-front/files/logrotate-mailer.conf"><q>roles_t/abbey-front/files/logrotate-mailer.conf</q></a><pre class="src src-conf">[<span class="org-type">Service</span>]
 <span class="org-variable-name">ExecStart</span>=
 <span class="org-variable-name">ExecStart</span>=/usr/sbin/logrotate \
                 --mail /usr/local/sbin/logrotate-mailer \
@@ -650,7 +665,7 @@ Droplet's ISP's Mom, the NSA/CIA/NWO.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/files/logrotate-mailer</q><pre class="src src-sh"><span class="org-comment-delimiter">#</span><span class="org-comment">!/bin/</span><span class="org-keyword">bash</span><span class="org-comment"> -e</span>
+<a href="roles_t/abbey-front/files/logrotate-mailer"><q>roles_t/abbey-front/files/logrotate-mailer</q></a><pre class="src src-sh"><span class="org-comment-delimiter">#</span><span class="org-comment">!/bin/</span><span class="org-keyword">bash</span><span class="org-comment"> -e</span>
 
 <span class="org-keyword">if</span> [ <span class="org-string">"$#"</span> != 3 -o <span class="org-string">"$1"</span> != <span class="org-string">"-s"</span> ]; <span class="org-keyword">then</span>
     <span class="org-builtin">echo</span> <span class="org-string">"usage: $0 -s subject recipient"</span> 1&gt;&amp;2
@@ -695,11 +710,11 @@ certificate is a terminal session affair (with prompts and lines
 entered as shown below).
 </p>
 
-<pre class="example" id="orgfd7e12d">
+<pre class="example" id="orgdef9c50">
 $ sudo apt install python3-certbot-apache
 $ sudo certbot --apache -d birchwood-abbey.net
 ...
-Enter email address (...) (Enter 'c' to cancel): webmaster@birchwood-a
+Enter email address (...) (Enter 'c' to cancel): webmaster@birchwood-
 bbey.net
 ...
 Please read the Terms of Service at
@@ -710,30 +725,30 @@ Would you be willing to share your email address...
 ...
 (Y)es/(N)o: Y
 ...
-Deploying Certificate to VirtualHost /etc/apache2/sites-enabled/birchw
+Deploying Certificate to VirtualHost /etc/apache2/sites-enabled/birch
 ood-abbey.net.conf
 
-Please choose whether or not to redirect HTTP traffic to HTTPS, removi
+Please choose whether or not to redirect HTTP traffic to HTTPS, remov
 ng HTTP access.
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-1: No redirect - Make no further changes to the webserver configuratio
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+1: No redirect - Make no further changes to the webserver configurati
 n.
 ...
-Select the appropriate number [1-2] then [enter] (press 'c' to cancel)
+Select the appropriate number [1-2] then [enter] (press 'c' to cancel
 : 1
 
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-Congratulations! You have successfully enabled https://birchwood-abbey
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+Congratulations! You have successfully enabled https://birchwood-abbe
 .net
 
 You should test your configuration at:
 https://www.ssllabs.com/ssltest/analyze.html?d=birchwood-abbey.net
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
 IMPORTANT NOTES:
  - Your account credentials have been saved in your Certbot
    configuration directory at /etc/letsencrypt. You should make a
-   secure backup of this folder now. This configuration directory will
+   secure backup of this folder now. This configuration directory wil
    also contain certificates and private keys obtained by Certbot so
    making regular backups of this folder is ideal.
 ...
@@ -742,7 +757,7 @@ IMPORTANT NOTES:
    Your key file has been saved at:
    /etc/letsencrypt/live/birchwood-abbey.net/privkey.pem
    Your cert will expire on 2019-01-13. To obtain a new or tweaked
-   version of this certificate in the future, simply run certbot again
+   version of this certificate in the future, simply run certbot agai
    with the "certonly" option. To non-interactively renew *all* of
    your certificates, run "certbot renew"
 </pre>
@@ -756,7 +771,7 @@ package is installed and its <q>live/</q> subdirectory is world readable.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/tasks/main.yml"><q>roles_t/abbey-front/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install Certbot for Apache.
   become: yes
   <span class="org-variable-name">apt: pkg</span>=python3-certbot-apache
@@ -789,7 +804,7 @@ restarted manually.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/tasks/main.yml"><q>roles_t/abbey-front/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Use Let<span class="org-string">'s Encrypt certificate&amp;key.</span>
 <span class="org-string">  file:</span>
 <span class="org-string">    state: link</span>
@@ -813,7 +828,7 @@ The following task arranges to rotate Certbot's logs files.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/tasks/main.yml"><q>roles_t/abbey-front/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install Certbot logrotate configuration.
   become: yes
   copy:
@@ -824,7 +839,7 @@ The following task arranges to rotate Certbot's logs files.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/files/certbot_logrotate</q><pre class="src src-conf"><span class="org-type">/var/log/letsencrypt/*.log</span> {
+<a href="roles_t/abbey-front/files/certbot_logrotate"><q>roles_t/abbey-front/files/certbot_logrotate</q></a><pre class="src src-conf"><span class="org-type">/var/log/letsencrypt/*.log</span> {
     rotate 12
     weekly
     compress
@@ -844,7 +859,7 @@ are detected by keeping a copy in <q>/etc/letsencrypt~/</q> for comparison.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/tasks/main.yml"><q>roles_t/abbey-front/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install Let<span class="org-string">'s Encrypt archive script.</span>
 <span class="org-string">  become: yes</span>
 <span class="org-string">  copy:</span>
@@ -855,7 +870,7 @@ are detected by keeping a copy in <q>/etc/letsencrypt~/</q> for comparison.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/files/cron.daily_letsencrypt</q><pre class="src src-sh"><span class="org-comment-delimiter">#</span><span class="org-comment">!/bin/</span><span class="org-keyword">bash</span><span class="org-comment"> -e</span>
+<a href="roles_t/abbey-front/files/cron.daily_letsencrypt"><q>roles_t/abbey-front/files/cron.daily_letsencrypt</q></a><pre class="src src-sh"><span class="org-comment-delimiter">#</span><span class="org-comment">!/bin/</span><span class="org-keyword">bash</span><span class="org-comment"> -e</span>
 
 <span class="org-builtin">cd</span> /etc/
 
@@ -882,7 +897,7 @@ imported into <code>root@front</code>'s GnuPG key file.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/tasks/main.yml"><q>roles_t/abbey-front/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Copy root@core<span class="org-string">'s public key.</span>
 <span class="org-string">  become: yes</span>
 <span class="org-string">  copy:</span>
@@ -894,7 +909,7 @@ imported into <code>root@front</code>'s GnuPG key file.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-front/handlers/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-front/handlers/main.yml"><q>roles_t/abbey-front/handlers/main.yml</q></a><pre class="src src-conf">
 - name: Import root@core<span class="org-string">'s public key.</span>
 <span class="org-string">  become: yes</span>
 <span class="org-string">  command: gpg --import ~/.gnupg-root-pub.pem</span>
@@ -914,8 +929,8 @@ with Postfix and Dovecot, and providing essential localnet services:
 NTP, DNS and DHCP.
 </p>
 </div>
-<div id="outline-container-orgfa3f5c8" class="outline-3">
-<h3 id="orgfa3f5c8"><span class="section-number-3">4.1.</span> Include Abbey Variables</h3>
+<div id="outline-container-org8eab1d7" class="outline-3">
+<h3 id="org8eab1d7"><span class="section-number-3">4.1.</span> Include Abbey Variables</h3>
 <div class="outline-text-3" id="text-4-1">
 <p>
 In this abbey specific document, most abbey particulars are not
@@ -927,7 +942,7 @@ directory, <q>playbooks/</q>.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">---
 - name: Include private abbey variables.
   include_vars: ../private/vars-abbey.yml
 </pre>
@@ -947,7 +962,7 @@ packages).
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install additional packages.
   apt:
     pkg: [ libhtml-tree-perl, libjs-jquery, mit-scheme, gnuplot ]
@@ -972,7 +987,7 @@ e.g. <code>mythtv@mythtv.birchwood-abbey.net</code>, locally.)
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install abbey email aliases.
   become: yes
   blockinfile:
@@ -988,7 +1003,7 @@ e.g. <code>mythtv@mythtv.birchwood-abbey.net</code>, locally.)
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/handlers/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-core/handlers/main.yml"><q>roles_t/abbey-core/handlers/main.yml</q></a><pre class="src src-conf">---
 - name: New aliases.
   become: yes
   command: newaliases
@@ -1006,13 +1021,13 @@ services on Front and Core.  See <a href="#org31d6bbb">3.3</a> and
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 &lt;&lt;git-tasks&gt;&gt;
 </pre>
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/handlers/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/handlers/main.yml"><q>roles_t/abbey-core/handlers/main.yml</q></a><pre class="src src-conf">
 &lt;&lt;git-handlers&gt;&gt;
 </pre>
 </div>
@@ -1029,7 +1044,7 @@ site on Front.  Their configurations include the same <a href="#org158c789"><cod
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Configure live website.
   become: yes
   vars:
@@ -1061,7 +1076,7 @@ site on Front.  Their configurations include the same <a href="#org158c789"><cod
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/handlers/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/handlers/main.yml"><q>roles_t/abbey-core/handlers/main.yml</q></a><pre class="src src-conf">
 &lt;&lt;apache-gitweb-handlers&gt;&gt;
 </pre>
 </div>
@@ -1079,7 +1094,7 @@ directives that enable user Git publishing with Gitweb (defined <a href="#org119
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Configure house website.
   become: yes
   copy:
@@ -1105,7 +1120,7 @@ The abbey uses the Apt-Cacher:TNG package cache on Core.  The
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install Apt-Cacher:TNG.
   become: yes
   <span class="org-variable-name">apt: pkg</span>=apt-cacher-ng
@@ -1113,20 +1128,21 @@ The abbey uses the Apt-Cacher:TNG package cache on Core.  The
 </div>
 </div>
 </div>
-<div id="outline-container-org2658c84" class="outline-3">
-<h3 id="org2658c84"><span class="section-number-3">4.8.</span> Use Cloister Apt Cache</h3>
+<div id="outline-container-orgbfebaa2" class="outline-3">
+<h3 id="orgbfebaa2"><span class="section-number-3">4.8.</span> Use Cloister Apt Cache</h3>
 <div class="outline-text-3" id="text-4-8">
 <p>
 Core itself will benefit from using the package cache.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Use the local Apt package cache.
   become: yes
   copy:
-    content: |
-      Acquire::http::Proxy <span class="org-string">"http://apt-cacher.{{ domain_priv }}.:3142"</span>;
+    content: &gt;
+      Acquire::http::Proxy
+        <span class="org-string">"http://apt-cacher.{{ domain_priv }}.:3142"</span>;
     dest: /etc/apt/apt.conf.d/01proxy
     <span class="org-variable-name">mode: u</span>=rw,g=r,o=r
 </pre>
@@ -1158,7 +1174,7 @@ remaining on roots.)
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Configure NAGIOS monitoring for Core /home/.
   become: yes
   copy:
@@ -1175,7 +1191,7 @@ remaining on roots.)
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/handlers/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/handlers/main.yml"><q>roles_t/abbey-core/handlers/main.yml</q></a><pre class="src src-conf">
 - name: Reload NAGIOS4.
   become: yes
   systemd:
@@ -1199,7 +1215,7 @@ recognizable temperature in the <code>sensors</code> output.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/files/abbey_pisensors</q><pre class="src src-sh"><span class="org-comment-delimiter">#</span><span class="org-comment">!/bin/</span><span class="org-keyword">sh</span>
+<a href="roles_t/abbey-core/files/abbey_pisensors"><q>roles_t/abbey-core/files/abbey_pisensors</q></a><pre class="src src-sh"><span class="org-comment-delimiter">#</span><span class="org-comment">!/bin/</span><span class="org-keyword">sh</span>
 
 <span class="org-variable-name">PATH</span>=<span class="org-string">"/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"</span>
 <span class="org-builtin">export</span> PATH
@@ -1217,7 +1233,8 @@ recognizable temperature in the <code>sensors</code> output.
         <span class="org-builtin">echo</span> <span class="org-string">""</span>
         print_usage
         <span class="org-builtin">echo</span> <span class="org-string">""</span>
-        <span class="org-builtin">echo</span> <span class="org-string">"This plugin checks hardware status using the lm_sensors package."</span>
+        <span class="org-builtin">echo</span> <span class="org-string">"This plugin checks hardware status using"</span> <span class="org-sh-escaped-newline">\</span>
+                <span class="org-string">"the lm_sensors package."</span>
         <span class="org-builtin">echo</span> <span class="org-string">""</span>
         support
         <span class="org-keyword">exit</span> $<span class="org-variable-name">STATE_OK</span>
@@ -1225,55 +1242,56 @@ recognizable temperature in the <code>sensors</code> output.
 
 <span class="org-function-name">brief_data</span>() {
     <span class="org-builtin">echo</span> <span class="org-string">"$1"</span> | sed -n -E -e <span class="org-string">'</span>
-<span class="org-string">  /^temp[0-9]+: +[-+][0-9.]+.?C/ { s/^temp[0-9]+: +([-+][0-9.]+).?C.*/ \1/; H }</span>
+<span class="org-string">  /^temp[0-9]+: +[-+][0-9.]+.?C/ {</span>
+<span class="org-string">    s/^temp[0-9]+: +([-+][0-9.]+).?C.*/ \1/; H }</span>
 <span class="org-string">  $ { x; s/\n//g; p }'</span>
 }
 
 <span class="org-keyword">case</span> <span class="org-string">"$1"</span><span class="org-keyword"> in</span>
-        --help)
-                print_help
-                <span class="org-keyword">exit</span> $<span class="org-variable-name">STATE_OK</span>
-                ;;
-        -h)
-                print_help
-                <span class="org-keyword">exit</span> $<span class="org-variable-name">STATE_OK</span>
-                ;;
-        --version)
-                print_revision $<span class="org-variable-name">PROGNAME</span> $<span class="org-variable-name">REVISION</span>
-                <span class="org-keyword">exit</span> $<span class="org-variable-name">STATE_OK</span>
-                ;;
-        -V)
-                print_revision $<span class="org-variable-name">PROGNAME</span> $<span class="org-variable-name">REVISION</span>
-                <span class="org-keyword">exit</span> $<span class="org-variable-name">STATE_OK</span>
-                ;;
-        *)
-                <span class="org-variable-name">sensordata</span>=<span class="org-sh-quoted-exec">`sensors 2&gt;&amp;1`</span>
-                <span class="org-variable-name">status</span>=$<span class="org-variable-name">?</span>
-                <span class="org-keyword">if </span><span class="org-builtin">test</span> ${<span class="org-variable-name">status</span>} -eq 127; <span class="org-keyword">then</span>
-                        <span class="org-variable-name">text</span>=<span class="org-string">"SENSORS UNKNOWN - command not found"</span>
-                        <span class="org-variable-name">text</span>=<span class="org-string">"$text (did you install lmsensors?)"</span>
-                        <span class="org-variable-name">exit</span>=$<span class="org-variable-name">STATE_UNKNOWN</span>
-                <span class="org-keyword">elif </span><span class="org-builtin">test</span> ${<span class="org-variable-name">status</span>} -ne 0; <span class="org-keyword">then</span>
-                        <span class="org-variable-name">text</span>=<span class="org-string">"WARNING - sensors returned state $status"</span>
-                        <span class="org-variable-name">exit</span>=$<span class="org-variable-name">STATE_WARNING</span>
-                <span class="org-keyword">elif </span><span class="org-builtin">echo</span> ${<span class="org-variable-name">sensordata</span>} | egrep ALARM &gt; /dev/null; <span class="org-keyword">then</span>
-                        <span class="org-variable-name">text</span>=<span class="org-string">"SENSOR CRITICAL -`brief_data "${sensordata}"`"</span>
-                        <span class="org-variable-name">exit</span>=$<span class="org-variable-name">STATE_CRITICAL</span>
-                <span class="org-keyword">elif </span><span class="org-builtin">echo</span> ${<span class="org-variable-name">sensordata</span>} | egrep FAULT &gt; /dev/null <span class="org-sh-escaped-newline">\</span>
-                    &amp;&amp; <span class="org-builtin">test</span> <span class="org-string">"$1"</span> != <span class="org-string">"-i"</span> -a <span class="org-string">"$1"</span> != <span class="org-string">"--ignore-fault"</span>; <span class="org-keyword">then</span>
-                        <span class="org-variable-name">text</span>=<span class="org-string">"SENSOR UNKNOWN - Sensor reported fault"</span>
-                        <span class="org-variable-name">exit</span>=$<span class="org-variable-name">STATE_UNKNOWN</span>
-                <span class="org-keyword">else</span>
-                        <span class="org-variable-name">text</span>=<span class="org-string">"SENSORS OK -`brief_data "${sensordata}"`"</span>
-                        <span class="org-variable-name">exit</span>=$<span class="org-variable-name">STATE_OK</span>
-                <span class="org-keyword">fi</span>
-
-                <span class="org-builtin">echo</span> <span class="org-string">"$text"</span>
-                <span class="org-keyword">if </span><span class="org-builtin">test</span> <span class="org-string">"$1"</span> = <span class="org-string">"-v"</span> -o <span class="org-string">"$1"</span> = <span class="org-string">"--verbose"</span>; <span class="org-keyword">then</span>
-                        <span class="org-builtin">echo</span> ${<span class="org-variable-name">sensordata</span>}
-                <span class="org-keyword">fi</span>
-                <span class="org-keyword">exit</span> $<span class="org-variable-name">exit</span>
-                ;;
+--help)
+        print_help
+        <span class="org-keyword">exit</span> $<span class="org-variable-name">STATE_OK</span>
+        ;;
+-h)
+        print_help
+        <span class="org-keyword">exit</span> $<span class="org-variable-name">STATE_OK</span>
+        ;;
+--version)
+        print_revision $<span class="org-variable-name">PROGNAME</span> $<span class="org-variable-name">REVISION</span>
+        <span class="org-keyword">exit</span> $<span class="org-variable-name">STATE_OK</span>
+        ;;
+-V)
+        print_revision $<span class="org-variable-name">PROGNAME</span> $<span class="org-variable-name">REVISION</span>
+        <span class="org-keyword">exit</span> $<span class="org-variable-name">STATE_OK</span>
+        ;;
+*)
+        <span class="org-variable-name">sensordata</span>=<span class="org-sh-quoted-exec">`sensors 2&gt;&amp;1`</span>
+        <span class="org-variable-name">status</span>=$<span class="org-variable-name">?</span>
+        <span class="org-keyword">if </span><span class="org-builtin">test</span> ${<span class="org-variable-name">status</span>} -eq 127; <span class="org-keyword">then</span>
+                <span class="org-variable-name">text</span>=<span class="org-string">"SENSORS UNKNOWN - command not found"</span>
+                <span class="org-variable-name">text</span>=<span class="org-string">"$text (did you install lmsensors?)"</span>
+                <span class="org-variable-name">exit</span>=$<span class="org-variable-name">STATE_UNKNOWN</span>
+        <span class="org-keyword">elif </span><span class="org-builtin">test</span> ${<span class="org-variable-name">status</span>} -ne 0; <span class="org-keyword">then</span>
+                <span class="org-variable-name">text</span>=<span class="org-string">"WARNING - sensors returned state $status"</span>
+                <span class="org-variable-name">exit</span>=$<span class="org-variable-name">STATE_WARNING</span>
+        <span class="org-keyword">elif </span><span class="org-builtin">echo</span> ${<span class="org-variable-name">sensordata</span>} | egrep ALARM &gt; /dev/null; <span class="org-keyword">then</span>
+                <span class="org-variable-name">text</span>=<span class="org-string">"SENSOR CRITICAL -`brief_data "${sensordata}"`"</span>
+                <span class="org-variable-name">exit</span>=$<span class="org-variable-name">STATE_CRITICAL</span>
+        <span class="org-keyword">elif </span><span class="org-builtin">echo</span> ${<span class="org-variable-name">sensordata</span>} | egrep FAULT &gt; /dev/null <span class="org-sh-escaped-newline">\</span>
+            &amp;&amp; <span class="org-builtin">test</span> <span class="org-string">"$1"</span> != <span class="org-string">"-i"</span> -a <span class="org-string">"$1"</span> != <span class="org-string">"--ignore-fault"</span>; <span class="org-keyword">then</span>
+                <span class="org-variable-name">text</span>=<span class="org-string">"SENSOR UNKNOWN - Sensor reported fault"</span>
+                <span class="org-variable-name">exit</span>=$<span class="org-variable-name">STATE_UNKNOWN</span>
+        <span class="org-keyword">else</span>
+                <span class="org-variable-name">text</span>=<span class="org-string">"SENSORS OK -`brief_data "${sensordata}"`"</span>
+                <span class="org-variable-name">exit</span>=$<span class="org-variable-name">STATE_OK</span>
+        <span class="org-keyword">fi</span>
+
+        <span class="org-builtin">echo</span> <span class="org-string">"$text"</span>
+        <span class="org-keyword">if </span><span class="org-builtin">test</span> <span class="org-string">"$1"</span> = <span class="org-string">"-v"</span> -o <span class="org-string">"$1"</span> = <span class="org-string">"--verbose"</span>; <span class="org-keyword">then</span>
+                <span class="org-builtin">echo</span> ${<span class="org-variable-name">sensordata</span>}
+        <span class="org-keyword">fi</span>
+        <span class="org-keyword">exit</span> $<span class="org-variable-name">exit</span>
+        ;;
 <span class="org-keyword">esac</span>
 </pre>
 </div>
@@ -1307,7 +1325,7 @@ included in <q>private/vars-abbey.yml</q>.
 </p>
 
 <div class="org-src-container">
-<q>private/vars-abbey.yml</q><pre class="src src-conf">devaron_addr:               10.84.138.10
+<a href="private/vars-abbey.yml"><q>private/vars-abbey.yml</q></a><pre class="src src-conf">devaron_addr:               10.84.138.10
 kamino_addr:                192.168.56.14
 kessel_addr:                10.84.138.8
 </pre>
@@ -1324,7 +1342,7 @@ rarely powered up.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Configure cloister NAGIOS monitoring.
   become: yes
   template:
@@ -1340,7 +1358,7 @@ rarely powered up.
 <h4 id="org2e4fb52"><span class="section-number-4">4.12.3.</span> NAGIOS Monitoring of Devaron</h4>
 <div class="outline-text-4" id="text-4-12-3">
 <div class="org-src-container">
-<q>roles_t/abbey-core/templates/nagios-devaron.cfg</q><pre class="src src-conf"><span class="org-type">define host</span> {
+<a href="roles_t/abbey-core/templates/nagios-devaron.cfg"><q>roles_t/abbey-core/templates/nagios-devaron.cfg</q></a><pre class="src src-conf"><span class="org-type">define host</span> {
     use                     linux-server
     host_name               devaron
     address                 {{ devaron_addr }}
@@ -1395,7 +1413,7 @@ rarely powered up.
 <h4 id="orge8ccd3b"><span class="section-number-4">4.12.4.</span> NAGIOS Monitoring of Kamino</h4>
 <div class="outline-text-4" id="text-4-12-4">
 <div class="org-src-container">
-<q>roles_t/abbey-core/templates/nagios-kamino.cfg</q><pre class="src src-conf"><span class="org-type">define host</span> {
+<a href="roles_t/abbey-core/templates/nagios-kamino.cfg"><q>roles_t/abbey-core/templates/nagios-kamino.cfg</q></a><pre class="src src-conf"><span class="org-type">define host</span> {
     use                     linux-server
     host_name               kamino
     address                 {{ kamino_addr }}
@@ -1450,7 +1468,7 @@ rarely powered up.
 <h4 id="org4f9ed4f"><span class="section-number-4">4.12.5.</span> NAGIOS Monitoring of Kessel</h4>
 <div class="outline-text-4" id="text-4-12-5">
 <div class="org-src-container">
-<q>roles_t/abbey-core/templates/nagios-kessel.cfg</q><pre class="src src-conf"><span class="org-type">define host</span> {
+<a href="roles_t/abbey-core/templates/nagios-kessel.cfg"><q>roles_t/abbey-core/templates/nagios-kessel.cfg</q></a><pre class="src src-conf"><span class="org-type">define host</span> {
     use                     linux-server
     host_name               kessel
     address                 {{ kessel_addr }}
@@ -1513,7 +1531,7 @@ the campus as <code>http://www/analog.html</code>.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install Analog.
   become: yes
   <span class="org-variable-name">apt: pkg</span>=analog
@@ -1569,7 +1587,7 @@ user cloud accounts, found in files owned by <code>www-data</code>, files like
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Add Monkey to Nextcloud group.
   become: yes
   user:
@@ -1589,7 +1607,7 @@ Monkey's photo processing scripts use <code>netpbm</code> commands like
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install netpbm.
   become: yes
   <span class="org-variable-name">apt: pkg</span>=netpbm
@@ -1606,7 +1624,7 @@ minutes and <q>cronjob-midnight</q> at midnight.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-core/tasks/main.yml</q><pre class="src src-:tangle">
+<a href="roles_t/abbey-core/tasks/main.yml"><q>roles_t/abbey-core/tasks/main.yml</q></a><pre class="src src-:tangle">
 - name: Create Monkey's weather job.
   become: yes
   cron:
@@ -1768,8 +1786,8 @@ clients: Android, Debian and Campus.  The last type never roams, and
 is not associated with a member of the small institute.
 </p>
 </div>
-<div id="outline-container-org527bdfd" class="outline-3">
-<h3 id="org527bdfd"><span class="section-number-3">6.1.</span> Use Cloister Apt Cache</h3>
+<div id="outline-container-orgadf60c5" class="outline-3">
+<h3 id="orgadf60c5"><span class="section-number-3">6.1.</span> Use Cloister Apt Cache</h3>
 <div class="outline-text-3" id="text-6-1">
 <p>
 The Apt-Cacher:TNG program does not work well on the frontier, so is
@@ -1783,12 +1801,13 @@ while.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-cloister/tasks/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-cloister/tasks/main.yml"><q>roles_t/abbey-cloister/tasks/main.yml</q></a><pre class="src src-conf">---
 - name: Use the local Apt package cache.
   become: yes
   copy:
-    content: |
-     Acquire::http::Proxy <span class="org-string">"http://apt-cacher.{{ domain_priv }}.:3142"</span>;
+    content: &gt;
+      Acquire::http::Proxy
+        <span class="org-string">"http://apt-cacher.{{ domain_priv }}.:3142"</span>;
     dest: /etc/apt/apt.conf.d/01proxy
     <span class="org-variable-name">mode: u</span>=rw,g=r,o=r
 </pre>
@@ -1808,7 +1827,7 @@ Raspberry Pis (architecture <code>aarch64</code>) only.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-cloister/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-cloister/tasks/main.yml"><q>roles_t/abbey-cloister/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install abbey_pisensors NAGIOS plugin.
   become: yes
   copy:
@@ -1829,7 +1848,7 @@ Raspberry Pis (architecture <code>aarch64</code>) only.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-cloister/handlers/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-cloister/handlers/main.yml"><q>roles_t/abbey-cloister/handlers/main.yml</q></a><pre class="src src-conf">
 - name: Reload NRPE server.
   become: yes
   systemd:
@@ -1839,15 +1858,15 @@ Raspberry Pis (architecture <code>aarch64</code>) only.
 </div>
 </div>
 </div>
-<div id="outline-container-org605136e" class="outline-3">
-<h3 id="org605136e"><span class="section-number-3">6.3.</span> Install Emacs</h3>
+<div id="outline-container-orgf7b4d3a" class="outline-3">
+<h3 id="orgf7b4d3a"><span class="section-number-3">6.3.</span> Install Emacs</h3>
 <div class="outline-text-3" id="text-6-3">
 <p>
 The monks of the abbey are masters of the staff and Emacs.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-cloister/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-cloister/tasks/main.yml"><q>roles_t/abbey-cloister/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install monastic software.
   become: yes
   <span class="org-variable-name">apt: pkg</span>=emacs
@@ -1907,7 +1926,7 @@ Listing them (e.g. running <code>owdir /26.nnnnnnnn</code> or <code>owdir
 below.  A test session is shown below.
 </p>
 
-<pre class="example" id="orgcd76ea9">
+<pre class="example" id="org2decee3">
 monkey@new$ owdir
 ...
     /26.2153B6000000/
@@ -1938,7 +1957,7 @@ one weather host, <code>anoat</code>.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-weather/files/daemon-anoat</q><pre class="src src-perl"><span class="org-comment-delimiter">#</span><span class="org-comment">!/usr/bin/perl -w</span>
+<a href="roles_t/abbey-weather/files/daemon-anoat"><q>roles_t/abbey-weather/files/daemon-anoat</q></a><pre class="src src-perl"><span class="org-comment-delimiter">#</span><span class="org-comment">!/usr/bin/perl -w</span>
 <span class="org-comment-delimiter"># </span><span class="org-comment">-*- CPerl -*-</span>
 <span class="org-comment-delimiter">#</span>
 <span class="org-comment-delimiter"># </span><span class="org-comment">Weather/daemon</span>
@@ -2077,7 +2096,7 @@ installed by the following task.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-weather/tasks/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-weather/tasks/main.yml"><q>roles_t/abbey-weather/tasks/main.yml</q></a><pre class="src src-conf">---
 - name: Install weather daemon packages.
   become: yes
   <span class="org-variable-name">apt: pkg</span>=libtimedate-perl
@@ -2096,7 +2115,7 @@ USB adapter (rather than a test "fake" adapter).
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-weather/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-weather/tasks/main.yml"><q>roles_t/abbey-weather/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install 1-Wire server.
   become: yes
   apt:
@@ -2125,7 +2144,7 @@ Monkey on Core will want to download log records (files) using
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-weather/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-weather/tasks/main.yml"><q>roles_t/abbey-weather/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install Rsync.
   become: yes
   <span class="org-variable-name">apt: pkg</span>=rsync
@@ -2146,7 +2165,7 @@ debugging the <code>sysadm</code> account is included in the <code>monkey</code>
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-weather/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-weather/tasks/main.yml"><q>roles_t/abbey-weather/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Create monkey.
   become: yes
   user:
@@ -2187,7 +2206,7 @@ The <code>ExecStartPre=/bin/sleep 30</code> is intended to avoid recent hangs in
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-weather/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-weather/tasks/main.yml"><q>roles_t/abbey-weather/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install weather directory.
   become: yes
   file:
@@ -2259,7 +2278,7 @@ The <code>ExecStartPre=/bin/sleep 30</code> is intended to avoid recent hangs in
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-weather/handlers/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-weather/handlers/main.yml"><q>roles_t/abbey-weather/handlers/main.yml</q></a><pre class="src src-conf">---
 - name: Reload Systemd.
   become: yes
   command: systemctl daemon-reload
@@ -2281,9 +2300,9 @@ The <code>ExecStartPre=/bin/sleep 30</code> is intended to avoid recent hangs in
 The abbey uses Zoneminder to record video from PoE IP HD security
 cameras.  The Abbey DVR Role installs Zoneminder and configures it to
 record to <q>/Zoneminder/</q>, the mount point for a separate, large
-storage volume.  It follows the instructions in
-<q>/usr/share/doc/zoneminder/README.Debian</q> to create the <code>zm</code> database
-and configuring Apache.
+storage volume.  It follows the instructions in Zoneminder's
+<q>README.Debian</q> (in <q>/usr/share/doc/zoneminder/</q>) to create the <code>zm</code>
+database and configure Apache.
 </p>
 </div>
 <div id="outline-container-org4fe0a29" class="outline-3">
@@ -2343,8 +2362,8 @@ described in the final section, <a href="#org1115114">Configure Cameras</a>, bel
 </p>
 </div>
 </div>
-<div id="outline-container-orgac6382f" class="outline-3">
-<h3 id="orgac6382f"><span class="section-number-3">8.4.</span> Include Abbey Variables</h3>
+<div id="outline-container-org35b02fa" class="outline-3">
+<h3 id="org35b02fa"><span class="section-number-3">8.4.</span> Include Abbey Variables</h3>
 <div class="outline-text-3" id="text-8-4">
 <p>
 Private variables in <q>private/vars-abbey.yml</q> are needed, and included
@@ -2353,7 +2372,7 @@ playbook's directory, <q>playbooks/</q>.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-dvr/tasks/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-dvr/tasks/main.yml"><q>roles_t/abbey-dvr/tasks/main.yml</q></a><pre class="src src-conf">---
 - name: Include private abbey variables.
   include_vars: ../private/vars-abbey.yml
 </pre>
@@ -2382,7 +2401,7 @@ and "Time Zone" in <q>/usr/share/doc/zoneminder/README.Debian.gz</q>.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-dvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-dvr/tasks/main.yml"><q>roles_t/abbey-dvr/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install Zoneminder.
   become: yes
   <span class="org-variable-name">apt: pkg</span>=zoneminder
@@ -2431,7 +2450,7 @@ and "Time Zone" in <q>/usr/share/doc/zoneminder/README.Debian.gz</q>.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-dvr/handlers/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-dvr/handlers/main.yml"><q>roles_t/abbey-dvr/handlers/main.yml</q></a><pre class="src src-conf">---
 - name: Restart MySQL.
   become: yes
   systemd:
@@ -2452,7 +2471,7 @@ out of <q>/var/log/syslog</q>.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-dvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-dvr/tasks/main.yml"><q>roles_t/abbey-dvr/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Use /var/log/zoneminder.log
   become: yes
   copy:
@@ -2506,7 +2525,7 @@ the <code>apg -n 1 -x 12 -m 12</code> command.
 </p>
 
 <div class="org-src-container">
-<q>private/vars-abbey.yml</q><pre class="src src-conf">zoneminder_dbpass:           gakJopbikJadsEdd
+<a href="private/vars-abbey.yml"><q>private/vars-abbey.yml</q></a><pre class="src src-conf">zoneminder_dbpass:           gakJopbikJadsEdd
 </pre>
 </div>
 
@@ -2570,7 +2589,7 @@ or not (yet).
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-dvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-dvr/tasks/main.yml"><q>roles_t/abbey-dvr/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Test for /Zoneminder/.
   stat:
     path: /Zoneminder
@@ -2610,7 +2629,7 @@ proper permissions and contains the correct password.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-dvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-dvr/tasks/main.yml"><q>roles_t/abbey-dvr/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Set /etc/zm/zm.conf permissions.
   become: yes
   file:
@@ -2636,7 +2655,7 @@ run.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-dvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-dvr/tasks/main.yml"><q>roles_t/abbey-dvr/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Enable/Start Zoneminder.
   become: yes
   systemd:
@@ -2770,8 +2789,8 @@ machine simply by adding it to the <code>tvrs</code> group.
 </p>
 </div>
 </div>
-<div id="outline-container-org674d533" class="outline-3">
-<h3 id="org674d533"><span class="section-number-3">9.3.</span> Include Abbey Variables</h3>
+<div id="outline-container-org5d81be5" class="outline-3">
+<h3 id="org5d81be5"><span class="section-number-3">9.3.</span> Include Abbey Variables</h3>
 <div class="outline-text-3" id="text-9-3">
 <p>
 Private variables in <q>private/vars-abbey.yml</q> are needed, as in the
@@ -2780,7 +2799,7 @@ directory, <q>playbooks/</q>.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/tasks/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-tvr/tasks/main.yml"><q>roles_t/abbey-tvr/tasks/main.yml</q></a><pre class="src src-conf">---
 - name: Include private abbey variables.
   include_vars: ../private/vars-abbey.yml
 </pre>
@@ -2824,7 +2843,7 @@ following.
 </p>
 
 <div class="org-src-container">
-<pre class="src src-diff"><span class="org-diff-header">diff --git a/roles/mythtv-deb/tasks/main.yml b/roles/mythtv-deb/tasks/main.yml</span>
+<pre class="src src-diff"><span class="org-diff-header">diff --git a/roles/mythtv-deb/tasks/main.yml b/roles/mythtv-deb/tasks</span>
 <span class="org-diff-header">index 868c9b7..3dcf115 100644</span>
 <span class="org-diff-header">--- </span><span class="org-diff-header"><span class="org-diff-file-header">a/roles/mythtv-deb/tasks/main.yml</span></span>
 <span class="org-diff-header">+++ </span><span class="org-diff-header"><span class="org-diff-file-header">b/roles/mythtv-deb/tasks/main.yml</span></span>
@@ -2836,7 +2855,7 @@ following.
 <span class="org-diff-context">   apt:</span>
 <span class="org-diff-context">     name:</span>
 <span class="org-diff-context">       '{{ lookup("flattened", deb_pkg_lst ) }}'</span>
-<span class="org-diff-header">diff --git a/roles/qt5/tasks/qt5-deb.yml b/roles/qt5/tasks/qt5-deb.yml</span>
+<span class="org-diff-header">diff --git a/roles/qt5/tasks/qt5-deb.yml b/roles/qt5/tasks/qt5-deb.ym</span>
 <span class="org-diff-header">index 7a1a0bc..26ba782 100644</span>
 <span class="org-diff-header">--- </span><span class="org-diff-header"><span class="org-diff-file-header">a/roles/qt5/tasks/qt5-deb.yml</span></span>
 <span class="org-diff-header">+++ </span><span class="org-diff-header"><span class="org-diff-file-header">b/roles/qt5/tasks/qt5-deb.yml</span></span>
@@ -2852,7 +2871,7 @@ following.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/tasks/mains.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-tvr/tasks/mains.yml"><q>roles_t/abbey-tvr/tasks/mains.yml</q></a><pre class="src src-conf">
 - name: Install MythTV runtime requisites.
   become: yes
   apt:
@@ -2911,7 +2930,7 @@ Several of the remaining installation steps are skipped unless
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-tvr/tasks/main.yml"><q>roles_t/abbey-tvr/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Test for MythTV binary packages.
   stat:
     path: /usr/local/bin/mythtv-setup
@@ -2931,7 +2950,7 @@ MythTV Backend needs to run as its own user: <code>mythtv</code>.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-tvr/tasks/main.yml"><q>roles_t/abbey-tvr/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Create mythtv.
   become: yes
   user:
@@ -2979,7 +2998,7 @@ kept in <q>private/vars-abbey.yml</q>, and generated e.g. with the <code>apg -n
 </p>
 
 <div class="org-src-container">
-<q>private/vars-abbey.yml</q><pre class="src src-conf">mythtv_dbpass:           daJkibpoJkag
+<a href="private/vars-abbey.yml"><q>private/vars-abbey.yml</q></a><pre class="src src-conf">mythtv_dbpass:           daJkibpoJkag
 </pre>
 </div>
 
@@ -3061,7 +3080,7 @@ This task installs the <q>mythtv-backend.service</q> file.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/tasks/mains.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-tvr/tasks/mains.yml"><q>roles_t/abbey-tvr/tasks/mains.yml</q></a><pre class="src src-conf">
 - name: Create mythtv-backend service.
   become: yes
   copy:
@@ -3090,7 +3109,7 @@ This task installs the <q>mythtv-backend.service</q> file.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/handlers/main.yml</q><pre class="src src-conf">---
+<a href="roles_t/abbey-tvr/handlers/main.yml"><q>roles_t/abbey-tvr/handlers/main.yml</q></a><pre class="src src-conf">---
 - name: Reload Systemd.
   become: yes
   command: systemctl daemon-reload
@@ -3107,7 +3126,7 @@ bitter complaints.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-tvr/tasks/main.yml"><q>roles_t/abbey-tvr/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Configure PHP date.timezone.
   become: yes
   lineinfile:
@@ -3123,7 +3142,7 @@ bitter complaints.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/handlers/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-tvr/handlers/main.yml"><q>roles_t/abbey-tvr/handlers/main.yml</q></a><pre class="src src-conf">
 - name: Restart Apache2.
   become: yes
   systemd:
@@ -3145,7 +3164,7 @@ creates that directory and ensures it has appropriate permissions.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-tvr/tasks/main.yml"><q>roles_t/abbey-tvr/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Create MythTV storage area.
   become: yes
   file:
@@ -3306,7 +3325,8 @@ Afterwards any re-configuration should use the following command.
 </p>
 
 <div class="org-src-container">
-<pre class="src src-sh">tv_grab_zz_sdjson --configure --config-file ~/.mythtv/Mr.Antenna.xmltv
+<pre class="src src-sh">tv_grab_zz_sdjson --configure <span class="org-sh-escaped-newline">\</span>
+        --config-file ~/.mythtv/Mr.Antenna.xmltv
 </pre>
 </div>
 
@@ -3316,8 +3336,8 @@ the list of "inputs" available in a postal code typically ends with
 the OTA (over the air) broadcasts.
 </p>
 
-<pre class="example" id="orgb8f0d61">
-$ tv_grab_zz_sdjson --configure --config-file .mythtv/Mr.Antenna.xmltv
+<pre class="example" id="org4c5b01d">
+$ tv_grab_zz_sdjson --configure --config-file .mythtv/Mr.Antenna.xml
 Cache file for lineups, schedules and programs.
 Cache file: [/home/mythtv/.xmltv/tv_grab_zz_sdjson.cache]
 If you are migrating from a different grabber selecting an alternate
@@ -3327,7 +3347,7 @@ Select channel ID format:
 1: tv_grab_na_dd Format (eg: I12345.labs.zap2it.com)
 2: MythTV Internal DD Grabber Format (eg: 12345)
 Select one: [0,1,2 (default=0)] 
-As the JSON data only includes the previously shown date normally the
+As the JSON data only includes the previously shown date normally th
  XML output should only have the date. However some programs such as
  older versions of MythTV also need a time.
 Select previously shown format:
@@ -3339,7 +3359,7 @@ Username: USERNAME
 Schedules Direct password.
 Password: PASSWORD
 ** POST https://json.schedulesdirect.org/20141201/token ==&gt; 200 OK
-** GET https://json.schedulesdirect.org/20141201/status ==&gt; 200 OK (1s)
+** GET https://json.schedulesdirect.org/20141201/status ==&gt; 200 OK (
 ** GET https://json.schedulesdirect.org/20141201/lineups ==&gt; 200 OK
 This step configures the lineups enabled for your Schedules Direct
  account. It impacts all other configurations and programs using the
@@ -3415,7 +3435,7 @@ away from <q>/var/log/syslog</q>) and rotates the log file.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-tvr/tasks/main.yml"><q>roles_t/abbey-tvr/tasks/main.yml</q></a><pre class="src src-conf">
 <span class="org-variable-name">- name: Install</span> =/etc/rsyslog.d/40-mythtv.conf.
   become: yes
   copy:
@@ -3484,7 +3504,7 @@ The following tasks take care of the rest of the installation.
 </p>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/tasks/main.yml</q><pre class="src src-conf">
+<a href="roles_t/abbey-tvr/tasks/main.yml"><q>roles_t/abbey-tvr/tasks/main.yml</q></a><pre class="src src-conf">
 - name: Install MythWeb requisites.
   become: yes
   apt:
@@ -3520,7 +3540,7 @@ The following tasks take care of the rest of the installation.
 </div>
 
 <div class="org-src-container">
-<q>roles_t/abbey-tvr/templates/mythweb.conf.j2</q><pre class="src src-conf"><span class="org-comment-delimiter">#</span>
+<a href="roles_t/abbey-tvr/templates/mythweb.conf.j2"><q>roles_t/abbey-tvr/templates/mythweb.conf.j2</q></a><pre class="src src-conf"><span class="org-comment-delimiter">#</span>
 <span class="org-comment-delimiter"># </span><span class="org-comment">Apache configuration directives for MythWeb.</span>
 <span class="org-comment-delimiter">#</span>
 <span class="org-comment-delimiter"># </span><span class="org-comment">Note that this file is maintained by the network administration.</span>
@@ -3596,7 +3616,8 @@ program as user <code>mythtv</code>.
 </p>
 
 <div class="org-src-container">
-<pre class="src src-sh">tv_grab_zz_sdjson --configure --config-file ~/.mythtv/Mr.Antenna.xmltv
+<pre class="src src-sh">tv_grab_zz_sdjson --configure <span class="org-sh-escaped-newline">\</span>
+        --config-file ~/.mythtv/Mr.Antenna.xmltv
 </pre>
 </div>
 
@@ -3674,7 +3695,7 @@ except the roles are found in <q>Institute/roles/</q> as well as <q>roles/</q>.
 </p>
 
 <div class="org-src-container">
-<q>ansible.cfg</q><pre class="src src-conf">[<span class="org-type">defaults</span>]
+<a href="ansible.cfg"><q>ansible.cfg</q></a><pre class="src src-conf">[<span class="org-type">defaults</span>]
 <span class="org-variable-name">interpreter_python</span>=/usr/bin/python3
 <span class="org-variable-name">vault_password_file</span>=Secret/vault-password
 <span class="org-variable-name">inventory</span>=hosts
@@ -3687,7 +3708,7 @@ except the roles are found in <q>Institute/roles/</q> as well as <q>roles/</q>.
 <h3 id="orgd0676df"><span class="section-number-3">10.2.</span> <q>hosts</q></h3>
 <div class="outline-text-3" id="text-10-2">
 <div class="org-src-container">
-<q>hosts</q><pre class="src src-conf" id="orgc3f7e11">all:
+<a href="hosts"><q>hosts</q></a><pre class="src src-conf" id="orgc3f7e11">all:
   vars:
     ansible_user: sysadm
     ansible_ssh_extra_args: -i Secret/ssh_admin/id_rsa
@@ -3766,7 +3787,7 @@ institutional roles, then the liturgical roles.
 </p>
 
 <div class="org-src-container">
-<q>playbooks/site.yml</q><pre class="src src-conf">---
+<a href="playbooks/site.yml"><q>playbooks/site.yml</q></a><pre class="src src-conf">---
 - name: Configure All
   hosts: all
   roles: [ all ]
@@ -3850,7 +3871,7 @@ The script begins with the following prefix and trampolines.
 </p>
 
 <div class="org-src-container">
-<q>abbey</q><pre class="src src-perl"><span class="org-comment-delimiter">#</span><span class="org-comment">!/usr/bin/perl -w</span>
+<a href="abbey"><q>abbey</q></a><pre class="src src-perl"><span class="org-comment-delimiter">#</span><span class="org-comment">!/usr/bin/perl -w</span>
 <span class="org-comment-delimiter">#</span>
 <span class="org-comment-delimiter"># </span><span class="org-comment">DO NOT EDIT.  This file was tangled from README.org.</span>
 
@@ -3880,7 +3901,7 @@ code block "duplicates" the action of the institute's
 </p>
 
 <div class="org-src-container">
-<q>playbooks/check-inst-vars.yml</q><pre class="src src-conf">- import_playbook: ../Institute/playbooks/check-inst-vars.yml
+<a href="playbooks/check-inst-vars.yml"><q>playbooks/check-inst-vars.yml</q></a><pre class="src src-conf">- import_playbook: ../Institute/playbooks/check-inst-vars.yml
 </pre>
 </div>
 </div>
@@ -3906,7 +3927,7 @@ a limit pattern.  For example:
 
 
 <div class="org-src-container">
-<q>abbey</q><pre class="src src-perl">
+<a href="abbey"><q>abbey</q></a><pre class="src src-perl">
 <span class="org-keyword">if</span> ($<span class="org-variable-name">ARGV</span>[0] eq <span class="org-string">"upgrade"</span>) {
   shift;
   <span class="org-type">my</span> @<span class="org-underline"><span class="org-variable-name">args</span></span> = ( <span class="org-string">"-e"</span>, <span class="org-string">"\@Secret/become.yml"</span> );
@@ -3927,7 +3948,7 @@ a limit pattern.  For example:
 </div>
 
 <div class="org-src-container">
-<q>playbooks/upgrade.yml</q><pre class="src src-conf">- hosts: all
+<a href="playbooks/upgrade.yml"><q>playbooks/upgrade.yml</q></a><pre class="src src-conf">- hosts: all
   tasks:
 
   - name: Upgrade packages.
@@ -3961,7 +3982,7 @@ The script implements a <code>reboots</code> sub-command that looks for
 </p>
 
 <div class="org-src-container">
-<q>abbey</q><pre class="src src-perl"><span class="org-keyword">if</span> ($<span class="org-variable-name">ARGV</span>[0] eq <span class="org-string">"reboots"</span>) {
+<a href="abbey"><q>abbey</q></a><pre class="src src-perl"><span class="org-keyword">if</span> ($<span class="org-variable-name">ARGV</span>[0] eq <span class="org-string">"reboots"</span>) {
   <span class="org-keyword">exec</span> (<span class="org-string">"ansible-playbook"</span>, <span class="org-string">"-e"</span>, <span class="org-string">"\@Secret/become.yml"</span>,
         <span class="org-string">"playbooks/reboots.yml"</span>);
 }
@@ -3969,7 +3990,7 @@ The script implements a <code>reboots</code> sub-command that looks for
 </div>
 
 <div class="org-src-container">
-<q>playbooks/reboots.yml</q><pre class="src src-conf">---
+<a href="playbooks/reboots.yml"><q>playbooks/reboots.yml</q></a><pre class="src src-conf">---
 - hosts: all
   tasks:
 
@@ -3993,7 +4014,7 @@ operating system version of all abbey managed machines.
 </p>
 
 <div class="org-src-container">
-<q>abbey</q><pre class="src src-perl"><span class="org-keyword">if</span> ($<span class="org-variable-name">ARGV</span>[0] eq <span class="org-string">"versions"</span>) {
+<a href="abbey"><q>abbey</q></a><pre class="src src-perl"><span class="org-keyword">if</span> ($<span class="org-variable-name">ARGV</span>[0] eq <span class="org-string">"versions"</span>) {
   <span class="org-keyword">exec</span> (<span class="org-string">"ansible-playbook"</span>, <span class="org-string">"-e"</span>, <span class="org-string">"\@Secret/become.yml"</span>,
         <span class="org-string">"playbooks/versarch.yml"</span>);
 }
@@ -4001,7 +4022,7 @@ operating system version of all abbey managed machines.
 </div>
 
 <div class="org-src-container">
-<q>playbooks/versarch.yml</q><pre class="src src-conf">- hosts: all
+<a href="playbooks/versarch.yml"><q>playbooks/versarch.yml</q></a><pre class="src src-conf">- hosts: all
   tasks:
   - debug:
       msg: &gt;-
@@ -4039,7 +4060,7 @@ last host in the previous play.
 </p>
 
 <div class="org-src-container">
-<q>abbey</q><pre class="src src-perl"><span class="org-keyword">if</span> ($<span class="org-variable-name">ARGV</span>[0] eq <span class="org-string">"tz"</span>) {
+<a href="abbey"><q>abbey</q></a><pre class="src src-perl"><span class="org-keyword">if</span> ($<span class="org-variable-name">ARGV</span>[0] eq <span class="org-string">"tz"</span>) {
   <span class="org-type">my</span> $<span class="org-variable-name">city</span> = <span class="org-string">`cat /etc/timezone`</span>; chomp $<span class="org-variable-name">city</span>;
   <span class="org-type">my</span> $<span class="org-variable-name">zone</span> = <span class="org-string">`date +%Z`</span>; chomp $<span class="org-variable-name">zone</span>;
   print <span class="org-string">"Setting timezones to $city.\n"</span>;
@@ -4051,7 +4072,7 @@ last host in the previous play.
 </div>
 
 <div class="org-src-container">
-<q>playbooks/timezone.yml</q><pre class="src src-conf">---
+<a href="playbooks/timezone.yml"><q>playbooks/timezone.yml</q></a><pre class="src src-conf">---
 - hosts: core, dvrs, tvrs
   tasks:
   - name: Update timezone.
@@ -4107,8 +4128,8 @@ last host in the previous play.
 <h3 id="org773e94c"><span class="section-number-3">11.7.</span> Abbey Command Help</h3>
 <div class="outline-text-3" id="text-11-7">
 <div class="org-src-container">
-<q>abbey</q><pre class="src src-perl"><span class="org-keyword">die</span>
-  <span class="org-string">"usage: $0 [config,new,old,pass,client,upgrade,reboots,versions]\n"</span>;
+<a href="abbey"><q>abbey</q></a><pre class="src src-perl"><span class="org-type">my</span> $<span class="org-variable-name">ops</span> = <span class="org-string">"config,new,old,pass,client,upgrade,reboots,versions"</span>;
+<span class="org-keyword">die</span> <span class="org-string">"usage: $0 [$ops]\n"</span>;
 </pre>
 </div>
 </div>
@@ -4821,7 +4842,7 @@ to <q>private/db.campus_vpn</q>.)
 </div>
 <div id="postamble" class="status">
 <p class="author">Author: Matt Birkholz</p>
-<p class="date">Created: 2024-03-12 Tue 10:37</p>
+<p class="date">Created: 2024-04-01 Mon 17:59</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>