diff options
| author | Joe Carstairs <me@joeac.net> | 2026-08-06 14:39:04 +0100 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2026-08-06 14:39:04 +0100 |
| commit | 9d421d1cdb825b70b9ed6e2a4be3a230b40b34e9 (patch) | |
| tree | c7477e2805c39733aeaaa38071196e3c071112be | |
| parent | 70a1927fd05e6127a5fd28ed944528b0176cedd6 (diff) | |
ansible-ise vaultwarden
| -rw-r--r-- | ansible/playbook.yml | 8 | ||||
| -rw-r--r-- | ansible/roles/vaultwarden/tasks/main.yml | 26 | ||||
| -rwxr-xr-x | ansible/roles/vaultwarden/templates/openrc/vaultwarden | 51 | ||||
| -rw-r--r-- | compose.yml | 11 | ||||
| -rw-r--r-- | vaultwarden/install.mk | 13 |
5 files changed, 85 insertions, 24 deletions
diff --git a/ansible/playbook.yml b/ansible/playbook.yml index c0b5abc..b8be70f 100644 --- a/ansible/playbook.yml +++ b/ansible/playbook.yml @@ -26,3 +26,11 @@ vars_files: - common.yml - etherpad.yml + +- name: Install vaultwarden + hosts: "{{ services.vaultwarden.host }}" + become: true + roles: + - vaultwarden + vars_files: + - common.yml diff --git a/ansible/roles/vaultwarden/tasks/main.yml b/ansible/roles/vaultwarden/tasks/main.yml new file mode 100644 index 0000000..6533642 --- /dev/null +++ b/ansible/roles/vaultwarden/tasks/main.yml @@ -0,0 +1,26 @@ +- name: Install podman and jq + community.general.apk: + name: + - podman + - jq + +- name: Install vaultwarden service + register: vaultwarden_service + ansible.builtin.template: + src: openrc/vaultwarden + dest: /etc/init.d/vaultwarden + mode: "755" + +- name: Restart vaultwarden service and configure to start on boot + when: vaultwarden_service is changed + ansible.builtin.service: + name: vaultwarden + enabled: true + state: restarted + +- name: Start vaultwarden service and configure to start on boot + when: not ( vaultwarden_service is changed ) + ansible.builtin.service: + name: vaultwarden + enabled: true + state: started diff --git a/ansible/roles/vaultwarden/templates/openrc/vaultwarden b/ansible/roles/vaultwarden/templates/openrc/vaultwarden new file mode 100755 index 0000000..db630fd --- /dev/null +++ b/ansible/roles/vaultwarden/templates/openrc/vaultwarden @@ -0,0 +1,51 @@ +#!/sbin/openrc-run + +: ${HOME:={{ ansible_facts.env.HOME }}} +: ${MODULENAME:=${RC_SVCNAME##*.}} +: ${SRCDIR:=$HOME/joeac.net} +DOCKER_COMPOSE_UP_ARGS=${DOCKER_COMPOSE_UP_ARGS-"--no-build --no-recreate --no-deps"} + +description="Run vaultwarden container image" + +start() { + ebegin "Starting vaultwarden" + podman create \ + --name=joeac.net-vaultwarden \ + --env DOMAIN=https://pwd.joeac.net \ + --volume /var/vaultwarden/data:/data/ \ + --publish 9000:80 \ + --restart unless-stopped \ + docker.io/vaultwarden/server:latest + podman start joeac.net-vaultwarden + eend $? +} + +stop() { + ebegin "Stopping vaultwarden" + podman rm --force joeac.net-vaultwarden + eend $? +} + +status() { + if ! $(podman container exists joeac.net-vaultwarden); then + einfo "status: no container found called joeac.net-vaultwarden" + exit 3 + fi + state="$(podman inspect joeac.net-vaultwarden | jq .[0].State)" + if [ "$(echo "$state" | jq .Paused)" == "true" ]; then + einfo "status: paused" + exit 0 + elif [ "$(echo "$state" | jq .Restarting)" == "true" ]; then + einfo "status: restarting" + exit 0 + elif [ "$(echo "$state" | jq .Running)" == "true" ]; then + einfo "status: running" + exit 0 + elif [ "$(echo "$state" | jq .Error)" == "0" ]; then + einfo "status: stopped" + exit 3 + else + einfo "status: crashed" + exit 3 + fi +} diff --git a/compose.yml b/compose.yml index 51ad771..22c7381 100644 --- a/compose.yml +++ b/compose.yml @@ -61,17 +61,6 @@ services: secrets: - remote_smtp_password - vaultwarden: - image: docker.io/vaultwarden/server:latest - container_name: joeac.net-vaultwarden - restart: unless-stopped - environment: - DOMAIN: "https://pwd.joeac.net" - volumes: - - ${VAULTWARDEN_DATA_DIR}:/data/ - ports: - - "${VAULTWARDEN_PORT}:80" - secrets: remote_smtp_password: external: true diff --git a/vaultwarden/install.mk b/vaultwarden/install.mk deleted file mode 100644 index 8231a85..0000000 --- a/vaultwarden/install.mk +++ /dev/null @@ -1,13 +0,0 @@ -.PHONY: install -install: $(VAULTWARDEN_DATA_DIR) - -.PHONY: reinstall -reinstall: $(VAULTWARDEN_DATA_DIR) - -$(VAULTWARDEN_DATA_DIR): - sudo mkdir -p $(VAULTWARDEN_DATA_DIR) - VAULTWARDEN_USER=$(whoami) && sudo chown $$VAULTWARDEN_USER:$$VAULTWARDEN_USER $(VAULTWARDEN_DATA_DIR) - -.PHONY: uninstall -uninstall: - $(info Nothing to do) |
