Rebuild ansible on the project deploy template
- playbook.yml (hosts: monoco) + vars/default.yml, requirements.yml - roles: network (shared docker network), greatbear (registry pull, bind mount /var/lib/greatbear/pb_data, .env upload, health wait), caddy (blockinfile snippet into the shared Caddyfile + docker exec reload) - image honors PB_DATA_DIR and runs as root to match the bind-mount pattern - frontend on www.greatbear.in (+apex) with /api/* and /_* proxied to PocketBase; admin.greatbear.in redirects to the admin UI
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
---
|
||||
caddy_container: caddy
|
||||
caddy_caddyfile_path: /var/lib/caddy/conf/Caddyfile
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
- name: Reload Caddy configuration
|
||||
ansible.builtin.command: "docker exec -w /etc/caddy {{ caddy_container }} caddy reload"
|
||||
listen: "Reload Caddy"
|
||||
changed_when: true
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
- name: Reload Caddy
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ caddy_service }}"
|
||||
state: reloaded
|
||||
@@ -0,0 +1,26 @@
|
||||
---
|
||||
- name: Read snippet from template file
|
||||
ansible.builtin.set_fact:
|
||||
caddy_snippet_block: "{{ lookup('template', 'files/Caddyfile.j2') }}"
|
||||
|
||||
- name: Read current Caddyfile
|
||||
ansible.builtin.slurp:
|
||||
path: "{{ caddy_caddyfile_path }}"
|
||||
register: caddy_caddyfile_raw
|
||||
|
||||
- name: Decode Caddyfile content
|
||||
ansible.builtin.set_fact:
|
||||
caddy_caddyfile_content: "{{ caddy_caddyfile_raw['content'] | b64decode }}"
|
||||
|
||||
- name: Check if snippet already exists
|
||||
ansible.builtin.set_fact:
|
||||
caddy_snippet_present: "{{ caddy_snippet_block in caddy_caddyfile_content }}"
|
||||
|
||||
- name: Add or update snippet in Caddyfile
|
||||
ansible.builtin.blockinfile:
|
||||
path: "{{ caddy_caddyfile_path }}"
|
||||
marker: "# {mark} Ansible managed Caddy snippet for {{ host }}"
|
||||
block: "{{ caddy_snippet_block }}"
|
||||
create: true
|
||||
mode: "0644"
|
||||
notify: Reload Caddy configuration
|
||||
@@ -1,47 +0,0 @@
|
||||
---
|
||||
# Manage Caddy entries for the site and the PocketBase admin/API host.
|
||||
- name: Ensure Caddy config include directory exists
|
||||
ansible.builtin.file:
|
||||
path: "{{ caddy_config_dir }}"
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
|
||||
- name: Check whether the main Caddyfile exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ caddyfile_path }}"
|
||||
register: caddyfile_stat
|
||||
|
||||
- name: Ensure the main Caddyfile imports conf.d entries
|
||||
ansible.builtin.lineinfile:
|
||||
path: "{{ caddyfile_path }}"
|
||||
line: "import {{ caddy_config_dir }}/*.conf"
|
||||
insertafter: EOF
|
||||
state: present
|
||||
when: caddyfile_stat.stat.exists
|
||||
notify: Reload Caddy
|
||||
|
||||
- name: Install Great Bear Caddy entries
|
||||
ansible.builtin.template:
|
||||
src: greatbear.conf.j2
|
||||
dest: "{{ caddy_config_dir }}/greatbear.conf"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
notify: Reload Caddy
|
||||
|
||||
- name: Validate Caddy configuration
|
||||
ansible.builtin.command:
|
||||
cmd: "caddy validate --config {{ caddyfile_path }} --adapter caddyfile"
|
||||
changed_when: false
|
||||
when: caddyfile_stat.stat.exists
|
||||
|
||||
- name: Flush handlers (reload Caddy now)
|
||||
ansible.builtin.meta: flush_handlers
|
||||
|
||||
- name: Ensure Caddy is enabled and running
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ caddy_service }}"
|
||||
state: started
|
||||
enabled: true
|
||||
@@ -1,12 +0,0 @@
|
||||
# The Great Bear — managed by Ansible. Changes will be overwritten.
|
||||
# Frontend (TanStack Start)
|
||||
{{ site_domain }} {
|
||||
encode zstd gzip
|
||||
reverse_proxy 127.0.0.1:3000
|
||||
}
|
||||
|
||||
# PocketBase API + admin UI (http://{{ admin_domain }}/_/)
|
||||
{{ admin_domain }} {
|
||||
encode zstd gzip
|
||||
reverse_proxy 127.0.0.1:8090
|
||||
}
|
||||
Reference in New Issue
Block a user