From: Matt Birkholz Date: Mon, 1 Apr 2024 22:10:27 +0000 (-0500) Subject: Convert code block captions into relative links to the tangles. X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=b3a03b3528a8bb141c6981b4c72d27c849116a0c;p=Network Convert code block captions into relative links to the tangles. --- diff --git a/README.org b/README.org index 3950dfe..92e30a7 100644 --- a/README.org +++ b/README.org @@ -86,7 +86,7 @@ abbey's private parameters, in =private/vars-abbey.yml=, example lines abbey's private institutional parameters, =private/vars.yml=, can be found in [[file:Institute/private/vars.yml][=Institute/private/vars.yml=]]. -#+CAPTION: =public/vars.yml= +#+CAPTION: [[file:public/vars.yml][=public/vars.yml=]] #+BEGIN_SRC conf :tangle public/vars.yml :mkdirp yes --- domain_name: birchwood-abbey.net @@ -108,7 +108,7 @@ Dovecot-IMAPd, and hosting a VPN with OpenVPN. The monks of the abbey are masters of the staff (bo) and Emacs. -#+CAPTION: =roles_t/abbey-front/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/tasks/main.yml][=roles_t/abbey-front/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/tasks/main.yml :mkdirp yes --- - name: Install Emacs. @@ -124,7 +124,7 @@ common mailboxes like ~postmaster~ and ~admin~ into ~root~ and ~root~ to the machine's privileged account (~sysadm~). The abbey takes it from there, forwarding ~sysadm~ to a real person. -#+CAPTION: =roles_t/abbey-front/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/tasks/main.yml][=roles_t/abbey-front/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/tasks/main.yml :noweb no-export - name: Install abbey email aliases. @@ -144,7 +144,7 @@ from there, forwarding ~sysadm~ to a real person. notify: New aliases. #+END_SRC -#+CAPTION: =roles_t/abbey-front/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/handlers/main.yml][=roles_t/abbey-front/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/handlers/main.yml :mkdirp yes --- - name: New aliases. @@ -202,7 +202,7 @@ factor out small roles like ~abbey-git-server~, Emacs Org Mode's Noweb support does the duplication, by multiple references to code blocks like ~git-tasks~ and ~git-handlers~. -#+CAPTION: =roles_t/abbey-front/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/tasks/main.yml][=roles_t/abbey-front/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/tasks/main.yml :noweb no-export <> @@ -241,7 +241,7 @@ like ~git-tasks~ and ~git-handlers~. mode: u=rwx,g=srwx,o=rx #+END_SRC -#+CAPTION: =roles_t/abbey-front/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/handlers/main.yml][=roles_t/abbey-front/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/handlers/main.yml :noweb no-export <> @@ -402,7 +402,7 @@ The following =.htaccess= 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. -#+CAPTION: =.htaccess= +#+CAPTION: [[file:.htaccess][=.htaccess=]] #+BEGIN_SRC conf :tangle .htaccess ReadmeName notfound.html IndexIgnore README.org @@ -448,7 +448,7 @@ and includes =options-ssl-apache.conf= from =/etc/letsencrypt/=. The rest of the Let's Encrypt configuration is discussed in the following [[*Install Let's Encrypt][Install Let's Encrypt]] section. -#+CAPTION: =roles_t/abbey-front/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/tasks/main.yml][=roles_t/abbey-front/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/tasks/main.yml :noweb no-export - name: Configure Apache. @@ -468,7 +468,7 @@ rest of the Let's Encrypt configuration is discussed in the following <> #+END_SRC -#+CAPTION: =roles_t/abbey-front/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/handlers/main.yml][=roles_t/abbey-front/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/handlers/main.yml :noweb no-export <> @@ -486,7 +486,7 @@ the subject as a command line argument as provided by ~logrotate~. The replacement =logrotate-mailer= does, and includes it in a ~Subject~ header prepended to ~logrotate~'s message. -#+CAPTION: =roles_t/abbey-front/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/tasks/main.yml][=roles_t/abbey-front/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/tasks/main.yml - name: Configure Apache log archival. @@ -526,7 +526,7 @@ The replacement =logrotate-mailer= does, and includes it in a mode: u=rwx,g=rx,o=rx #+END_SRC -#+CAPTION: =roles_t/abbey-front/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/handlers/main.yml][=roles_t/abbey-front/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/handlers/main.yml - name: Reload systemd. @@ -541,7 +541,7 @@ system's ~ExecStart~ in =/lib/systemd/system/logrotate.service=. (A See the description of ~ExecStart~ in the ~systemd.service(5)~ manual page.) -#+CAPTION: =roles_t/abbey-front/files/logrotate-mailer.conf= +#+CAPTION: [[file:roles_t/abbey-front/files/logrotate-mailer.conf][=roles_t/abbey-front/files/logrotate-mailer.conf=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/files/logrotate-mailer.conf :mkdirp yes [Service] ExecStart= @@ -559,7 +559,7 @@ sending it on to ~sendmail~. Note that there is no encryption (yet). This is a low priority because much of the data is available to Droplet's ISP's Mom, the NSA/CIA/NWO. -#+CAPTION: =roles_t/abbey-front/files/logrotate-mailer= +#+CAPTION: [[file:roles_t/abbey-front/files/logrotate-mailer][=roles_t/abbey-front/files/logrotate-mailer=]] #+BEGIN_SRC sh :tangle roles_t/abbey-front/files/logrotate-mailer #!/bin/bash -e @@ -659,7 +659,7 @@ do ACME (the certificate protocol) when next Let's Encrypt calls (quarterly). The following tasks ensure the ~python3-cerbot-apache~ package is installed and its =live/= subdirectory is world readable. -#+CAPTION: =roles_t/abbey-front/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/tasks/main.yml][=roles_t/abbey-front/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/tasks/main.yml - name: Install Certbot for Apache. @@ -688,7 +688,7 @@ The following tasks ensure they are symbolic links to =/etc/letsencrypt/= was restored from a backup, the servers should be restarted manually. -#+CAPTION: =roles_t/abbey-front/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/tasks/main.yml][=roles_t/abbey-front/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/tasks/main.yml - name: Use Let's Encrypt certificate&key. @@ -708,7 +708,7 @@ restarted manually. The following task arranges to rotate Certbot's logs files. -#+CAPTION: =roles_t/abbey-front/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/tasks/main.yml][=roles_t/abbey-front/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/tasks/main.yml - name: Install Certbot logrotate configuration. @@ -719,7 +719,7 @@ The following task arranges to rotate Certbot's logs files. mode: u=rw,g=r,o=r #+END_SRC -#+CAPTION: =roles_t/abbey-front/files/certbot_logrotate= +#+CAPTION: [[file:roles_t/abbey-front/files/certbot_logrotate][=roles_t/abbey-front/files/certbot_logrotate=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/files/certbot_logrotate /var/log/letsencrypt/*.log { rotate 12 @@ -735,7 +735,7 @@ A backup copy of Let's Encrypt's data (=/etc/letsencrypt/=) is sent to ~root@core~ in S/MIME encrypted email every time it changes. Changes are detected by keeping a copy in =/etc/letsencrypt~/= for comparison. -#+CAPTION: =roles_t/abbey-front/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/tasks/main.yml][=roles_t/abbey-front/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/tasks/main.yml - name: Install Let's Encrypt archive script. @@ -746,7 +746,7 @@ are detected by keeping a copy in =/etc/letsencrypt~/= for comparison. mode: u=rwx,g=rx,o=rx #+END_SRC -#+CAPTION: =roles_t/abbey-front/files/cron.daily_letsencrypt= +#+CAPTION: [[file:roles_t/abbey-front/files/cron.daily_letsencrypt][=roles_t/abbey-front/files/cron.daily_letsencrypt=]] #+BEGIN_SRC sh :tangle roles_t/abbey-front/files/cron.daily_letsencrypt #!/bin/bash -e @@ -771,7 +771,7 @@ cp -a letsencrypt letsencrypt~ The message is encrypted with ~root@core~'s public key, which is imported into ~root@front~'s GnuPG key file. -#+CAPTION: =roles_t/abbey-front/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/tasks/main.yml][=roles_t/abbey-front/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/tasks/main.yml - name: Copy root@core's public key. @@ -783,7 +783,7 @@ imported into ~root@front~'s GnuPG key file. notify: Import root@core's public key. #+END_SRC -#+CAPTION: =roles_t/abbey-front/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-front/handlers/main.yml][=roles_t/abbey-front/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-front/handlers/main.yml - name: Import root@core's public key. @@ -809,7 +809,7 @@ document, and so replaced with variables set in =private/vars-abbey.yml=. The file path is relative to the playbook's directory, =playbooks/=. -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml :mkdirp yes --- - name: Include private abbey variables. @@ -825,7 +825,7 @@ the ~libhtml-tree-perl~ package. The house task list uses JQuery. Weather scripts use ~mit-scheme~ and ~gnuplot~ (in pseudonymous packages). -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml - name: Install additional packages. @@ -846,7 +846,7 @@ machine. (They should all be relaying to ~smtp.birchwood-abbey.net~ which delivers any ~.birchwood-abbey.net~ email, e.g. ~mythtv@mythtv.birchwood-abbey.net~, locally.) -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml :noweb no-export - name: Install abbey email aliases. @@ -862,7 +862,7 @@ e.g. ~mythtv@mythtv.birchwood-abbey.net~, locally.) notify: New aliases. #+END_SRC -#+CAPTION: =roles_t/abbey-core/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/handlers/main.yml][=roles_t/abbey-core/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/handlers/main.yml :mkdirp yes --- - name: New aliases. @@ -876,13 +876,13 @@ These tasks are identical to those executed on Front, for similar Git services on Front and Core. See [[Configure Git Daemon on Front]] and [[*Configure Gitweb on Front][Configure Gitweb on Front]] for more information. -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml :noweb no-export <> #+END_SRC -#+CAPTION: =roles_t/abbey-core/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/handlers/main.yml][=roles_t/abbey-core/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/handlers/main.yml :noweb no-export <> @@ -895,7 +895,7 @@ test, and campus). The live and test sites must operate just like the site on Front. Their configurations include the same [[apache-abbey][~apache-abbey~]], [[apache-photos][~apache-photos~]], and [[apache-gitweb][~apache-gitweb~]] used on Front. -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml :noweb no-export - name: Configure live website. @@ -927,7 +927,7 @@ site on Front. Their configurations include the same [[apache-abbey][~apache-ab <> #+END_SRC -#+CAPTION: =roles_t/abbey-core/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/handlers/main.yml][=roles_t/abbey-core/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/handlers/main.yml :noweb no-export <> @@ -941,7 +941,7 @@ more accessible, especially the documentation of software installed on Core and not on typical desktop clients. Also included: the Apache2 directives that enable user Git publishing with Gitweb (defined [[apache-gitweb][here]]). -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml :noweb no-export - name: Configure house website. @@ -963,7 +963,7 @@ directives that enable user Git publishing with Gitweb (defined [[apache-gitweb] The abbey uses the Apt-Cacher:TNG package cache on Core. The ~apt-cacher~ domain name is defined in =private/db.domain=. -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml - name: Install Apt-Cacher:TNG. @@ -975,7 +975,7 @@ The abbey uses the Apt-Cacher:TNG package cache on Core. The Core itself will benefit from using the package cache. -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml - name: Use the local Apt package cache. @@ -1005,7 +1005,7 @@ The abbey adds monitoring of the space remaining on the volume at =/home/= on Core. (The small institute only monitors the space remaining on roots.) -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml - name: Configure NAGIOS monitoring for Core /home/. @@ -1022,7 +1022,7 @@ remaining on roots.) notify: Reload NAGIOS4. #+END_SRC -#+CAPTION: =roles_t/abbey-core/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/handlers/main.yml][=roles_t/abbey-core/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/handlers/main.yml - name: Reload NAGIOS4. @@ -1042,7 +1042,7 @@ Raspberry Pi does not reveal core CPU temperatures, so the abbey includes yet another version, ~abbey_pisensors~, that reports any recognizable temperature in the ~sensors~ output. -#+CAPTION: =roles_t/abbey-core/files/abbey_pisensors= +#+CAPTION: [[file:roles_t/abbey-core/files/abbey_pisensors][=roles_t/abbey-core/files/abbey_pisensors=]] #+BEGIN_SRC sh :tangle roles_t/abbey-core/files/abbey_pisensors :mkdirp yes #!/bin/sh @@ -1143,7 +1143,7 @@ The IP addresses of all three hosts are nice to use in the NAGIOS configuration (to avoid depending on name service) and so are included in =private/vars-abbey.yml=. -#+CAPTION: =private/vars-abbey.yml= +#+CAPTION: [[file:private/vars-abbey.yml][=private/vars-abbey.yml=]] #+BEGIN_SRC conf devaron_addr: 10.84.138.10 kamino_addr: 192.168.56.14 @@ -1156,7 +1156,7 @@ The following task installs each host's NAGIOS configuration. Note that Kamino is not included. It is currently unmonitored as it is now rarely powered up. -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml - name: Configure cloister NAGIOS monitoring. @@ -1170,7 +1170,7 @@ rarely powered up. *** NAGIOS Monitoring of Devaron -#+CAPTION: =roles_t/abbey-core/templates/nagios-devaron.cfg= +#+CAPTION: [[file:roles_t/abbey-core/templates/nagios-devaron.cfg][=roles_t/abbey-core/templates/nagios-devaron.cfg=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/templates/nagios-devaron.cfg :mkdirp yes define host { use linux-server @@ -1223,7 +1223,7 @@ define service { *** NAGIOS Monitoring of Kamino -#+CAPTION: =roles_t/abbey-core/templates/nagios-kamino.cfg= +#+CAPTION: [[file:roles_t/abbey-core/templates/nagios-kamino.cfg][=roles_t/abbey-core/templates/nagios-kamino.cfg=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/templates/nagios-kamino.cfg define host { use linux-server @@ -1276,7 +1276,7 @@ define service { *** NAGIOS Monitoring of Kessel -#+CAPTION: =roles_t/abbey-core/templates/nagios-kessel.cfg= +#+CAPTION: [[file:roles_t/abbey-core/templates/nagios-kessel.cfg][=roles_t/abbey-core/templates/nagios-kessel.cfg=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/templates/nagios-kessel.cfg define host { use linux-server @@ -1334,7 +1334,7 @@ regularly to ~webmaster~, who saves them in =/Logs/apache2-public/= and runs ~analog~ to generate =/WWW/campus/analog.html=, available to the campus as ~http://www/analog.html~. -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml - name: Install Analog. @@ -1386,7 +1386,7 @@ user cloud accounts, found in files owned by ~www-data~, files like =InstantUpload/Camera/2021/01/IMG_20210115_092838.jpg= in =/var/www/nextcloud/data/$USER/files/=. -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml - name: Add Monkey to Nextcloud group. @@ -1402,7 +1402,7 @@ user cloud accounts, found in files owned by ~www-data~, files like Monkey's photo processing scripts use ~netpbm~ commands like ~jpegtopnm~. -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-core/tasks/main.yml - name: Install netpbm. @@ -1415,7 +1415,7 @@ Monkey's photo processing scripts use ~netpbm~ commands like Monkey on Core runs =/WWW/campus/Weather/Private/cronjob= every 5 minutes and =cronjob-midnight= at midnight. -#+CAPTION: =roles_t/abbey-core/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-core/tasks/main.yml][=roles_t/abbey-core/tasks/main.yml=]] #+BEGIN_SRC :tangle roles_t/abbey-core/tasks/main.yml - name: Create Monkey's weather job. @@ -1550,7 +1550,7 @@ repeatedly until few or no incomplete or damaged files are found. Depending on the quality of the Internet connection, this may take a while. -#+CAPTION: =roles_t/abbey-cloister/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-cloister/tasks/main.yml][=roles_t/abbey-cloister/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-cloister/tasks/main.yml :mkdirp yes --- - name: Use the local Apt package cache. @@ -1572,7 +1572,7 @@ NRPE]] of [[file:Institute/README.org][A Small Institute]]). The abbey adds one another ~check_sensors~ variant, ~abbey_pisensors~, installed on Raspberry Pis (architecture ~aarch64~) only. -#+CAPTION: =roles_t/abbey-cloister/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-cloister/tasks/main.yml][=roles_t/abbey-cloister/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-cloister/tasks/main.yml - name: Install abbey_pisensors NAGIOS plugin. @@ -1593,7 +1593,7 @@ Raspberry Pis (architecture ~aarch64~) only. notify: Reload NRPE server. #+END_SRC -#+CAPTION: =roles_t/abbey-cloister/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-cloister/handlers/main.yml][=roles_t/abbey-cloister/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-cloister/handlers/main.yml :mkdirp yes - name: Reload NRPE server. @@ -1607,7 +1607,7 @@ Raspberry Pis (architecture ~aarch64~) only. The monks of the abbey are masters of the staff and Emacs. -#+CAPTION: =roles_t/abbey-cloister/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-cloister/tasks/main.yml][=roles_t/abbey-cloister/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-cloister/tasks/main.yml - name: Install monastic software. @@ -1677,7 +1677,7 @@ daemon scripts, to call ~owread~ with different paths (containing the IDs of each host's devices). At the moment there is just the one weather host, ~anoat~. -#+CAPTION: =roles_t/abbey-weather/files/daemon-anoat= +#+CAPTION: [[file:roles_t/abbey-weather/files/daemon-anoat][=roles_t/abbey-weather/files/daemon-anoat=]] #+BEGIN_SRC perl :tangle roles_t/abbey-weather/files/daemon-anoat :mkdirp yes #!/usr/bin/perl -w # -*- CPerl -*- @@ -1814,7 +1814,7 @@ main; The above Perl script uses the ~Date::Format~ module, which is installed by the following task. -#+CAPTION: =roles_t/abbey-weather/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-weather/tasks/main.yml][=roles_t/abbey-weather/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-weather/tasks/main.yml :mkdirp yes --- - name: Install weather daemon packages. @@ -1829,7 +1829,7 @@ abbey uses the Dallas Semiconductor DS9490R, a USB to 1-Wire adapter, on all its weather hosts, so it also configures the server to use the USB adapter (rather than a test "fake" adapter). -#+CAPTION: =roles_t/abbey-weather/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-weather/tasks/main.yml][=roles_t/abbey-weather/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-weather/tasks/main.yml - name: Install 1-Wire server. @@ -1854,7 +1854,7 @@ USB adapter (rather than a test "fake" adapter). Monkey on Core will want to download log records (files) using ~rsync(1)~. -#+CAPTION: =roles_t/abbey-weather/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-weather/tasks/main.yml][=roles_t/abbey-weather/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-weather/tasks/main.yml - name: Install Rsync. @@ -1871,7 +1871,7 @@ administrator to login on the new weather host as ~monkey~ and thus to test access to the 1-Wire adapter and devices. To facilitate debugging the ~sysadm~ account is included in the ~monkey~ group. -#+CAPTION: =roles_t/abbey-weather/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-weather/tasks/main.yml][=roles_t/abbey-weather/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-weather/tasks/main.yml - name: Create monkey. @@ -1906,7 +1906,7 @@ creates and starts that service /after/ the host-specific The ~ExecStartPre=/bin/sleep 30~ is intended to avoid recent hangs in ~owread~. -#+CAPTION: =roles_t/abbey-weather/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-weather/tasks/main.yml][=roles_t/abbey-weather/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-weather/tasks/main.yml :noweb no-export - name: Install weather directory. @@ -1978,7 +1978,7 @@ The ~ExecStartPre=/bin/sleep 30~ is intended to avoid recent hangs in when: weather.stat.exists #+END_SRC -#+CAPTION: =roles_t/abbey-weather/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-weather/handlers/main.yml][=roles_t/abbey-weather/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-weather/handlers/main.yml :mkdirp yes --- - name: Reload Systemd. @@ -2043,7 +2043,7 @@ Private variables in =private/vars-abbey.yml= are needed, and included here, as in the ~abbey-core~ role. The file path is relative to the playbook's directory, =playbooks/=. -#+CAPTION: =roles_t/abbey-dvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-dvr/tasks/main.yml][=roles_t/abbey-dvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-dvr/tasks/main.yml :mkdirp yes --- - name: Include private abbey variables. @@ -2066,7 +2066,7 @@ After uninstalling 1.36, the Debian 11 package (1.34) was installed and configured per the instructions in sections "Web server set-up" and "Time Zone" in =/usr/share/doc/zoneminder/README.Debian.gz=. -#+CAPTION: =roles_t/abbey-dvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-dvr/tasks/main.yml][=roles_t/abbey-dvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-dvr/tasks/main.yml - name: Install Zoneminder. @@ -2115,7 +2115,7 @@ and "Time Zone" in =/usr/share/doc/zoneminder/README.Debian.gz=. state: started #+END_SRC -#+CAPTION: =roles_t/abbey-dvr/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-dvr/handlers/main.yml][=roles_t/abbey-dvr/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-dvr/handlers/main.yml :mkdirp yes --- - name: Restart MySQL. @@ -2134,7 +2134,7 @@ and "Time Zone" in =/usr/share/doc/zoneminder/README.Debian.gz=. The following Rsyslog configuration drop-in gets Zoneminder's natter out of =/var/log/syslog=. -#+CAPTION: =roles_t/abbey-dvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-dvr/tasks/main.yml][=roles_t/abbey-dvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-dvr/tasks/main.yml - name: Use /var/log/zoneminder.log @@ -2175,7 +2175,7 @@ The DB user's password is taken from the ~zoneminder_dbpass~ variable, kept in =private/vars-abbey.yml=, and generated e.g. with the ~apg -n 1 -x 12 -m 12~ command. -#+CAPTION: =private/vars-abbey.yml= +#+CAPTION: [[file:private/vars-abbey.yml][=private/vars-abbey.yml=]] #+BEGIN_SRC conf zoneminder_dbpass: gakJopbikJadsEdd #+END_SRC @@ -2226,7 +2226,7 @@ The following tasks start with a test for the existence of last "Link..." task below "forces" the link, whether the target exists or not (yet). -#+CAPTION: =roles_t/abbey-dvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-dvr/tasks/main.yml][=roles_t/abbey-dvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-dvr/tasks/main.yml - name: Test for /Zoneminder/. @@ -2262,7 +2262,7 @@ or not (yet). The remaining tasks ensure that the =/etc/zm/zm.conf= file has the proper permissions and contains the correct password. -#+CAPTION: =roles_t/abbey-dvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-dvr/tasks/main.yml][=roles_t/abbey-dvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-dvr/tasks/main.yml - name: Set /etc/zm/zm.conf permissions. @@ -2286,7 +2286,7 @@ Finally, Zoneminder's service unit can be enabled (and started) /if/ the ~zm~ database has also been created, and the service is ready to run. -#+CAPTION: =roles_t/abbey-dvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-dvr/tasks/main.yml][=roles_t/abbey-dvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-dvr/tasks/main.yml - name: Enable/Start Zoneminder. @@ -2391,7 +2391,7 @@ Private variables in =private/vars-abbey.yml= are needed, as in the ~abbey-core~ role. The file path is relative to the playbook's directory, =playbooks/=. -#+CAPTION: =roles_t/abbey-tvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/tasks/main.yml][=roles_t/abbey-tvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/tasks/main.yml :mkdirp yes --- - name: Include private abbey variables. @@ -2453,7 +2453,7 @@ index 7a1a0bc..26ba782 100644 '{{ lookup("flattened", deb_pkg_lst ) }}' #+END_SRC -#+CAPTION: =roles_t/abbey-tvr/tasks/mains.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/tasks/mains.yml][=roles_t/abbey-tvr/tasks/mains.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/tasks/main.yml - name: Install MythTV runtime requisites. @@ -2501,7 +2501,7 @@ completed. It registers the results in the ~mythtv~ variable. Several of the remaining installation steps are skipped unless ~mythtv.stat.exists~. -#+CAPTION: =roles_t/abbey-tvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/tasks/main.yml][=roles_t/abbey-tvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/tasks/main.yml - name: Test for MythTV binary packages. @@ -2517,7 +2517,7 @@ Several of the remaining installation steps are skipped unless MythTV Backend needs to run as its own user: ~mythtv~. -#+CAPTION: =roles_t/abbey-tvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/tasks/main.yml][=roles_t/abbey-tvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/tasks/main.yml - name: Create mythtv. @@ -2554,7 +2554,7 @@ The DB user's password is taken from the ~mythtv_dbpass~ variable, kept in =private/vars-abbey.yml=, and generated e.g. with the ~apg -n 1 -x 12 -m 12~ command. -#+CAPTION: =private/vars-abbey.yml= +#+CAPTION: [[file:private/vars-abbey.yml][=private/vars-abbey.yml=]] #+BEGIN_SRC conf mythtv_dbpass: daJkibpoJkag #+END_SRC @@ -2616,7 +2616,7 @@ mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql mysql This task installs the =mythtv-backend.service= file. -#+CAPTION: =roles_t/abbey-tvr/tasks/mains.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/tasks/mains.yml][=roles_t/abbey-tvr/tasks/mains.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/tasks/main.yml - name: Create mythtv-backend service. @@ -2645,7 +2645,7 @@ This task installs the =mythtv-backend.service= file. notify: Reload Systemd. #+END_SRC -#+CAPTION: =roles_t/abbey-tvr/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/handlers/main.yml][=roles_t/abbey-tvr/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/handlers/main.yml :mkdirp yes --- - name: Reload Systemd. @@ -2658,7 +2658,7 @@ This task installs the =mythtv-backend.service= file. This task checks PHP's timezone. If unset, MythTV's backend logs bitter complaints. -#+CAPTION: =roles_t/abbey-tvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/tasks/main.yml][=roles_t/abbey-tvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/tasks/main.yml - name: Configure PHP date.timezone. @@ -2674,7 +2674,7 @@ bitter complaints. notify: Restart Apache2. #+END_SRC -#+CAPTION: =roles_t/abbey-tvr/handlers/main.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/handlers/main.yml][=roles_t/abbey-tvr/handlers/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/handlers/main.yml - name: Restart Apache2. @@ -2692,7 +2692,7 @@ program (as described below). The abbey uses =/home/mythtv/Recordings/= for MythTV's default storage. This task creates that directory and ensures it has appropriate permissions. -#+CAPTION: =roles_t/abbey-tvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/tasks/main.yml][=roles_t/abbey-tvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/tasks/main.yml - name: Create MythTV storage area. @@ -2898,7 +2898,7 @@ sudo -H -u mythtv \ The abbey directs MythTV log messages to =/var/log/mythtv.log= (and away from =/var/log/syslog=) and rotates the log file. -#+CAPTION: =roles_t/abbey-tvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/tasks/main.yml][=roles_t/abbey-tvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/tasks/main.yml - name: Install =/etc/rsyslog.d/40-mythtv.conf. @@ -2955,7 +2955,7 @@ rsync -C mythweb /usr/local/share/mythtv/ The following tasks take care of the rest of the installation. -#+CAPTION: =roles_t/abbey-tvr/tasks/main.yml= +#+CAPTION: [[file:roles_t/abbey-tvr/tasks/main.yml][=roles_t/abbey-tvr/tasks/main.yml=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/tasks/main.yml - name: Install MythWeb requisites. @@ -2991,7 +2991,7 @@ The following tasks take care of the rest of the installation. notify: Restart Apache2. #+END_SRC -#+CAPTION: =roles_t/abbey-tvr/templates/mythweb.conf.j2= +#+CAPTION: [[file:roles_t/abbey-tvr/templates/mythweb.conf.j2][=roles_t/abbey-tvr/templates/mythweb.conf.j2=]] #+BEGIN_SRC conf :tangle roles_t/abbey-tvr/templates/mythweb.conf.j2 :mkdirp yes # # Apache configuration directives for MythWeb. @@ -3118,7 +3118,7 @@ rest are built up piecemeal by (tangled from) this document, This is much like the example (test) institutional configuration file, except the roles are found in =Institute/roles/= as well as =roles/=. -#+CAPTION: =ansible.cfg= +#+CAPTION: [[file:ansible.cfg][=ansible.cfg=]] #+BEGIN_SRC conf :tangle ansible.cfg [defaults] interpreter_python=/usr/bin/python3 @@ -3130,7 +3130,7 @@ roles_path=roles:Institute/roles ** =hosts= #+NAME: hosts -#+CAPTION: =hosts= +#+CAPTION: [[file:hosts][=hosts=]] #+BEGIN_SRC conf :tangle hosts all: vars: @@ -3205,7 +3205,7 @@ all: This playbook provisions the entire network by applying first the institutional roles, then the liturgical roles. -#+CAPTION: =playbooks/site.yml= +#+CAPTION: [[file:playbooks/site.yml][=playbooks/site.yml=]] #+BEGIN_SRC conf :tangle playbooks/site.yml :mkdirp yes --- - name: Configure All @@ -3272,7 +3272,7 @@ Liturgical sub-commands: The script begins with the following prefix and trampolines. -#+CAPTION: =abbey= +#+CAPTION: [[file:abbey][=abbey=]] #+BEGIN_SRC perl :tangle abbey :tangle-mode u=rwx,g=rx #!/usr/bin/perl -w # @@ -3298,7 +3298,7 @@ Ansible does not implement a ~playbooks_path~ key, so the following code block "duplicates" the action of the institute's =check-inst-vars.yml=. -#+CAPTION: =playbooks/check-inst-vars.yml= +#+CAPTION: [[file:playbooks/check-inst-vars.yml][=playbooks/check-inst-vars.yml=]] #+BEGIN_SRC conf :tangle playbooks/check-inst-vars.yml - import_playbook: ../Institute/playbooks/check-inst-vars.yml #+END_SRC @@ -3317,7 +3317,7 @@ a limit pattern. For example: : ./abbey upgrade -n core : ./abbey upgrade '!front' -#+CAPTION: =abbey= +#+CAPTION: [[file:abbey][=abbey=]] #+BEGIN_SRC perl :tangle abbey if ($ARGV[0] eq "upgrade") { @@ -3338,7 +3338,7 @@ if ($ARGV[0] eq "upgrade") { } #+END_SRC -#+CAPTION: =playbooks/upgrade.yml= +#+CAPTION: [[file:playbooks/upgrade.yml][=playbooks/upgrade.yml=]] #+BEGIN_SRC conf :tangle playbooks/upgrade.yml - hosts: all tasks: @@ -3368,7 +3368,7 @@ if ($ARGV[0] eq "upgrade") { The script implements a ~reboots~ sub-command that looks for =/run/reboot-required= on all abbey managed machines. -#+CAPTION: =abbey= +#+CAPTION: [[file:abbey][=abbey=]] #+BEGIN_SRC perl :tangle abbey if ($ARGV[0] eq "reboots") { exec ("ansible-playbook", "-e", "\@Secret/become.yml", @@ -3376,7 +3376,7 @@ if ($ARGV[0] eq "reboots") { } #+END_SRC -#+CAPTION: =playbooks/reboots.yml= +#+CAPTION: [[file:playbooks/reboots.yml][=playbooks/reboots.yml=]] #+BEGIN_SRC conf :tangle playbooks/reboots.yml --- - hosts: all @@ -3396,7 +3396,7 @@ if ($ARGV[0] eq "reboots") { The script implements a ~versions~ sub-command that reports the operating system version of all abbey managed machines. -#+CAPTION: =abbey= +#+CAPTION: [[file:abbey][=abbey=]] #+BEGIN_SRC perl :tangle abbey if ($ARGV[0] eq "versions") { exec ("ansible-playbook", "-e", "\@Secret/become.yml", @@ -3404,7 +3404,7 @@ if ($ARGV[0] eq "versions") { } #+END_SRC -#+CAPTION: =playbooks/versarch.yml= +#+CAPTION: [[file:playbooks/versarch.yml][=playbooks/versarch.yml=]] #+BEGIN_SRC conf :tangle playbooks/versarch.yml - hosts: all tasks: @@ -3434,7 +3434,7 @@ machines hosting the DVR and TVR services. It assumes each host sees the ~new_tz~ result registered by it in a previous play and not by the last host in the previous play. -#+CAPTION: =abbey= +#+CAPTION: [[file:abbey][=abbey=]] #+BEGIN_SRC perl :tangle abbey if ($ARGV[0] eq "tz") { my $city = `cat /etc/timezone`; chomp $city; @@ -3446,7 +3446,7 @@ if ($ARGV[0] eq "tz") { } #+END_SRC -#+CAPTION: =playbooks/timezone.yml= +#+CAPTION: [[file:playbooks/timezone.yml][=playbooks/timezone.yml=]] #+BEGIN_SRC conf :tangle playbooks/timezone.yml --- - hosts: core, dvrs, tvrs @@ -3500,7 +3500,7 @@ if ($ARGV[0] eq "tz") { ** Abbey Command Help -#+CAPTION: =abbey= +#+CAPTION: [[file:abbey][=abbey=]] #+BEGIN_SRC perl :tangle abbey my $ops = "config,new,old,pass,client,upgrade,reboots,versions"; die "usage: $0 [$ops]\n";