diff --git a/group_vars/ruby/vars.yml b/group_vars/ruby/vars.yml index 6db5016..7d5d291 100644 --- a/group_vars/ruby/vars.yml +++ b/group_vars/ruby/vars.yml @@ -7,3 +7,6 @@ monica_mariadb_root_pass: "{{ vault_monica_mariadb_root_pass }}" miniflux_admin: "{{ vault_miniflux_admin }}" miniflux_admin_pass: "{{ vault_miniflux_admin_pass }}" + +digikam_mariadb_pass: "{{ vault_digikam_mariadb_pass }}" +digikam_mariadb_root_pass: "{{ vault_digikam_mariadb_root_pass }}" diff --git a/group_vars/ruby/vault.yml b/group_vars/ruby/vault.yml index fa11502..9ba1cda 100644 --- a/group_vars/ruby/vault.yml +++ b/group_vars/ruby/vault.yml @@ -1,19 +1,26 @@ $ANSIBLE_VAULT;1.1;AES256 -34653966333139353132363561373666373561306561343965353162393333363465633362336336 -3161613435666463653536373363393939663431316233390a666337656238653732623839383161 -66653934663538336235623663356333316432616361643930356531353734376531626135653565 -3334626639396631320a613039303962373863393234336435353937383430343461383139353838 -63343662626630616133396333633066386537316562373035363165643033643433323737323136 -31316239653863363438343733373630396333633432666436343130636235363734626232363136 -63383133616562343162653335396564623065323936646235626430363539336630373665373133 -64613038393563333462323833393664363839613435666166626666366366383732613562666635 -37626436306663333762636331303737383935643934626533366438393632386335383438313837 -34616330396333646531316334636236393164303136613665666665326166376434616662636463 -30343433663764383734396338346330343632376461366665386662383962323661613138663833 -38316137353036373266343932613261353432653339626361616265313538323139646436633235 -64613964323662383737643662633763616566386266646365633764376430633263356531343830 -35373436643732313338336462306532326366643734666332313431396363363630313738383039 -33626363333865346666643735623638366539653663363365383733386462386661323438613561 -36343236643231346263306334333161623165386666363934633338653161643165306139346632 -31363231393832663661303465643065363039363866383237303662383338363262373735663761 -3332363437313435323466313932313738386164663966613330 +38613635363435396562373461643133326636633430393530643166666334366132396335316130 +3662663565653432656365653265393636643233363564370a323866373639376438323135343239 +35623865373737396636353766636333626566666439343737396537343838333361363366303334 +6632343033386337330a333665643361373564636636666461393637356332333466656430383731 +65626537623733356134383464333162656438323964313630383930313739313465316331653034 +36376665663331363466613330343665313333323339306365323365646166623537303434303730 +32363037343761633466636531383864303335363938623932346232366261636262643034346138 +31346132636334636637353030313339376262316433396334333532363138353365313838373231 +35636335626664663637326437323733366331623435336666383434376430613564356636376432 +62393064323336663064346266373934343736653666383362636434333962323466313631333165 +66323431323966373263326464316432313636386238393339333161386162333337353631303466 +64653034653965303039343464366463613564343634616230366665363861336633366530303562 +38303065346237653233386566353766356637383965363636386566656139643638613461613037 +61333737343964383034393839633462323466303030323433383163623862313433333932613831 +63306665626465386230326665303430643637653836383237393531373739646666383237356338 +30663462336366356636366662383864353764356264643237396561316633353261626236306165 +65623366356665623334303835366361656365333835663032656338373937306130353839333366 +62386130646164656538653031386561666230653635636661643264396430656234623634333037 +63373939346461613964363335663833376564363234616564346261363362626135323537643864 +38353936653434323735393966623664343761653934366638626239643135333139653461306435 +38393232373834366234663762633062393633333234363938646562386334663633626434653763 +32643831303037323738393962666136333138343937313966623264613633373134316135666563 +36366165343031376266353461326465393538363039333135613736643931306333353031313635 +66646266346566303231346638346436323766633233633833376166663235326337363136376561 +63363633613639656437363738636236636365343232393731356638333335356331 diff --git a/roles/digikam/files/compose.yml b/roles/digikam/files/compose.yml new file mode 100644 index 0000000..2615e98 --- /dev/null +++ b/roles/digikam/files/compose.yml @@ -0,0 +1,10 @@ +services: + db: + image: 'mariadb:11.6' + + env_file: 'mariadb.env' + ports: + - '8015:3306' + volumes: + - './init.sql:/docker-entrypoint-initdb.d/init.sql' + - '/mnt/data1/digikam/mariadb:/var/lib/mysql' diff --git a/roles/digikam/files/digikam.service b/roles/digikam/files/digikam.service new file mode 100644 index 0000000..0706c22 --- /dev/null +++ b/roles/digikam/files/digikam.service @@ -0,0 +1,13 @@ +[Unit] +Description=Photo management software +After=docker.service +Requires=docker.service + +[Service] +Type=exec +WorkingDirectory=/etc/digikam +ExecStart=/usr/bin/docker compose up +ExecStop=/usr/bin/docker compose down + +[Install] +WantedBy=multi-user.target diff --git a/roles/digikam/files/init.sql b/roles/digikam/files/init.sql new file mode 100644 index 0000000..a827723 --- /dev/null +++ b/roles/digikam/files/init.sql @@ -0,0 +1,6 @@ +create database if not exists digikam_core; +create database if not exists digikam_thumbnails; +create database if not exists digikam_similarity; +create database if not exists digikam_recognition; + +grant all privileges on *.* to 'digikam'@'%'; diff --git a/roles/digikam/handlers/main.yml b/roles/digikam/handlers/main.yml new file mode 100644 index 0000000..f788294 --- /dev/null +++ b/roles/digikam/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: 'restart digikam' + ansible.builtin.service: + name: 'digikam' + state: 'restarted' diff --git a/roles/digikam/tasks/main.yml b/roles/digikam/tasks/main.yml new file mode 100644 index 0000000..c6eccbe --- /dev/null +++ b/roles/digikam/tasks/main.yml @@ -0,0 +1,70 @@ +--- +- name: Ensure data directory is present + ansible.builtin.file: + path: '/mnt/data1/digikam' + state: directory + mode: '0755' + owner: 'root' + group: 'root' + +- name: Ensure data subvolumes are present + community.general.btrfs_subvolume: + name: '/digikam/{{ item }}' + loop: + - 'mariadb' + +- name: Ensure subvolume permissions are correct + ansible.builtin.file: + path: "/mnt/data1/digikam/{{ item }}" + state: directory + mode: '0755' + owner: '999' + group: '999' + loop: + - 'mariadb' + +- name: Ensure configuration directory is present + ansible.builtin.file: + path: '/etc/digikam' + state: directory + mode: '0755' + +- name: Ensure compose files is present + ansible.builtin.copy: + src: '{{ item }}' + dest: '/etc/digikam/{{ item }}' + mode: '0644' + owner: 'root' + group: 'root' + notify: 'restart digikam' + loop: + - 'compose.yml' + - 'init.sql' + +- name: Ensure env file is present + ansible.builtin.template: + src: 'mariadb.env.j2' + dest: '/etc/digikam/mariadb.env' + mode: '0644' + owner: 'root' + group: 'root' + notify: 'restart digikam' + +- name: Ensure service file is present + ansible.builtin.copy: + src: 'digikam.service' + dest: '/lib/systemd/system/digikam.service' + owner: 'root' + group: 'root' + mode: '0644' + register: res + +- name: systemd-reload + ansible.builtin.systemd_service: + daemon_reload: true + when: 'res.changed' + +- name: Ensure digikam service is enabled + ansible.builtin.service: + name: 'digikam' + enabled: true diff --git a/roles/digikam/templates/mariadb.env.j2 b/roles/digikam/templates/mariadb.env.j2 new file mode 100644 index 0000000..81776ec --- /dev/null +++ b/roles/digikam/templates/mariadb.env.j2 @@ -0,0 +1,3 @@ +MARIADB_USER=digikam +MARIADB_PASSWORD={{ digikam_mariadb_pass }} +MARIADB_ROOT_PASSWORD={{ digikam_mariadb_root_pass }} diff --git a/ruby.yml b/ruby.yml index 7738e2b..a47d1a7 100644 --- a/ruby.yml +++ b/ruby.yml @@ -81,3 +81,9 @@ roles: - calathea tags: calathea + +- hosts: ruby + become: yes + roles: + - digikam + tags: digikam