From 628f5611e47befa5903c37331beb06089253014a Mon Sep 17 00:00:00 2001 From: Salt Date: Mon, 25 Jan 2021 21:46:22 -0600 Subject: [PATCH] Alright, this shoooould be functional --- defaults/main.yml | 22 +++++++++++++++- handlers/main.yml | 4 +-- tasks/main.yml | 63 +++++++++++++++++++++++++++++++++++++++++++- templates/config.exs | 47 +++++++++++++++++++++++++++++++++ 4 files changed, 132 insertions(+), 4 deletions(-) create mode 100644 templates/config.exs diff --git a/defaults/main.yml b/defaults/main.yml index d5778d8..15cb1e2 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,4 +1,24 @@ # vim:ft=ansible: pleroma_home: /opt/pleroma +pleroma_arch: amd64 +pleroma_install: yes pleroma_enabled: yes -pleroma_name: default +pleroma_download_url: "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job={{ pleroma_arch }}" + +# Site configuration +pleroma_hostname: "" +pleroma_char_limit: 65536 +pleroma_open_registration: "false" +pleroma_instance_name: "My Pleroma Instance" +pleroma_instance_desc: "My Pleroma instance, deployed via Ansible with no defaults changed" + +# Secret configuration +pleroma_secret_key_base: "" +pleroma_secret_signing_salt: "" + +# DB configuration +pleroma_db_name: "" +pleroma_db_host: "" +pleroma_db_user: "" +pleroma_db_pass: "" +pleroma_db_pool_size: 10 diff --git a/handlers/main.yml b/handlers/main.yml index 201acdd..c0a55cd 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,8 +1,8 @@ # vim:ft=ansible: --- -- name: "restart pleroma {{ pleroma_name }}" +- name: restart pleroma systemd: - name: "pleroma@{{ pleroma_name }}" + name: pleroma.service state: restarted become: yes when: pleroma_enabled diff --git a/tasks/main.yml b/tasks/main.yml index 4b8e055..3028fc4 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -11,4 +11,65 @@ file: path={{ pleroma_home }} state=directory owner=pleroma group=pleroma mode="3775" - name: assure systemd unit template: src=pleroma.service dest=/etc/systemd/system/pleroma@.service - notify: "restart pleroma {{ pleroma_name }}" + notify: restart pleroma +- name: set up pleroma + block: + - name: assure db extensions + postgresql_ext: + db: "{{ pleroma_db_name }}" + name: "{{ item }}" + login_host: "{{ pleroma_db_host }}" + login_user: "{{ pleroma_db_user }}" + login_pass: "{{ pleroma_db_pass }}" + loop: + - citext + - pg_trgm + - uuid-ossp + notify: restart pleroma + - name: get latest release + get_url: url={{ pleroma_download_url }} dest={{ pleroma_home }}/release.zip + register: dl + - name: install pleroma + block: + - name: stop pleroma + systemd: name=pleroma@{{ pleroma_name }} state=stopped + - name: unzip release + unarchive: src={{ pleroma_home }}/release.zip dest={{ pleroma_home }} remote_src=yes + - name: remove old release + file: path={{ pleroma_home }}/{{ item }} state=absent + loop: + - bin + - lib + - releases + - installation + - name: move new release in + shell: rsync -a {{ pleroma_home }}/release/* {{ pleroma_home }}/ + - name: clean up + file: path={{ pleroma_home }}/release state=absent + - name: clean up ownership + file: path={{ pleroma_home }} owner=pleroma group=pleroma recurse=yes + when: dl is changed and pleroma_install + - name: assure directory structure + file: path={{ item }} state=directory owner=pleroma group=pleroma mode="0755" + loop: + - /etc/pleroma + - /opt/pleroma + - /var/lib/pleroma + - /var/lib/pleroma/static + - /var/lib/pleroma/uploads + - name: template out stub config + template: src=config.exs dest=/etc/pleroma/config.exs owner=pleroma group=pleroma mode="0640" + notify: restart pleroma + - name: migrate db + command: {{ pleroma_home }}/bin/pleroma_ctl migrate + args: + chdir: "{{ pleroma_home }}" + become: yes + become_user: pleroma + changed_when: false +- name: enable service + systemd: name=pleroma state=started enabled=yes + when: pleroma_enabled +- name: disable service + systemd: name=pleroma state=stopped enabled=no + when: not pleroma_enabled diff --git a/templates/config.exs b/templates/config.exs new file mode 100644 index 0000000..5bbef26 --- /dev/null +++ b/templates/config.exs @@ -0,0 +1,47 @@ +# WARNING: THIS FILE CONTAINS SENSITIVE INFORMATION +import Config + +# Basic configuration +config :pleroma, Pleroma.Web.Endpoint, + url: [host: "{{ pleroma_hostname }}", scheme: "https", port: 443], + http: [ip: {127, 0, 0, 1}, port: 4000], + secret_key_base: "{{ pleroma_secret_key_base }}", + signing_salt: "{{ pleroma_secret_signing_salt }}" +config :pleroma, :instance, + name: "{{ pleroma_instance_name }}", + desc: "{{ pleroma_instance_desc }}", + limit: "{{ pleroma_char_limit }}", + registrations_open: {{ pleroma_open_registration }}, + static_dir: "/var/lib/pleroma/static" +config :pleroma, Pleroma.Upload, + uploader: Pleroma.Uploaders.Local, + filters: [Pleroma.Upload.Filter.Dedupe] +config :pleroma, Pleroma.Uploaders.Local, + uploads: "/var/lib/pleroma/uploads" +config :pleroma, :media_proxy, + enabled: false, + redirect_on_failure: true + +# Use in-db configs where possible +config :pleroma, configurable_from_database: true + +# DB configuration +config :pleroma, Pleroma.Repo, + adapter: Ecto.Adapters.Postgres, + database: "{{ pleroma_db_name }}", + hostname: "{{ pleroma_db_host }}", + username: "{{ pleroma_db_user }}", + password: "{{ pleroma_db_pass }}", + pool_size: {{ pleroma_db_pool_size }} +config :pleroma, :database, rum_enabled: false + +# Mail +config :pleroma, Pleroma.Emails.Mailer, + enabled: false, + +# Theming +config :pleroma, :frontend_configurations, + pleroma_fe: %{ + background: "/images/background.jpg", + theme: "simply-dark" + }