Compare commits

...

14 Commits

Author SHA1 Message Date
Crest f8704927fb Use path variables for bhyve. Changes #31 2022-07-04 02:58:24 +02:00
Crest 50a3a3d270 Use path variables for Unbound. Changes #31 2022-07-04 02:57:18 +02:00
Crest 53f05a7071 Use path variables for Rspamd. Changes #31 2022-07-04 02:56:34 +02:00
Crest e7eeb4039a Use path variables for restic. Changes #31 2022-07-04 02:55:56 +02:00
Crest b00f1a4c44 Use path variables for Redis. Changes #31 2022-07-04 02:54:03 +02:00
Crest 6a8cee385b Use path variables for Postfix. Changes #31 2022-07-04 02:53:23 +02:00
Crest 96b6c8fe4b Use path variables for OpenNTPD. Changes #31 2022-07-04 02:49:53 +02:00
Crest 8f23dd83b0 Use path variables for NSD. Changes #31 2022-07-04 02:47:17 +02:00
Crest 493a459466 Use path variables for mlmmj. Changes #31 2022-07-04 02:46:45 +02:00
Crest 6f18f4a005 Use path variables for HAProxy. Changes #31 2022-07-04 02:46:09 +02:00
Crest b9d4e0b0d0 Use s6 path variables for Dovecot
Updates #31
2022-07-04 02:44:47 +02:00
Crest 803ebdbded Improve s6-rc rc.d script
* Deduplicate path literals
	* Pass live directory to s6-rc invocations

Changes #31
2022-07-04 02:42:22 +02:00
Crest 050fb34846 Deduplicate path literals
Changes #31
2022-07-04 02:41:15 +02:00
Crest b7db27558b Collect duplicated path literals into variables.
The `s6` roles used to contain lots of repetitions of the same paths.
Collect the paths in variables to remove duplicated path literals.

Changes #31.
2022-07-04 02:36:48 +02:00
27 changed files with 137 additions and 116 deletions

View File

@ -1,2 +1,5 @@
--- ---
ansible_python_interpreter: /usr/local/bin/python3.8 ansible_python_interpreter: /usr/local/bin/python3.8
s6_etc_dir: /etc/s6-rc
s6_live_dir: /run/s6-rc
s6_scan_dir: /run/service

View File

@ -1,7 +1,7 @@
--- ---
- name: Define bhyve guest service definitions - name: Define bhyve guest service definitions
file: file:
path: '/etc/s6-rc/service/bhyve-{{ item.0.name }}{{ item.1 }}' path: '{{ s6_etc_dir }}/service/bhyve-{{ item.0.name }}{{ item.1 }}'
state: directory state: directory
owner: root owner: root
group: wheel group: wheel
@ -16,7 +16,7 @@
- name: Instantiating service templates - name: Instantiating service templates
template: template:
dest: '/etc/s6-rc/service/bhyve-{{ item.0.name }}{{ item.1.name }}' dest: '{{ s6_etc_dir }}/service/bhyve-{{ item.0.name }}{{ item.1.name }}'
src: 'bhyve{{ item.1.name }}.j2' src: 'bhyve{{ item.1.name }}.j2'
owner: root owner: root
group: wheel group: wheel
@ -34,7 +34,7 @@
- name: Start enabled bhyve guests - name: Start enabled bhyve guests
command: > command: >
fdmove -c 2 1 s6-rc -v 2 -u change bhyve-{{ item.name }} fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -v 2 -u change bhyve-{{ item.name }}
register: change register: change
when: item.enabled | default when: item.enabled | default
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0
@ -52,13 +52,13 @@
notify: notify:
- Reload s6-rc - Reload s6-rc
with_items: with_items:
- /etc/s6-rc/service/bhyve - '{{ s6_etc_dir }}/service/bhyve'
- /etc/s6-rc/service/bhyve-disabled - '{{ s6_etc_dir }}/service/bhyve-disabled'
- /etc/s6-rc/service/bhyve-enabled - '{{ s6_etc_dir }}/service/bhyve-enabled'
- name: Declare bhyve service as bundle - name: Declare bhyve service as bundle
copy: copy:
dest: '/etc/s6-rc/service/{{ item }}/type' dest: '{{ s6_etc_dir }}/service/{{ item }}/type'
content: bundle content: bundle
owner: root owner: root
group: wheel group: wheel
@ -72,7 +72,7 @@
- name: Define bhyve service bundles - name: Define bhyve service bundles
template: template:
dest: '/etc/s6-rc/service/{{ item }}/contents' dest: '{{ s6_etc_dir }}/service/{{ item }}/contents'
src: '{{ item }}-contents.j2' src: '{{ item }}-contents.j2'
owner: root owner: root
group: wheel group: wheel
@ -89,13 +89,13 @@
- name: Stop disabled bhyve guests - name: Stop disabled bhyve guests
command: > command: >
fdmove -c 2 1 s6-rc -v 2 -d change bhyve-disabled fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -v 2 -d change bhyve-disabled
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0
- name: Autostart enabled bhyve guests - name: Autostart enabled bhyve guests
lineinfile: lineinfile:
path: /etc/s6-rc/service/enabled/contents path: '{{ s6_etc_dir }}/service/enabled/contents'
regexp: '^bhyve-enabled$' regexp: '^bhyve-enabled$'
line: 'bhyve-enabled' line: 'bhyve-enabled'
notify: notify:

View File

@ -5,10 +5,10 @@
state: reloaded state: reloaded
- name: Reload Dovecot - name: Reload Dovecot
command: s6-svc -h /run/service/dovecot command: s6-svc -h {{ s6_scan_dir }}/dovecot
- name: Restart Dovecot - name: Restart Dovecot
command: s6-svc -wR -T 5000 -ru /run/service/dovecot command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/dovecot
- name: Restart Dovecot log - name: Restart Dovecot log
command: s6-svc -wR -T 5000 -ru /run/service/dovecot-log command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/dovecot-log

View File

@ -63,7 +63,7 @@
- name: Create Dovecot service directories - name: Create Dovecot service directories
file: file:
path: '/etc/s6-rc/service/{{ item }}' path: '{{ s6_etc_dir }}/service/{{ item }}'
state: directory state: directory
owner: root owner: root
group: wheel group: wheel
@ -76,7 +76,7 @@
- name: Generate Dovecot service scripts - name: Generate Dovecot service scripts
template: template:
dest: '/etc/s6-rc/service/{{ item }}' dest: '{{ s6_etc_dir }}/service/{{ item }}'
src: '{{ item }}.j2' src: '{{ item }}.j2'
mode: 0555 mode: 0555
owner: root owner: root
@ -89,7 +89,7 @@
- name: Generate Dovecot service configuration - name: Generate Dovecot service configuration
copy: copy:
dest: '/etc/s6-rc/service/{{ item.name }}' dest: '{{ s6_etc_dir }}/service/{{ item.name }}'
content: '{{ item.content }}' content: '{{ item.content }}'
mode: 0444 mode: 0444
owner: root owner: root
@ -123,7 +123,7 @@
group: acme group: acme
regexp: '^DEPLOY_DOVECOT_PEM_PATH=' regexp: '^DEPLOY_DOVECOT_PEM_PATH='
state: present state: present
line: 'DEPLOY_DOVECOT_RELOAD="sudo s6-svc -h /run/service/dovecot"' line: 'DEPLOY_DOVECOT_RELOAD="sudo s6-svc -h {{ s6_scan_dir }}/dovecot"'
- name: Flush handlers - name: Flush handlers
meta: flush_handlers meta: flush_handlers
@ -137,20 +137,20 @@
group: wheel group: wheel
- name: Deploy X.509 certificate to Dovecot - name: Deploy X.509 certificate to Dovecot
command: 'env sudo -Hu acme acme.sh --debug --home /var/db/acme --install-cert --domain {{ ansible_fqdn }} --cert-file /usr/local/etc/dovecot/cert.pem --key-file /usr/local/etc/dovecot/privkey.pem --fullchain-file /usr/local/etc/dovecot/fullchain.pem --reloadcmd "sudo s6-svc -h /run/service/dovecot"' command: 'env sudo -Hu acme acme.sh --debug --home /var/db/acme --install-cert --domain {{ ansible_fqdn }} --cert-file /usr/local/etc/dovecot/cert.pem --key-file /usr/local/etc/dovecot/privkey.pem --fullchain-file /usr/local/etc/dovecot/fullchain.pem --reloadcmd "sudo s6-svc -h {{ s6_scan_dir }}/dovecot"'
args: args:
creates: /usr/local/etc/dovecot/fullchain.pem creates: /usr/local/etc/dovecot/fullchain.pem
notify: notify:
- Reload Dovecot - Reload Dovecot
- name: Start Dovecot - name: Start Dovecot
command: fdmove -c 2 1 s6-rc -u -v 2 -t 15000 change dovecot command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 -t 15000 change dovecot
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0
- name: Enable Dovecot - name: Enable Dovecot
lineinfile: lineinfile:
path: /etc/s6-rc/service/enabled/contents path: '{{ s6_etc_dir }}/service/enabled/contents'
regexp: "^dovecot$" regexp: "^dovecot$"
line: dovecot line: dovecot
state: present state: present

View File

@ -1 +1 @@
acme ALL=NOPASSWD:/usr/local/bin/s6-svc -h /run/service/dovecot acme ALL=NOPASSWD:/usr/local/bin/s6-svc -h {{ s6_scan_dir }}/dovecot

View File

@ -5,13 +5,13 @@
state: reloaded state: reloaded
- name: Restart HAProxy - name: Restart HAProxy
command: s6-svc -wU -T 5000 -ru /run/service/haproxy command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/haproxy
- name: Restart HAProxy log - name: Restart HAProxy log
command: s6-svc -wU -T 5000 -ru /run/service/haproxy-log command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/haproxy-log
- name: Reload HAProxy - name: Reload HAProxy
command: s6-svc -2 /run/service/haproxy command: s6-svc -2 {{ s6_scan_dir }}/haproxy
- name: Restart acme-renew - name: Restart acme-renew
command: s6-svc -wU -T 5000 -ru /run/service/acme-renew command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/acme-renew

View File

@ -200,7 +200,7 @@
meta: flush_handlers meta: flush_handlers
- name: Start HAProxy - name: Start HAProxy
command: fdmove -c 2 1 s6-rc -u -v 2 change haproxy command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 change haproxy
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0
@ -243,7 +243,7 @@
path: /var/db/acme/account.conf path: /var/db/acme/account.conf
regex: '^DEPLOY_HAPROXY_RELOAD=' regex: '^DEPLOY_HAPROXY_RELOAD='
state: present state: present
line: 'DEPLOY_HAPROXY_RELOAD="sudo s6-svc -h /run/service/haproxy"' line: 'DEPLOY_HAPROXY_RELOAD="sudo s6-svc -h {{ s6_scan_dir }}/haproxy"'
- name: Allow acme user to reload haproxy - name: Allow acme user to reload haproxy
template: template:
@ -309,7 +309,7 @@
meta: flush_handlers meta: flush_handlers
- name: Start acme renew service - name: Start acme renew service
command: fdmove -c 2 1 s6-rc -u -v 2 change acme-renew command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 change acme-renew
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0

View File

@ -1 +1 @@
acme ALL=NOPASSWD:/usr/local/bin/s6-svc -h /run/service/haproxy acme ALL=NOPASSWD:/usr/local/bin/s6-svc -h {{ s6_scan_dir }}/haproxy

View File

@ -1,9 +1,9 @@
--- ---
- name: Restart Postfix - name: Restart Postfix
command: s6-svc -wU -T 5000 -ru /run/service/postfix command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/postfix
- name: Reload Postfix - name: Reload Postfix
command: s6-svc -h /run/service/postfix command: s6-svc -h {{ s6_scan_dir }}/postfix
- name: Rebuild mlmmj virtual aliases - name: Rebuild mlmmj virtual aliases
command: postmap hash:/usr/local/etc/postfix/virtual_mlmmj command: postmap hash:/usr/local/etc/postfix/virtual_mlmmj
@ -17,4 +17,4 @@
state: reloaded state: reloaded
- name: Restart mlmmj-maintd - name: Restart mlmmj-maintd
command: s6-svc -wU -T 5000 -ru /run/service/mlmmj-maintd command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/mlmmj-maintd

View File

@ -19,7 +19,6 @@
home: /var/vmail/mlmmj home: /var/vmail/mlmmj
shell: /sbin/nologin shell: /sbin/nologin
- name: Create lists directory - name: Create lists directory
file: file:
path: /var/vmail/mlmmj path: /var/vmail/mlmmj
@ -73,7 +72,7 @@
- name: Create mlmmj-maintd service directories - name: Create mlmmj-maintd service directories
file: file:
path: '/etc/s6-rc/service/{{ item }}' path: '{{ s6_etc_dir }}/service/{{ item }}'
state: directory state: directory
owner: root owner: root
group: wheel group: wheel
@ -85,7 +84,7 @@
- name: Generate mlmmj-maintd service scripts - name: Generate mlmmj-maintd service scripts
template: template:
dest: '/etc/s6-rc/service/{{ item }}' dest: '{{ s6_etc_dir }}/service/{{ item }}'
src: '{{ item }}.j2' src: '{{ item }}.j2'
mode: 0555 mode: 0555
owner: root owner: root
@ -97,7 +96,7 @@
- name: Generate mlmmj-maintd service configuration - name: Generate mlmmj-maintd service configuration
copy: copy:
dest: '/etc/s6-rc/service/{{ item.name }}' dest: '{{ s6_etc_dir }}/service/{{ item.name }}'
content: '{{ item.content }}' content: '{{ item.content }}'
mode: 0444 mode: 0444
owner: root owner: root
@ -113,13 +112,13 @@
meta: flush_handlers meta: flush_handlers
- name: Start mlmmj-maintd - name: Start mlmmj-maintd
command: fdmove -c 2 1 s6-rc -u -v 2 change mlmmj-maintd command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 change mlmmj-maintd
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0
- name: Enable mlmmj-maintd - name: Enable mlmmj-maintd
lineinfile: lineinfile:
path: /etc/s6-rc/service/enabled/contents path: '{{ s6_etc_dir }}/service/enabled/contents'
regexp: "^mlmmj-maintd$" regexp: "^mlmmj-maintd$"
line: "mlmmj-maintd" line: "mlmmj-maintd"
notify: notify:
@ -269,7 +268,7 @@
- name: Set moderate subscription - name: Set moderate subscription
copy: copy:
dest: '/var/vmail/mlmmj/{{ item.name }}/control/submod' dest: '/var/vmail/mlmmj/{{ item.name }}/control/submod'
content: '' content: '{{ item.subscription_moderators | default([]) | join("\n") }}'
force: no force: no
owner: mlmmj owner: mlmmj
group: mlmmj group: mlmmj

View File

@ -5,10 +5,10 @@
state: reloaded state: reloaded
- name: Reload nsd - name: Reload nsd
command: s6-svc -h /run/service/nsd command: s6-svc -h {{ s6_scan_dir }}/nsd
- name: Restart nsd - name: Restart nsd
command: s6-svc -wR -T 5000 -ru /run/service/nsd command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/nsd
- name: Restart nsd log - name: Restart nsd log
command: s6-svc -wR -T 5000 -ru /run/service/nsd-log command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/nsd-log

View File

@ -14,7 +14,7 @@
- name: Create nsd service directories - name: Create nsd service directories
file: file:
path: '/etc/s6-rc/service/{{ item }}' path: '{{ s6_etc_dir }}/service/{{ item }}'
state: directory state: directory
owner: root owner: root
group: wheel group: wheel
@ -27,7 +27,7 @@
- name: Generate nsd service scripts - name: Generate nsd service scripts
template: template:
dest: '/etc/s6-rc/service/{{ item }}' dest: '{{ s6_etc_dir }}/service/{{ item }}'
src: '{{ item }}.j2' src: '{{ item }}.j2'
mode: 0555 mode: 0555
owner: root owner: root
@ -40,7 +40,7 @@
- name: Generate nsd service configuration - name: Generate nsd service configuration
copy: copy:
dest: '/etc/s6-rc/service/{{ item.name }}' dest: '{{ s6_etc_dir }}/service/{{ item.name }}'
content: '{{ item.content }}' content: '{{ item.content }}'
mode: 0444 mode: 0444
owner: root owner: root
@ -67,13 +67,13 @@
meta: flush_handlers meta: flush_handlers
- name: Start nsd - name: Start nsd
command: fdmove -c 2 1 s6-rc -u -v 2 -t 15000 change nsd command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 -t 15000 change nsd
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0
- name: Enable nsd - name: Enable nsd
lineinfile: lineinfile:
path: /etc/s6-rc/service/enabled/contents path: '{{ s6_etc_dir }}/service/enabled/contents'
regexp: "^nsd$" regexp: "^nsd$"
line: nsd line: nsd
state: present state: present

View File

@ -5,7 +5,7 @@
state: reloaded state: reloaded
- name: Restart OpenNTPD - name: Restart OpenNTPD
command: s6-svc -wR -T 5000 -ru /run/service/openntpd command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/openntpd
- name: Restart OpenNTPD log - name: Restart OpenNTPD log
command: s6-svc -wR -T 5000 -ru /run/service/openntpd-log command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/openntpd-log

View File

@ -14,7 +14,7 @@
- name: Create OpenNTPD service directories - name: Create OpenNTPD service directories
file: file:
path: '/etc/s6-rc/service/{{ item }}' path: '{{ s6_etc_dir }}/service/{{ item }}'
state: directory state: directory
owner: root owner: root
group: wheel group: wheel
@ -27,7 +27,7 @@
- name: Generate OpenNTPD service scripts - name: Generate OpenNTPD service scripts
template: template:
dest: '/etc/s6-rc/service/{{ item }}' dest: '{{ s6_etc_dir }}/service/{{ item }}'
src: '{{ item }}.j2' src: '{{ item }}.j2'
mode: 0555 mode: 0555
owner: root owner: root
@ -40,7 +40,7 @@
- name: Generate OpenNTPD service configuration - name: Generate OpenNTPD service configuration
copy: copy:
dest: '/etc/s6-rc/service/{{ item.name }}' dest: '{{ s6_etc_dir }}/service/{{ item.name }}'
content: '{{ item.content }}' content: '{{ item.content }}'
mode: 0444 mode: 0444
owner: root owner: root
@ -67,13 +67,13 @@
meta: flush_handlers meta: flush_handlers
- name: Start OpenNTPD - name: Start OpenNTPD
command: fdmove -c 2 1 s6-rc -u -v 2 -t 15000 change openntpd command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 -t 15000 change openntpd
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0
- name: Enable OpenNTPD - name: Enable OpenNTPD
lineinfile: lineinfile:
path: /etc/s6-rc/service/enabled/contents path: '{{ s6_etc_dir }}/service/enabled/contents'
regexp: "^openntpd$" regexp: "^openntpd$"
line: openntpd line: openntpd
state: present state: present

View File

@ -5,13 +5,13 @@
state: reloaded state: reloaded
- name: Restart Postfix - name: Restart Postfix
command: s6-svc -wU -T 5000 -ru /run/service/postfix command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/postfix
- name: Restart Postfix log - name: Restart Postfix log
command: s6-svc -wU -T 5000 -ru /run/service/postfix-log command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/postfix-log
- name: Reload Postfix - name: Reload Postfix
command: s6-svc -h /run/service/postfix command: s6-svc -h {{ s6_scan_dir }}/postfix
- name: Rebuild Postfix maps - name: Rebuild Postfix maps
command: 'postmap {{ item.type }}:{{ item.name }}' command: 'postmap {{ item.type }}:{{ item.name }}'

View File

@ -53,7 +53,7 @@
- name: Create Postfix service directories - name: Create Postfix service directories
file: file:
path: '/etc/s6-rc/service/{{ item }}' path: '{{ s6_etc_dir }}/service/{{ item }}'
state: directory state: directory
owner: root owner: root
group: wheel group: wheel
@ -62,7 +62,7 @@
- name: Generate Postfix service scripts - name: Generate Postfix service scripts
template: template:
dest: '/etc/s6-rc/service/{{ item }}' dest: '{{ s6_etc_dir }}/service/{{ item }}'
src: '{{ item }}.j2' src: '{{ item }}.j2'
mode: 0555 mode: 0555
owner: root owner: root
@ -74,7 +74,7 @@
- name: Generate Postfix service configuration - name: Generate Postfix service configuration
copy: copy:
dest: '/etc/s6-rc/service/{{ item.name }}' dest: '{{ s6_etc_dir }}/service/{{ item.name }}'
content: '{{ item.content }}' content: '{{ item.content }}'
mode: 0444 mode: 0444
owner: root owner: root
@ -129,13 +129,13 @@
meta: flush_handlers meta: flush_handlers
- name: Start Postfix - name: Start Postfix
command: fdmove -c 2 1 s6-rc -u -v 2 change postfix command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 change postfix
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0
- name: Enable Postfix - name: Enable Postfix
lineinfile: lineinfile:
path: /etc/s6-rc/service/enabled/contents path: '{{ s6_etc_dir }}/service/enabled/contents'
regexp: "^postfix$" regexp: "^postfix$"
line: "postfix" line: "postfix"
notify: notify:

View File

@ -5,7 +5,7 @@
state: reloaded state: reloaded
- name: 'Restart redis-{{ redis_instance }}' - name: 'Restart redis-{{ redis_instance }}'
command: s6-svc -wR -T 15000 -ru /run/service/redis-{{ redis_instance }} command: s6-svc -wR -T 15000 -ru {{ s6_scan_dir }}/redis-{{ redis_instance }}
- name: 'Restart redis-{{ redis_instance }} log' - name: 'Restart redis-{{ redis_instance }} log'
command: s6-svc -wR -T 5000 -ru /run/service/redis-{{ redis_instance }}-log command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/redis-{{ redis_instance }}-log

View File

@ -30,7 +30,7 @@
- name: 'Create redis-{{ redis_instance }} service directories' - name: 'Create redis-{{ redis_instance }} service directories'
file: file:
path: '/etc/s6-rc/service/redis-{{ redis_instance}}{{ item }}' path: '{{ s6_etc_dir }}/service/redis-{{ redis_instance}}{{ item }}'
state: directory state: directory
owner: root owner: root
group: wheel group: wheel
@ -43,7 +43,7 @@
- name: 'Generate redis-{{ redis_instance }} service scripts' - name: 'Generate redis-{{ redis_instance }} service scripts'
template: template:
dest: '/etc/s6-rc/service/redis-{{ redis_instance }}{{ item }}' dest: '{{ s6_etc_dir }}/service/redis-{{ redis_instance }}{{ item }}'
src: 'redis{{ item }}.j2' src: 'redis{{ item }}.j2'
mode: 0555 mode: 0555
owner: root owner: root
@ -56,7 +56,7 @@
- name: 'Generate redis-{{ redis_instance }} service configuration' - name: 'Generate redis-{{ redis_instance }} service configuration'
copy: copy:
dest: '/etc/s6-rc/service/redis-{{ redis_instance}}{{ item.name }}' dest: '{{ s6_etc_dir }}/service/redis-{{ redis_instance}}{{ item.name }}'
content: '{{ item.content }}' content: '{{ item.content }}'
mode: 0444 mode: 0444
owner: root owner: root
@ -83,13 +83,13 @@
meta: flush_handlers meta: flush_handlers
- name: 'Start redis-{{ redis_instance }}' - name: 'Start redis-{{ redis_instance }}'
command: 'fdmove -c 2 1 s6-rc -u -v 2 -t 15000 change redis-{{ redis_instance }}' command: 'fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 -t 15000 change redis-{{ redis_instance }}'
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0
- name: 'Enable redis-{{ redis_instance }}' - name: 'Enable redis-{{ redis_instance }}'
lineinfile: lineinfile:
path: /etc/s6-rc/service/enabled/contents path: '{{ s6_etc_dir }}/service/enabled/contents'
regexp: "^redis-{{ redis_instance }}$" regexp: "^redis-{{ redis_instance }}$"
line: 'redis-{{ redis_instance }}' line: 'redis-{{ redis_instance }}'
state: present state: present

View File

@ -5,7 +5,7 @@
state: reloaded state: reloaded
- name: Restart restic - name: Restart restic
command: s6-svc -wU -T 5000 -ru /run/service/restic command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/restic
- name: Restart restic-log - name: Restart restic-log
command: s6-svc -wU -T 5000 -ru /run/service/restic-log command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/restic-log

View File

@ -53,7 +53,7 @@
meta: flush_handlers meta: flush_handlers
- name: Start restic renew service - name: Start restic renew service
command: fdmove -c 2 1 s6-rc -u -v 2 change restic command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 change restic
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0

View File

@ -5,16 +5,16 @@
state: reloaded state: reloaded
- name: Restart Rspamd - name: Restart Rspamd
command: s6-svc -wR -T 5000 -ru /run/service/rspamd command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/rspamd
- name: Restart Rspamd log - name: Restart Rspamd log
command: s6-svc -wR -T 5000 -ru /run/service/rspamd-log command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/rspamd-log
- name: Restart HAProxy - name: Restart HAProxy
command: s6-svc -wU -T 5000 -ru /run/service/haproxy command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/haproxy
- name: Restart HAProxy log - name: Restart HAProxy log
command: s6-svc -wU -T 5000 -ru /run/service/haproxy-log command: s6-svc -wU -T 5000 -ru {{ s6_scan_dir }}/haproxy-log
- name: Reload HAProxy - name: Reload HAProxy
command: s6-svc -2 /run/service/haproxy command: s6-svc -2 {{ s6_scan_dir }}/haproxy

View File

@ -43,7 +43,7 @@
- name: Create Rspamd service directories - name: Create Rspamd service directories
file: file:
path: '/etc/s6-rc/service/{{ item }}' path: '{{ s6_etc_dir }}/service/{{ item }}'
state: directory state: directory
owner: root owner: root
group: wheel group: wheel
@ -56,7 +56,7 @@
- name: Generate Rspamd service scripts - name: Generate Rspamd service scripts
template: template:
dest: '/etc/s6-rc/service/{{ item }}' dest: '{{ s6_etc_dir }}/service/{{ item }}'
src: '{{ item }}.j2' src: '{{ item }}.j2'
mode: 0555 mode: 0555
owner: root owner: root
@ -69,7 +69,7 @@
- name: Generate Rspamd service configuration - name: Generate Rspamd service configuration
copy: copy:
dest: '/etc/s6-rc/service/{{ item.name }}' dest: '{{ s6_etc_dir }}/service/{{ item.name }}'
content: '{{ item.content }}' content: '{{ item.content }}'
mode: 0444 mode: 0444
owner: root owner: root
@ -86,13 +86,13 @@
meta: flush_handlers meta: flush_handlers
- name: Start Rspamd - name: Start Rspamd
command: fdmove -c 2 1 s6-rc -u -v 2 -t 15000 change rspamd command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 -t 15000 change rspamd
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0
- name: Enable Rspamd - name: Enable Rspamd
lineinfile: lineinfile:
path: /etc/s6-rc/service/enabled/contents path: '{{ s6_etc_dir }}/service/enabled/contents'
regexp: "^rspamd$" regexp: "^rspamd$"
line: rspamd line: rspamd
state: present state: present

View File

@ -11,13 +11,13 @@
group: wheel group: wheel
mode: 0755 mode: 0755
with_items: with_items:
- /etc/s6-rc - '{{ s6_etc_dir }}'
- /etc/s6-rc/service - '{{ s6_etc_dir }}/service'
- /etc/s6-rc/service/enabled - '{{ s6_etc_dir }}/service/enabled'
- name: Define enabled services bundle - name: Define enabled services bundle
copy: copy:
dest: /etc/s6-rc/service/enabled/type dest: '{{ s6_etc_dir }}/service/enabled/type'
content: bundle content: bundle
owner: root owner: root
group: wheel group: wheel
@ -25,7 +25,7 @@
- name: Default to an empty set of enabled servics - name: Default to an empty set of enabled servics
file: file:
path: /etc/s6-rc/service/enabled/contents path: '{{ s6_etc_dir }}/service/enabled/contents'
state: touch state: touch
owner: root owner: root
group: wheel group: wheel
@ -46,15 +46,15 @@
command: > command: >
s6-rc-compile -v 2 .compiled.{{ s6_uuid }} service s6-rc-compile -v 2 .compiled.{{ s6_uuid }} service
args: args:
creates: /etc/s6-rc/compiled creates: '{{ s6_etc_dir }}/compiled'
chdir: /etc/s6-rc chdir: '{{ s6_etc_dir }}'
- name: Link to the latest service database - name: Link to the latest service database
command: > command: >
env ln -shf .compiled.{{ s6_uuid }} compiled env ln -shf .compiled.{{ s6_uuid }} compiled
args: args:
creates: /etc/s6-rc/compiled creates: '{{ s6_etc_dir }}/compiled'
chdir: /etc/s6-rc chdir: '{{ s6_etc_dir }}'
- name: Make sure that tmpfs support is loaded early - name: Make sure that tmpfs support is loaded early
lineinfile: lineinfile:
@ -72,7 +72,7 @@
- name: Generate s6-svscan startup script - name: Generate s6-svscan startup script
template: template:
dest: /etc/s6-rc/scan dest: '{{ s6_etc_dir }}/scan'
src: scan.j2 src: scan.j2
owner: root owner: root
group: wheel group: wheel
@ -82,7 +82,7 @@
lineinfile: lineinfile:
path: /etc/ttys path: /etc/ttys
regexp: '^null' regexp: '^null'
line: 'null "/etc/s6-rc/scan" vt100 on secure' line: 'null "{{ s6_etc_dir }}/scan" vt100 on secure'
notify: notify:
- Reload /etc/ttys - Reload /etc/ttys

View File

@ -5,6 +5,13 @@
# REQUIRE: NETWORKING daemon # REQUIRE: NETWORKING daemon
# KEYWORD: shutdown # KEYWORD: shutdown
etc_dir="{{ s6_etc_dir }}"
scan_dir="{{ s6_scan_dir }}"
live_dir="{{ s6_live_dir }}"
EX_UNAVAILABLE=69
EX_CONFIG=78
. /etc/rc.subr . /etc/rc.subr
export PATH="$PATH:/usr/local/bin:/usr/local/sbin" export PATH="$PATH:/usr/local/bin:/usr/local/sbin"
@ -27,7 +34,7 @@ s6_wait()
{ {
local i=0 local i=0
while ! s6-svscanctl -z /run/service 2>/dev/null; do while ! s6-svscanctl -z "$scan_dir" 2>/dev/null; do
if [ $i -ge $s6_timeout ]; then if [ $i -ge $s6_timeout ]; then
echo "Timeout waiting for s6-svscan." >&2 echo "Timeout waiting for s6-svscan." >&2
return 1 return 1
@ -48,19 +55,19 @@ s6_wait()
s6_rc_init() s6_rc_init()
{ {
if [ ! -e /run/s6-rc ]; then if [ ! -e "$live_dir" ]; then
s6-rc-init /run/service s6-rc-init -l "$live_dir" "$scan_dir"
fi fi
} }
s6_rc_up() s6_rc_up()
{ {
s6-rc -v 2 -u -t $up_timeout change enabled s6-rc -l "$live_dir" -v 2 -u -t "$up_timeout" change enabled
} }
s6_rc_down() s6_rc_down()
{ {
s6-rc -v 2 -d -a -t $down_timeout change s6-rc -l "$live_dir" -v 2 -d -a -t "$down_timeout" change
} }
s6_rc_start() s6_rc_start()
@ -82,16 +89,26 @@ s6_rc_reload()
{ {
local uuid="$(uuidgen)" local uuid="$(uuidgen)"
cd /etc/s6-rc cd "$etc_dir"
echo "Compiling new s6-rc service database." echo "Compiling the s6-rc service definitions into a services database: $etc_dir/service -> $etc_dir/.compiled.$uuid."
s6-rc-compile -v 2 ".compiled.$uuid" service if ! s6-rc-compile -v 2 ".compiled.$uuid" service; then
echo "Failed to compile the service definitions into a services database." >&2
return $EX_CONFIG
fi
if s6-rc-update -v 2 -t $update_timeout "/etc/s6-rc/.compiled.$uuid"; then echo "Updating the running s6-rc service manager to the latest compiled services database: $etc_dir/.compiled.$uuid."
if s6-rc-update -l "$live_dir" -v 2 -t $update_timeout "$etc_dir/.compiled.$uuid"; then
echo "Marking the running services database as selected default configuration: .compiled.$uuid -> compiled."
ln -shf ".compiled.$uuid" compiled ln -shf ".compiled.$uuid" compiled
echo "Updated s6-rc service database."
echo "Deleting old service databases." echo "Deleting stale services databases."
find -s . -mindepth 1 -maxdepth 1 -type d -name '.compiled.*' -not -name ".compiled.$uuid" -print0 | xargs -0 rm -r if ! find -s . -mindepth 1 -maxdepth 1 -type d -name '.compiled.*' -not -name ".compiled.$uuid" -print0 | xargs -0 rm -r; then
echo "Failed to delete stale services databases." >&2
return $EX_CONFIG
fi
else
echo "Failed to update the running s6-rc manager to the latest service database." >&2
return $EX_CONFIG
fi fi
} }
@ -99,19 +116,20 @@ s6_rc_status()
{ {
local result=0 local result=0
if s6-svscanctl -z /run/service 2>/dev/null; then # Check if s6-svscan is responsive by asking it to invoke its reaper (almost a NOP)
echo "The s6-svscan supervisor is responsible." if s6-svscanctl -z "$scan_dir" 2>/dev/null; then
echo "The s6-svscan supervisor is responsive."
else else
echo "The s6-svscan supervisor is unavailable." echo "The s6-svscan supervisor is unavailable."
result=1 result=1
fi fi
if [ -e /run/s6-rc ]; then if [ -e "$live_dir" ]; then
echo "The s6-rc service manager is initialized." echo "The s6-rc service manager has been initialized."
echo echo
echo "These services are currently active:" echo "These services are currently active:"
s6-rc -a list s6-rc -l "$live_dir" -a list
else else
echo "The s6-rc service manager is uninitalized." echo "The s6-rc service manager is uninitalized."
result=1 result=1

View File

@ -1,6 +1,7 @@
#!/bin/sh -e #!/bin/sh -e
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
scan_dir="{{ s6_scan_dir }}"
install -d -o root -g wheel -m 755 /run/service install -d -o root -g wheel -m 755 -- "$scan_dir"
exec s6-svscan /run/service exec s6-svscan "$scan_dir"

View File

@ -5,10 +5,10 @@
state: reloaded state: reloaded
- name: Reload unbound - name: Reload unbound
command: s6-svc -h /run/service/unbound command: s6-svc -h {{ s6_scan_dir }}/unbound
- name: Restart unbound - name: Restart unbound
command: s6-svc -wR -T 5000 -ru /run/service/unbound command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/unbound
- name: Restart unbound log - name: Restart unbound log
command: s6-svc -wR -T 5000 -ru /run/service/unbound-log command: s6-svc -wR -T 5000 -ru {{ s6_scan_dir }}/unbound-log

View File

@ -67,7 +67,7 @@
meta: flush_handlers meta: flush_handlers
- name: Start unbound - name: Start unbound
command: fdmove -c 2 1 s6-rc -u -v 2 -t 15000 change unbound command: fdmove -c 2 1 s6-rc -l {{ s6_live_dir }} -u -v 2 -t 15000 change unbound
register: change register: change
changed_when: change.stdout | length > 0 changed_when: change.stdout | length > 0