summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2026-08-06 14:39:04 +0100
committerJoe Carstairs <me@joeac.net>2026-08-06 14:39:04 +0100
commit9d421d1cdb825b70b9ed6e2a4be3a230b40b34e9 (patch)
treec7477e2805c39733aeaaa38071196e3c071112be
parent70a1927fd05e6127a5fd28ed944528b0176cedd6 (diff)
ansible-ise vaultwarden
-rw-r--r--ansible/playbook.yml8
-rw-r--r--ansible/roles/vaultwarden/tasks/main.yml26
-rwxr-xr-xansible/roles/vaultwarden/templates/openrc/vaultwarden51
-rw-r--r--compose.yml11
-rw-r--r--vaultwarden/install.mk13
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)