summaryrefslogtreecommitdiff
path: root/ansible
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 /ansible
parent70a1927fd05e6127a5fd28ed944528b0176cedd6 (diff)
ansible-ise vaultwarden
Diffstat (limited to 'ansible')
-rw-r--r--ansible/playbook.yml8
-rw-r--r--ansible/roles/vaultwarden/tasks/main.yml26
-rwxr-xr-xansible/roles/vaultwarden/templates/openrc/vaultwarden51
3 files changed, 85 insertions, 0 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
+}