From e429ce661ec0f74531681c2c4d0ebb8a197fa823 Mon Sep 17 00:00:00 2001 From: Amritanshu Date: Wed, 30 Jul 2025 04:12:29 +0000 Subject: [PATCH] Updated bitwarden to work with caddy --- bitwarden/playbook.yml | 5 +++-- bitwarden/roles/bitwarden/tasks/main.yaml | 14 ++++++------- bitwarden/roles/caddy/handlers/main.yaml | 5 +++++ bitwarden/roles/caddy/tasks/main.yaml | 22 +++++++++++++++++++++ bitwarden/roles/network/tasks/main.yaml | 9 +++++++++ bitwarden/roles/nginx/handlers/main.yaml | 6 ------ bitwarden/roles/nginx/tasks/main.yaml | 24 ----------------------- bitwarden/vars/default.yml | 24 ++++++++++++++++------- 8 files changed, 62 insertions(+), 47 deletions(-) create mode 100644 bitwarden/roles/caddy/handlers/main.yaml create mode 100644 bitwarden/roles/caddy/tasks/main.yaml create mode 100644 bitwarden/roles/network/tasks/main.yaml delete mode 100644 bitwarden/roles/nginx/handlers/main.yaml delete mode 100644 bitwarden/roles/nginx/tasks/main.yaml diff --git a/bitwarden/playbook.yml b/bitwarden/playbook.yml index 8c636c8..ebe4a88 100755 --- a/bitwarden/playbook.yml +++ b/bitwarden/playbook.yml @@ -2,11 +2,12 @@ # Bitwarden Playbook ################################################# --- -- hosts: gondor +- hosts: monoco become: true vars_files: - vars/default.yml roles: + - network - bitwarden - - nginx + - caddy diff --git a/bitwarden/roles/bitwarden/tasks/main.yaml b/bitwarden/roles/bitwarden/tasks/main.yaml index 5fd9199..3c32547 100644 --- a/bitwarden/roles/bitwarden/tasks/main.yaml +++ b/bitwarden/roles/bitwarden/tasks/main.yaml @@ -2,7 +2,7 @@ # Tasks for Bitwarden role - name: Pull Bitwarden Vault Warden image docker_image: - name: "{{ container_image }}" + name: "{{ image_name }}" source: pull force_source: yes @@ -14,16 +14,14 @@ - name: Create bitwarden container docker_container: - name: "{{ container_name }}" - image: "{{ container_image }}" + name: "{{ docker_container }}" + image: "{{ image_name }}" state: started restart_policy: "unless-stopped" env: DATABASE_URL: "{{ db_url }}" - DOMAIN: "https://{{ http_host }}" - links: - - "postgres:db" - published_ports: - - 127.0.0.1:8080:80 + DOMAIN: "https://{{ host }}" volumes: - "/var/lib/{{ host_directory }}/data:/data/" + networks: + - name: "{{ docker_network }}" diff --git a/bitwarden/roles/caddy/handlers/main.yaml b/bitwarden/roles/caddy/handlers/main.yaml new file mode 100644 index 0000000..294bf14 --- /dev/null +++ b/bitwarden/roles/caddy/handlers/main.yaml @@ -0,0 +1,5 @@ +--- +# Handlers for Caddy role +- name: Reload Caddy configuration + ansible.builtin.command: "docker exec -w /etc/caddy {{ caddy_container }} caddy reload" + listen: "Reload Caddy" \ No newline at end of file diff --git a/bitwarden/roles/caddy/tasks/main.yaml b/bitwarden/roles/caddy/tasks/main.yaml new file mode 100644 index 0000000..9616151 --- /dev/null +++ b/bitwarden/roles/caddy/tasks/main.yaml @@ -0,0 +1,22 @@ +--- +- name: Read current Caddyfile + ansible.builtin.slurp: + path: "{{ caddyfile_path }}" + register: caddyfile_raw + +- name: Decode Caddyfile content + set_fact: + caddyfile_content: "{{ caddyfile_raw['content'] | b64decode }}" + +- name: Check if snippet already exists + set_fact: + snippet_present: "{{ snippet_block in caddyfile_content }}" + +- name: Add snippet if missing + ansible.builtin.blockinfile: + path: "{{ caddyfile_path }}" + marker: "# {mark} Ansible managed Caddy snippet for {{ host }}" + block: "{{ snippet_block }}" + create: yes + when: not snippet_present + notify: "Reload Caddy" \ No newline at end of file diff --git a/bitwarden/roles/network/tasks/main.yaml b/bitwarden/roles/network/tasks/main.yaml new file mode 100644 index 0000000..376c80e --- /dev/null +++ b/bitwarden/roles/network/tasks/main.yaml @@ -0,0 +1,9 @@ +--- +- name: "Ensure {{ docker_container }} Docker network exists" + docker_network: + name: "{{ docker_network }}" + state: present + connected: + - "{{ caddy_container }}" + - "{{ postgres_container }}" + appends: yes diff --git a/bitwarden/roles/nginx/handlers/main.yaml b/bitwarden/roles/nginx/handlers/main.yaml deleted file mode 100644 index 622fd36..0000000 --- a/bitwarden/roles/nginx/handlers/main.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -# Handlers for Nginx role -- name: Reload Nginx - service: - name: nginx - state: reloaded diff --git a/bitwarden/roles/nginx/tasks/main.yaml b/bitwarden/roles/nginx/tasks/main.yaml deleted file mode 100644 index 4441fe7..0000000 --- a/bitwarden/roles/nginx/tasks/main.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -# Tasks for Nginx role -- name: Check if Nginx conf file exists - stat: - path: "/etc/nginx/sites-available/{{ http_conf }}" - register: status - -- name: No need to reload Nginx - debug: - msg: "No need to reload Nginx as sites-available entries have already been created" - -- name: Set Nginx conf file - when: status.stat.exists == false - template: - src: "files/nginx.conf.j2" - dest: "/etc/nginx/sites-available/{{ http_conf }}" - -- name: Enable new site - when: status.stat.exists == false - file: - src: "/etc/nginx/sites-available/{{ http_conf }}" - dest: "/etc/nginx/sites-enabled/{{ http_conf }}" - state: link - notify: Reload Nginx diff --git a/bitwarden/vars/default.yml b/bitwarden/vars/default.yml index 5256164..01d69d2 100644 --- a/bitwarden/vars/default.yml +++ b/bitwarden/vars/default.yml @@ -1,11 +1,21 @@ --- -http_host: "vault.tanshu.com" -http_conf: "vault.tanshu.com.conf" +host: vault.tanshu.com -container_name: bitwarden -container_image: vaultwarden/server:latest +docker_container: bitwarden +image_name: vaultwarden/server:latest -db_server: db -db_url: postgresql://postgres:123456@{{ db_server }}:5432/bitwarden +host_directory: bitwarden + +docker_network: "{{ docker_container }}_net" + +postgres_container: postgres +caddy_container: caddy + +caddyfile_path: /var/lib/caddy/conf/Caddyfile +snippet_block: | + {{ host }} { + reverse_proxy {{ docker_container }}:80 + } + +db_url: postgresql://postgres:123456@{{ postgres_container }}:5432/bitwarden -host_directory: bitwarden \ No newline at end of file