packages.wenpai.net/deploy/ansible/roles/wppackages/tasks/main.yml
Ben Word e276195b6e
Implement socket-activated zero-downtime deploy switchover (#67)
Systemd socket activation keeps the listening socket open across
service restarts so connections queue at the kernel instead of
getting 503s from Caddy. The Go server detects LISTEN_FDS and
uses the inherited fd, falling back to normal listen for local dev.
Caddy retry window bumped as a safety net.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 14:07:54 -05:00

187 lines
4.3 KiB
YAML

---
- name: Deploy Litestream config
template:
src: litestream.yml.j2
dest: "{{ app_root }}/shared/litestream.yml"
owner: deploy
group: www-data
mode: "0640"
- name: Deploy wppackages socket
template:
src: wppackages.socket.j2
dest: /etc/systemd/system/wppackages.socket
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Deploy litestream service
template:
src: litestream.service.j2
dest: /etc/systemd/system/litestream.service
owner: root
group: root
mode: "0644"
notify:
- Reload systemd
- Restart litestream
- name: Deploy wppackages service
template:
src: wppackages.service.j2
dest: /etc/systemd/system/wppackages.service
owner: root
group: root
mode: "0644"
notify:
- Reload systemd
- Restart wppackages
- name: Deploy pipeline timer
template:
src: wppackages-pipeline.service.j2
dest: /etc/systemd/system/wppackages-pipeline.service
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Deploy pipeline failure notifier service
template:
src: wppackages-pipeline-notify@.service.j2
dest: /etc/systemd/system/wppackages-pipeline-notify@.service
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Ensure scripts directory exists
file:
path: "{{ app_root }}/shared/scripts"
state: directory
owner: deploy
group: www-data
mode: "0755"
- name: Deploy pipeline failure notification script
template:
src: notify-pipeline-failure.sh.j2
dest: "{{ app_root }}/shared/scripts/notify-pipeline-failure.sh"
owner: deploy
group: www-data
mode: "0755"
- name: Deploy pipeline timer unit
template:
src: wppackages-pipeline.timer.j2
dest: /etc/systemd/system/wppackages-pipeline.timer
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Deploy aggregate-installs timer
template:
src: wppackages-aggregate.service.j2
dest: /etc/systemd/system/wppackages-aggregate.service
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Deploy aggregate-installs timer unit
template:
src: wppackages-aggregate.timer.j2
dest: /etc/systemd/system/wppackages-aggregate.timer
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Deploy cleanup-sessions timer
template:
src: wppackages-cleanup.service.j2
dest: /etc/systemd/system/wppackages-cleanup.service
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Deploy cleanup-sessions timer unit
template:
src: wppackages-cleanup.timer.j2
dest: /etc/systemd/system/wppackages-cleanup.timer
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Deploy check-status service
template:
src: wppackages-check-status.service.j2
dest: /etc/systemd/system/wppackages-check-status.service
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Deploy check-status timer unit
template:
src: wppackages-check-status.timer.j2
dest: /etc/systemd/system/wppackages-check-status.timer
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Deploy generate-og timer
template:
src: wppackages-generate-og.service.j2
dest: /etc/systemd/system/wppackages-generate-og.service
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Deploy generate-og timer unit
template:
src: wppackages-generate-og.timer.j2
dest: /etc/systemd/system/wppackages-generate-og.timer
owner: root
group: root
mode: "0644"
notify: Reload systemd
- name: Flush handlers
meta: flush_handlers
- name: Enable and start litestream service
service:
name: litestream
state: started
enabled: yes
- name: Enable and start wppackages socket
service:
name: wppackages.socket
state: started
enabled: yes
- name: Enable and start wppackages service
service:
name: wppackages
state: started
enabled: yes
- name: Enable and start timers
service:
name: "{{ item }}"
state: started
enabled: yes
loop:
- wppackages-pipeline.timer
- wppackages-aggregate.timer
- wppackages-cleanup.timer
- wppackages-check-status.timer
- wppackages-generate-og.timer