aboutsummaryrefslogtreecommitdiffstats
path: root/roles/vaultwarden/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/vaultwarden/tasks/main.yml')
-rw-r--r--roles/vaultwarden/tasks/main.yml100
1 files changed, 100 insertions, 0 deletions
diff --git a/roles/vaultwarden/tasks/main.yml b/roles/vaultwarden/tasks/main.yml
new file mode 100644
index 0000000..a4ad144
--- /dev/null
+++ b/roles/vaultwarden/tasks/main.yml
@@ -0,0 +1,100 @@
+- name: install packages
+ dnf:
+ name: '{{ vaultwarden_packages }}'
+ state: present
+
+- import_tasks: freeipa.yml
+ tags: freeipa
+
+- name: create home directory
+ file:
+ path: '{{ vaultwarden_home }}'
+ owner: '{{ vaultwarden_user }}'
+ group: '{{ vaultwarden_user }}'
+ mode: 0755
+ state: directory
+
+- name: download rustup
+ get_url:
+ url: https://sh.rustup.rs
+ dest: '{{ vaultwarden_home }}/rustup.sh'
+ mode: 0555
+ become: yes
+ become_user: '{{ vaultwarden_user }}'
+ register: rustup
+
+- name: install rust
+ command: '{{ vaultwarden_home }}/rustup.sh -y'
+ when: rustup.changed
+ become: yes
+ become_user: '{{ vaultwarden_user }}'
+
+- name: clone git repository
+ git:
+ repo: '{{ vaultwarden_git_repo }}'
+ dest: '{{ vaultwarden_source_dir }}'
+ version: '{{ vaultwarden_version }}'
+ force: yes
+ update: yes
+ become: yes
+ become_user: '{{ vaultwarden_user }}'
+ register: vaultwarden_git
+ notify: restart vaultwarden
+
+- name: build vaultwarden
+ shell:
+ cmd: 'source ${HOME}/.cargo/env && cargo build --features postgresql --release'
+ chdir: '{{ vaultwarden_source_dir }}'
+ become: yes
+ become_user: '{{ vaultwarden_user }}'
+ when: vaultwarden_git.changed
+
+- name: create web vault directory
+ file:
+ path: '{{ vaultwarden_web_dir }}'
+ owner: '{{ vaultwarden_user }}'
+ group: '{{ vaultwarden_user }}'
+ mode: 0755
+ state: directory
+
+- name: extract web vault
+ unarchive:
+ src: '{{ vaultwarden_web_url }}'
+ dest: '{{ vaultwarden_web_dir }}'
+ remote_src: yes
+ extra_opts: --strip-components=1
+ become: yes
+ become_user: '{{ vaultwarden_user }}'
+
+- name: create data directory
+ file:
+ path: '{{ vaultwarden_data_dir }}'
+ owner: '{{ vaultwarden_user }}'
+ group: '{{ vaultwarden_user }}'
+ mode: 0700
+ state: directory
+
+- name: create systemd unit
+ template:
+ src: etc/systemd/system/vaultwarden.service.j2
+ dest: /etc/systemd/system/vaultwarden.service
+ notify: restart vaultwarden
+
+- name: reload systemd daemons
+ systemd:
+ daemon_reload: yes
+
+- name: generate environment file
+ template:
+ src: etc/sysconfig/vaultwarden.j2
+ dest: /etc/sysconfig/vaultwarden
+ notify: restart vaultwarden
+
+- import_tasks: database.yml
+ tags: database
+
+- name: enable systemd unit
+ systemd:
+ name: vaultwarden
+ enabled: yes
+ state: started