--- # tasks file for django - name: 'install dependencies' package: name: - 'python3-django' - 'curl' - 'tar' - 'python3-psycopg2' - 'python3-gunicorn' - 'python3-whitenoise' state: 'present' - name: Install multi python packages pip: name: - bootstrap4 - name: 'Create django user' user: name: "{{ django_user }}" comment: "django user" home: "{{ django_home }}" shell: "/bin/false" - name: 'download latest stable version of the app' get_url: dest: "{{ django_home }}/latest.tar.gz" url: "{{ django_app_releaseurl }}" owner: "{{ django_user }}" group: "{{ django_group }}" mode: '0400' force: true - name: 'remove previous install stable' file: dest: "{{django_home}}/{{ django_appname }}" state: absent - name: 'unarchive latest stable' unarchive: src: "{{django_home}}/latest.tar.gz" remote_src: yes dest: "{{ django_home }}" owner: "{{ django_user }}" group: "{{ django_group }}" notify: "Restart djangoapp" - name: 'install pip dependencies' pip: requirements: '{{ django_home }}/{{ django_appname }}/requirements.txt' notify: "Restart djangoapp" - name: "Setup systemd service" template: src: djangoapp.service.j2 dest: "/lib/systemd/system/{{ django_appname }}.service" owner: root group: root mode: 0644 notify: - "Reload systemd" - "Restart djangoapp" when: ansible_service_mgr == "systemd" - name: "Configure djangoapp" template: src: "{{ django_appname }}/settings_template.py.j2" dest: "{{django_home }}/{{ django_appname }}/settings.py" owner: "{{ django_user }}" group: "{{ django_group }}" mode: 0600 notify: "Restart djangoapp" - name: 'migrate django app' django_manage: command: migrate app_path: "{{django_home }}/{{ django_appname }}/" become: true become_user: "{{ django_user }}" - name: check if django superuser exists django_manage: command: 'shell -c "from django.contrib.auth.models import User; print(User.objects.filter(is_superuser=True).exists())"' app_path: "{{django_home }}/{{ django_appname }}/" register: superuser_exists become: true become_user: "{{ django_user }}" - name: "create superjuser for django app if it doesn't exist" django_manage: command: "createsuperuser --noinput --username=admin --email={{django_admin_email}}" app_path: "{{django_home }}/{{ django_appname }}/" become: true become_user: "{{ django_user }}" when: superuser_exists.out.find("True") == -1 - name: "set superuser password" django_manage: command: shell -c "from django.contrib.auth.models import User; usr = User.objects.get(username='admin'); usr.set_password('{{im_admin_password}}'); usr.save()" app_path: "{{django_home }}/{{ django_appname }}/" become: true become_user: "{{ django_user }}" - name: 'collect static content' django_manage: command: "collectstatic" app_path: "{{django_home }}/{{ django_appname }}/" - name: "Service djangoapp" service: name: "{{ django_appname }}" state: started enabled: true when: ansible_service_mgr == "systemd"