Completed pleroma-otp role.
authorLuke Hoersten <luke@hoersten.org>
Sun, 19 Jan 2020 15:33:08 -0600
changeset 85 dcfd23308c32
parent 84 d0c40727e6ff
child 86 3dcdaac4adbf
Completed pleroma-otp role.
roles/pleroma-otp/defaults/main.yaml
roles/pleroma-otp/files/[email protected]
roles/pleroma-otp/handlers/main.yaml
roles/pleroma-otp/tasks/main.yaml
roles/pleroma-otp/templates/config.exs.j2
--- a/roles/pleroma-otp/defaults/main.yaml	Sun Jan 19 13:41:08 2020 -0600
+++ b/roles/pleroma-otp/defaults/main.yaml	Sun Jan 19 15:33:08 2020 -0600
@@ -23,8 +23,8 @@
   - "unzip"
 
 pleroma_branch: "stable"
-pleroma_flavor: "arm"
+pleroma_download_url: "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/{{pleroma_branch}}/download?job={{pleroma_flavor}}"
 
-pleroma_db: "{{pleroma_instance}}"
-pleroma_db_user: "{{pleroma_instance}}"
+pleroma_db: "pleroma_{{pleroma_instance}}"
+pleroma_db_user: "pleroma_{{pleroma_instance}}"
 pleroma_data_dir: "/var/lib/pleroma/instance_data"
--- a/roles/pleroma-otp/files/[email protected]	Sun Jan 19 13:41:08 2020 -0600
+++ b/roles/pleroma-otp/files/[email protected]	Sun Jan 19 15:33:08 2020 -0600
@@ -1,6 +1,6 @@
 [Unit]
-Description=Pleroma social network instance %I
-After=network.target postgresql.service
+Description=Pleroma social network instance "%I"
+After=network.target postgresql.service nginx.service
 
 [Service]
 User=pleroma
@@ -12,6 +12,7 @@
 
 ExecStart=/opt/pleroma/bin/pleroma daemon
 ExecReload=/opt/pleroma/bin/pleroma stop
+
 KillMode=process
 Restart=on-failure
 
@@ -19,7 +20,7 @@
 ; Use private /tmp and /var/tmp folders inside a new file system namespace, which are discarded after the process stops.
 PrivateTmp=true
 ; The /home, /root, and /run/user folders can not be accessed by this service anymore. If your Pleroma user has its home folder in one of the restricted places, or use one of these folders as its working directory, you have to set this to false.
-ProtectHome=false
+ProtectHome=true
 ; Mount /usr, /boot, and /etc as read-only for processes invoked by this service.
 ProtectSystem=full
 ; Sets up a new /dev mount for the process and only adds API pseudo devices like /dev/null, /dev/zero or /dev/random but not physical devices. Disabled by default because it may not work on devices like the Raspberry Pi.
--- a/roles/pleroma-otp/handlers/main.yaml	Sun Jan 19 13:41:08 2020 -0600
+++ b/roles/pleroma-otp/handlers/main.yaml	Sun Jan 19 15:33:08 2020 -0600
@@ -1,5 +1,5 @@
 ---
 
-- name: "restart pleroma {{pleroma_instance}} instance"
+- name: restart pleroma instance
   become: yes
-  systemd: name="pleroma@{{pleroma_instance}}" state="restarted" daemon_reload="yes"
+  systemd: name="pleroma@{{pleroma_instance}}.service" state="restarted" daemon_reload="yes"
--- a/roles/pleroma-otp/tasks/main.yaml	Sun Jan 19 13:41:08 2020 -0600
+++ b/roles/pleroma-otp/tasks/main.yaml	Sun Jan 19 15:33:08 2020 -0600
@@ -17,14 +17,17 @@
   with_items:
     - "{{pleroma_data_dir}}"
     - "/etc/pleroma"
+    - "/opt/pleroma"
 
 - name: install pleroma config
   template:
     src: "config.exs.j2"
     dest: "/etc/pleroma/{{pleroma_instance}}.config.exs"
-    mode: "0700"
+    owner: "pleroma"
+    group: "pleroma"
+    mode: "0600"
   become: yes
-  notify: "restart pleroma {{pleroma_instance}} instance"
+  notify: restart pleroma instance
 
 - name: create instance data directory
   become: yes
@@ -40,74 +43,59 @@
     - "{{pleroma_data_dir}}/{{pleroma_instance}}/static"
     - "{{pleroma_data_dir}}/{{pleroma_instance}}/static/emoji"
 
-# Set config path in systemd: PLEROMA_CONFIG_PATH
-
-# - name: install pleroma db schema file
-#   template:
-#     src: "setup_db.psql.j2"
-#     dest: "/tmp/setup_db.psql"
-#     owner: "{{pleroma_db_superuser}}"
-#     group: "{{pleroma_db_superuser}}"
-#     mode: "0700"
-#   become: yes
+- name: install pleroma db schema file
+  template:
+    src: "setup_db.psql.j2"
+    dest: "/tmp/setup_db.psql"
+    owner: "{{pleroma_db_superuser}}"
+    group: "{{pleroma_db_superuser}}"
+    mode: "0600"
+  become: yes
 
-# - name: install pleroma psql
-#   become: yes
-#   become_user: "{{pleroma_db_superuser}}"
-#   command: "psql -f /tmp/setup_db.psql"
-#   notify: restart pleroma
-
-
-
-
-
-# MIGERATION
-# mv ~pleroma/uploads/* /var/lib/pleroma/uploads
-# mv ~pleroma/instance/static /var/lib/pleroma/static
-# mv ~pleroma/priv/static/emoji /var/lib/pleroma/static/emoji
-# mv ~pleroma/config/prod.secret.exs /etc/pleroma/config.exs
-# Change `use Mix.Config` at the top to `import Config`
-# rm -r ~pleroma/*
-
+- name: install pleroma psql
+  become: yes
+  become_user: "{{pleroma_db_superuser}}"
+  command: "psql -f /tmp/setup_db.psql"
+  notify: restart pleroma instance
 
 - name: download and unarchive pleroma release
   become: yes
   unarchive:
-    src: "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/{{pleroma_branch}}/download?job={{pleroma_flavor}}"
+    src: "{{pleroma_download_url}}"
     dest: "/tmp/"
     remote_src: yes
     creates: "/tmp/release"
-  notify: "restart pleroma {{pleroma_instance}} instance"
+  notify: restart pleroma instance
 
 - name: install pleroma release
   become: yes
-  copy: remote_src="True" src="/tmp/release/" dest="/opt/pleroma/"
-
-# - name: Remove old files foo
-#   file: path="/path/to/foo" state="absent"
+  copy: remote_src="True" src="/tmp/release/" dest="/opt/pleroma/" owner="pleroma" group="pleroma"
+  notify: restart pleroma instance
 
-# ***
-# mv /tmp/release/* ~pleroma/
-
-
-# Copy the service into a proper directory
-# cp ~pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
-
-# - name: "configure pleroma systemd service"
+# - name: remove tmp release folder
 #   become: yes
-#   copy:
-#     src: "[email protected]"
-#     dest: "/lib/systemd/system/[email protected]"
-#   notify: "restart pleroma {{pleroma_instance}} instance"
+#   file: path="{{item}}" state="absent"
+#   with_items:
+#     - "/tmp/setup_db.psql"
+#     - "/tmp/release/"
+
+- name: "configure pleroma systemd service"
+  become: yes
+  copy:
+    src: "[email protected]"
+    dest: "/lib/systemd/system/[email protected]"
+  notify: restart pleroma instance
 
-# - name: "ensure pleroma {{pleroma_instance}} instance is enabled and started"
-#   become: yes
-#   systemd: name="pleroma@{{pleroma_instance}}" enabled="yes" state="started"
+- name: "ensure pleroma {{pleroma_instance}} instance is enabled and started"
+  become: yes
+  systemd: name="pleroma@{{pleroma_instance}}.service" enabled="yes" state="started"
 
-# - name: migrate db
-#   become: yes
-#   become_user: "pleroma"
-#   command: "/opt/pleroma/bin/pleroma_ctl migrate"
-#   args:
-#     chdir: "/opt/pleroma/"
-#   notify: restart pleroma
+- name: migrate db
+  become: yes
+  become_user: "pleroma"
+  command: "/opt/pleroma/bin/pleroma_ctl migrate"
+  args:
+    chdir: "/opt/pleroma/"
+  environment:
+    PLEROMA_CONFIG_PATH: "/etc/pleroma/{{pleroma_instance}}.config.exs"
+  notify: restart pleroma instance
--- a/roles/pleroma-otp/templates/config.exs.j2	Sun Jan 19 13:41:08 2020 -0600
+++ b/roles/pleroma-otp/templates/config.exs.j2	Sun Jan 19 15:33:08 2020 -0600
@@ -1,4 +1,4 @@
-use Mix.Config
+import Config
 
 config :pleroma, Pleroma.Web.Endpoint,
   url: [host: "{{pleroma_link_host}}", scheme: "{{pleroma_link_scheme}}", port: {{pleroma_link_port}}],
@@ -17,14 +17,15 @@
   email: "{{pleroma_admin_email}}",
   limit: {{pleroma_char_limit}},
   registrations_open: {{pleroma_signup_open}},
-  invites_enabled: {{pleroma_invites_enabled}}
+  invites_enabled: {{pleroma_invites_enabled}},
+  static_dir: "{{pleroma_data_dir}}/{{pleroma_instance}}/static/"
 
 config :pleroma, Pleroma.Upload,
   uploader: Pleroma.Uploaders.Local,
   filters: [Pleroma.Upload.Filter.Dedupe]
 
 config :pleroma, Pleroma.Uploaders.Local,
-  uploads: "{{pleroma_data_dir}}/{{pleroma_instance}}/"
+  uploads: "{{pleroma_data_dir}}/{{pleroma_instance}}/uploads/"
 
 config :pleroma, :media_proxy,
   enabled: false,