]> Untitled Git - lemmy.git/commitdiff
Put Lemmy in /srv/lemmy instead of /lemmy as recommended by FHS (#857)
authorPaul Tötterman <ptman@users.noreply.github.com>
Wed, 1 Jul 2020 12:44:56 +0000 (15:44 +0300)
committerGitHub <noreply@github.com>
Wed, 1 Jul 2020 12:44:56 +0000 (12:44 +0000)
* Put Lemmy in /srv/lemmy instead of /lemmy as recommended by FHS

* Extract lemmy_base_dir

* Complain if lemmy_base_dir not set

ansible/ansible.cfg
ansible/inventory.example
ansible/lemmy.yml
ansible/lemmy_dev.yml
ansible/uninstall.yml

index 74b6ab2f1955975f7c50530ebc43eb802f2d3278..696466297c03e934305521388ba29131a65cc8c8 100644 (file)
@@ -1,6 +1,6 @@
 [defaults]
-inventory=inventory
-interpreter_python=/usr/bin/python3
+inventory = inventory
+interpreter_python = /usr/bin/python3
 
 [ssh_connection]
 pipelining = True
index 52b45d3c368968b28be35c31ca1928bd745316d8..139e4ca34fb47c65b4012a4d692f6498bd663fd6 100644 (file)
@@ -1,6 +1,7 @@
 [lemmy]
 # define the username and hostname that you use for ssh connection, and specify the domain
-myuser@example.com  domain=example.com  letsencrypt_contact_email=your@email.com
+# old default for lemmy_base_dir was /lemmy
+myuser@example.com  domain=example.com  letsencrypt_contact_email=your@email.com lemmy_base_dir=/srv/lemmy
 
 [all:vars]
 ansible_connection=ssh
index 7b78ab8d35fbd6ae4be115d99d6ac66d93a6401c..242d9043e2b1ed14d1b180acf3bfaa15e478d3bd 100644 (file)
@@ -5,18 +5,29 @@
   # https://www.josharcher.uk/code/ansible-python-connection-failure-ubuntu-server-1604/
   gather_facts: False
   pre_tasks:
+    - name: check lemmy_base_dir
+      fail:
+        msg: "lemmy_base_dir is unset, old default value was '/lemmy'"
+      when: lemmy_base_dir is not defined
+
     - name: install python for Ansible
       raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal python-setuptools)
       args:
         executable: /bin/bash
       register: output
-      changed_when: output.stdout != ""
+      changed_when: output.stdout != ''
+
     - setup: # gather facts
 
   tasks:
   - name: install dependencies
     apt:
-      pkg: ['nginx', 'docker-compose', 'docker.io', 'certbot', 'python-certbot-nginx']
+      pkg:
+        - 'nginx'
+        - 'docker-compose'
+        - 'docker.io'
+        - 'certbot'
+        - 'python-certbot-nginx'
 
   - name: request initial letsencrypt certificate
     command: certbot certonly --nginx --agree-tos -d '{{ domain }}' -m '{{ letsencrypt_contact_email }}'
       creates: '/etc/letsencrypt/live/{{domain}}/privkey.pem'
 
   - name: create lemmy folder
-    file: path={{item.path}} {{item.owner}} state=directory
+    file:
+      path: '{{item.path}}'
+      owner: '{{item.owner}}'
+      state: directory
     with_items:
-      - { path: '/lemmy/', owner: 'root' }
-      - { path: '/lemmy/volumes/', owner: 'root' }
-      - { path: '/lemmy/volumes/pictrs/', owner: '991' }
+      - path: '{{lemmy_base_dir}}'
+        owner: 'root'
+      - path: '{{lemmy_base_dir}}/volumes/'
+        owner: 'root'
+      - path: '{{lemmy_base_dir}}/volumes/pictrs/'
+        owner: '991'
 
   - block:
     - name:  add template files
-      template: src={{item.src}} dest={{item.dest}} mode={{item.mode}}
+      template:
+        src: '{{item.src}}'
+        dest: '{{item.dest}}'
+        mode: '{{item.mode}}'
       with_items:
-        - { src: 'templates/docker-compose.yml', dest: '/lemmy/docker-compose.yml', mode: '0600' }
-        - { src: 'templates/nginx.conf', dest: '/etc/nginx/sites-enabled/lemmy.conf', mode: '0644' }
-        - { src: '../docker/iframely.config.local.js', dest: '/lemmy/iframely.config.local.js', mode: '0600' }
-      vars: 
+        - src: 'templates/docker-compose.yml'
+          dest: '{{lemmy_base_dir}}/docker-compose.yml'
+          mode: '0600'
+        - src: 'templates/nginx.conf'
+          dest: '/etc/nginx/sites-enabled/lemmy.conf'
+          mode: '0644'
+        - src: '../docker/iframely.config.local.js'
+          dest: '{{lemmy_base_dir}}/iframely.config.local.js'
+          mode: '0600'
+      vars:
         lemmy_docker_image: "dessalines/lemmy:{{ lookup('file', 'VERSION') }}"
         lemmy_port: "8536"
         pictshare_port: "8537"
         iframely_port: "8538"
 
     - name:  add config file (only during initial setup)
-      template: src='templates/config.hjson' dest='/lemmy/lemmy.hjson' mode='0600' force='no' owner='1000' group='1000'
+      template:
+        src: 'templates/config.hjson'
+        dest: '{{lemmy_base_dir}}/lemmy.hjson'
+        mode: '0600'
+        force: false
+        owner: '1000'
+        group: '1000'
     vars:
       postgres_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/postgres chars=ascii_letters,digits') }}"
       jwt_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/jwt chars=ascii_letters,digits') }}"
@@ -57,7 +89,7 @@
 
   - name: start docker-compose
     docker_compose:
-      project_src: /lemmy/
+      project_src: '{{lemmy_base_dir}}'
       state: present
       pull: yes
       remove_orphans: yes
@@ -67,7 +99,7 @@
 
   - name: certbot renewal cronjob
     cron:
-      special_time=daily
-      name=certbot-renew-lemmy
-      user=root
-      job="certbot certonly --nginx -d '{{ domain }}' --deploy-hook 'nginx -s reload'"
+      special_timedaily
+      namecertbot-renew-lemmy
+      userroot
+      job"certbot certonly --nginx -d '{{ domain }}' --deploy-hook 'nginx -s reload'"
index 7a3683610ec04a3098cb045b3ef52aabcf7be694..1e7369da43b7cd34e5e7decd0e482ea97b985e93 100644 (file)
@@ -1,7 +1,7 @@
 ---
 - hosts: all
   vars:
-    lemmy_docker_image: "lemmy:dev"
+    lemmy_docker_image: 'lemmy:dev'
 
   # Install python if required
   # https://www.josharcher.uk/code/ansible-python-connection-failure-ubuntu-server-1604/
       args:
         executable: /bin/bash
       register: output
-      changed_when: output.stdout != ""
+      changed_when: output.stdout != ''
     - setup: # gather facts
 
   tasks:
   - name: install dependencies
     apt:
-      pkg: ['nginx', 'docker-compose', 'docker.io', 'certbot', 'python-certbot-nginx']
+      pkg:
+        - 'nginx'
+        - 'docker-compose'
+        - 'docker.io'
+        - 'certbot'
+        - 'python-certbot-nginx'
 
   - name: request initial letsencrypt certificate
     command: certbot certonly --nginx --agree-tos -d '{{ domain }}' -m '{{ letsencrypt_contact_email }}'
       creates: '/etc/letsencrypt/live/{{domain}}/privkey.pem'
 
   - name: create lemmy folder
-    file: path={{item.path}} owner={{item.owner}} state=directory
+    file:
+      path: '{{item.path}}'
+      owner: '{{item.owner}}'
+      state: directory
     with_items:
-      - { path: '/lemmy/', owner: 'root' }
-      - { path: '/lemmy/volumes/', owner: 'root' }
-      - { path: '/lemmy/volumes/pictrs/', owner: '991' }
+      - path: '{{lemmy_base_dir}}/lemmy/'
+        owner: 'root'
+      - path: '{{lemmy_base_dir}}/volumes/'
+        owner: 'root'
+      - path: '{{lemmy_base_dir}}/volumes/pictrs/'
+        owner: '991'
 
   - block:
     - name:  add template files
-      template: src={{item.src}} dest={{item.dest}} mode={{item.mode}}
+      template:
+        src: '{{item.src}}'
+        dest: '{{item.dest}}'
+        mode: '{{item.mode}}'
       with_items:
-        - { src: 'templates/docker-compose.yml', dest: '/lemmy/docker-compose.yml', mode: '0600' }
-        - { src: 'templates/nginx.conf', dest: '/etc/nginx/sites-enabled/lemmy.conf', mode: '0644' }
-        - { src: '../docker/iframely.config.local.js', dest: '/lemmy/iframely.config.local.js', mode: '0600' }
+        - src: 'templates/docker-compose.yml'
+          dest: '{{lemmy_base_dir}}/docker-compose.yml'
+          mode: '0600'
+        - src: 'templates/nginx.conf'
+          dest: '/etc/nginx/sites-enabled/lemmy.conf'
+          mode: '0644'
+        - src: '../docker/iframely.config.local.js'
+          dest: '{{lemmy_base_dir}}/iframely.config.local.js'
+          mode: '0600'
 
     - name:  add config file (only during initial setup)
-      template: src='templates/config.hjson' dest='/lemmy/lemmy.hjson' mode='0600' force='no' owner='1000' group='1000'
-    vars:
-      postgres_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/postgres chars=ascii_letters,digits') }}"
-      jwt_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/jwt chars=ascii_letters,digits') }}"
+      template:
+        src: 'templates/config.hjson'
+        dest: '{{lemmy_base_dir}}/lemmy.hjson'
+        mode: '0600'
+        force: false
+        owner: '1000'
+        group: '1000'
+      vars:
+        postgres_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/postgres chars=ascii_letters,digits') }}"
+        jwt_password: "{{ lookup('password', 'passwords/{{ inventory_hostname }}/jwt chars=ascii_letters,digits') }}"
 
   - name: build the dev docker image
     local_action: shell cd .. && sudo docker build . -f docker/dev/Dockerfile -t lemmy:dev
     local_action: shell sudo docker save lemmy:dev > lemmy-dev.tar
 
   - name: copy dev docker image to server
-    copy: src=lemmy-dev.tar dest=/lemmy/lemmy-dev.tar
+    copy:
+      src: lemmy-dev.tar
+      dest: '{{lemmy_base_dir}}/lemmy-dev.tar'
 
   - name: import docker image
     docker_image:
       name: lemmy
       tag: dev
-      load_path: /lemmy/lemmy-dev.tar
+      load_path: '{{lemmy_base_dir}}/lemmy-dev.tar'
       source: load
       force_source: yes
     register: image_import
 
   - name: delete remote image file
-    file: path=/lemmy/lemmy-dev.tar state=absent
+    file:
+      path: '{{lemmy_base_dir}}/lemmy-dev.tar'
+      state: absent
 
   - name: delete local image file
-    local_action: file path=lemmy-dev.tar state=absent
+    local_action:
+      module: file
+      path: lemmy-dev.tar
+      state: absent
 
   - name: enable and start docker service
     systemd:
   # be a problem for testing
   - name: start docker-compose
     docker_compose:
-      project_src: /lemmy/
+      project_src: '{{lemmy_base_dir}}'
       state: present
       recreate: always
       remove_orphans: yes
 
   - name: certbot renewal cronjob
     cron:
-      special_time=daily
-      name=certbot-renew-lemmy
-      user=root
-      job="certbot certonly --nginx -d '{{ domain }}' --deploy-hook 'nginx -s reload'"
+      special_timedaily
+      namecertbot-renew-lemmy
+      userroot
+      job"certbot certonly --nginx -d '{{ domain }}' --deploy-hook 'nginx -s reload'"
index 252c5bd1f7f838c3e523bba2e2c34ee12c98b2df..34c24d2ed9ce4fc6634f91131897869ef233334b 100644 (file)
 
   - name: stop docker-compose
     docker_compose:
-      project_src: /lemmy/
+      project_src: '{{lemmy_base_dir}}'
       state: absent
 
   - name: delete data
-    file: path={{item.path}} state=absent
+    file:
+      path: '{{item.path}}'
+      state: absent
     with_items:
-      - { path: '/lemmy/' }
-      - { path: '/etc/nginx/sites-enabled/lemmy.conf' }
+      - path: '{{lemmy_base_dir}}'
+      - path: '/etc/nginx/sites-enabled/lemmy.conf'
 
   - name: Remove a volume
-    docker_volume: name={{item.name}} state=absent
+    docker_volume:
+      name: '{{item.name}}'
+      state: absent
     with_items:
-      - { name: 'lemmy_lemmy_db' }
-      - { name: 'lemmy_lemmy_pictshare' }
+      - name: 'lemmy_lemmy_db'
+      - name: 'lemmy_lemmy_pictshare'
 
   - name: delete entire ecloud folder
-    file: path='/mnt/repo-base/' state=absent
+    file:
+      path: '/mnt/repo-base/'
+      state: absent
     when: delete_certs|bool
 
   - name: remove certbot cronjob
     cron:
-      name=certbot-renew-lemmy
-      state=absent
+      namecertbot-renew-lemmy
+      stateabsent