Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.debian.user > #180105
| From | Jonathan de Boyne Pollard <j.deboynepollard-newsgroups@ntlworld.com> |
|---|---|
| Newsgroups | linux.debian.user |
| Subject | Tiny Utility Toolkit for Tweaking Large Environments |
| Date | 2017-04-13 22:40 +0200 |
| Message-ID | <tvTH4-8b7-13@gated-at.bofh.it> (permalink) |
| Organization | linux.* mail to news gateway |
[Multipart message — attachments visible in raw view] - view raw
Dan Ritter:
>
> Eventually we'll have to do the work, but the operations staff here has a
> consensus that if we're going to do the work, we might as well go to a system
> that we feel capable of understanding and trusting, something more like
> daemontools. Nosh is being considered.
>
Having thought about this, I'd do things this way:
You need two new extensions Tuttle:noshService and Tuttle::noshSocket. Both
work by having INI files in your master configuration area, and they generate
the actual service bundles on the slave systems from those.
Tuttle:noshService ...
* ... has the extension keyword nosh-service.
* ... has two source INI files, ${wibble}.service and cyclog@.service
* ... configures for a rôle by:
1. install_file_copy()s both ${wibble}.service and cyclog@.service to
/var/local/sv/
2. run_command()s system-control convert-systemd-units --local-bundle
--no-systemd-quirks --bundle-root /var/local/sv/ --
/var/local/sv/${wibble}.service
3. run_command()s system-control convert-systemd-units --local-bundle
--no-systemd-quirks --bundle-root /var/local/sv/ --
/var/local/sv/cyclog@${wibble}.service
4. symbolically links /var/local/sv/${wibble}/log to ../cyclog@${wibble}
5. run_command()s system-control enable -- cyclog@${wibble}.service
${wibble}.service
6. run_command()s system-control start --verbose -- cyclog@${wibble}.service
${wibble}.service
* ... deconfigures for a rôle by:
1. run_command()s system-control disable -- cyclog@${wibble}.service
${wibble}.service
2. run_command()s system-control stop --verbose -- cyclog@${wibble}.service
${wibble}.service
3. run_command()s system-control unload_when_stopped -- cyclog@${wibble}.service
${wibble}.service
4. remove_file()s both ${wibble}.service and cyclog@.service from /var/local/sv/
5. removes the whole tree at /var/local/sv/${wibble}/ and at
/var/local/sv/cyclog@${wibble}/
Tuttle:noshSocket ...
* ... has the extension keyword nosh-socket.
* ... has three source INI files, ${wibble}.socket, ${wibble}@.service, and
cyclog@.service
* ... configures for a rôle by:
1. install_file_copy()s all of ${wibble}.socket, ${wibble}@.service, and
cyclog@.service to /var/local/sv/
2. run_command()s system-control convert-systemd-units --local-bundle
--no-systemd-quirks --bundle-root /var/local/sv/ --
/var/local/sv/${wibble}.socket
3. run_command()s system-control convert-systemd-units --local-bundle
--no-systemd-quirks --bundle-root /var/local/sv/ --
/var/local/sv/cyclog@${wibble}.service
4. symbolically links /var/local/sv/${wibble}/log to ../cyclog@${wibble}
5. run_command()s system-control enable -- cyclog@${wibble}.service
${wibble}.socket
6. run_command()s system-control start --verbose -- cyclog@${wibble}.service
${wibble}.socket
* ... deconfigures for a rôle by:
1. run_command()s system-control disable -- cyclog@${wibble}.service
${wibble}.socket
2. run_command()s system-control stop --verbose -- cyclog@${wibble}.service
${wibble}.socket
3. run_command()s system-control unload-when-stopped -- cyclog@${wibble}.service
${wibble}.socket
4. remove_file()s all of ${wibble}.socket, ${wibble}@.service, and
cyclog@.service from /var/local/sv/
5. removes the whole tree at /var/local/sv/${wibble}/ and at
/var/local/sv/cyclog@${wibble}/
I've not complicated the aforegiven by including all of the ${tuttle:id}s and
where they would be inserted into the file and directory names (just before
${wibble}, usually), on the presumption that you know all about that.
Then the INI files that you write for (say, HTTP being already taken in your
examples) nosh-socket gopherd would look like:
; gopherd@.service
[Unit]
Description=GOPHER service over IP4/IP6 using djbwares' gopherd
Description=http://jdebp.eu./Softwares/djbwares/
[Service]
EnvironmentDirectory=env
EnvironmentUser=%p-d
LimitNOFILE=20
LimitDATA=5000000
ExecStart=${localhost:+setenv ${PROTO:-TCP}LOCALHOST "${localhost}"} %p
${root:-/home/publicfile/public}
[Install]
WantedBy=server.target
; gopherd.socket
[Unit]
Description=GOPHER socket capable of single-stack IPV6 and IPV6-mapped IPV4
[Socket]
Backlog=2
ListenStream=gopher
Accept=true
MaxConnections=16
UCSPIRules=false
LogUCSPIRules=yes
NoDelay=false
BindIPv6Only=both
Setting up cyclog@.service, so that the generated /var/local/sv/cyclog@${wibble}
runs cyclog as user ${wibble}-l logging to /var/log/${wibble}, is an exercise in
more of the same that you only need to write once:
[Unit]
Description=Standard format %p logging service for %I
Before=%I
[Service]
WorkingDirectory=/var/log/
User=%i-l
ExecStart=%p %I/
[Install]
WantedBy=workstation.target
Back to linux.debian.user | Previous | Next | Find similar | Unroll thread
Tiny Utility Toolkit for Tweaking Large Environments Jonathan de Boyne Pollard <j.deboynepollard-newsgroups@ntlworld.com> - 2017-04-13 22:40 +0200
csiph-web