--- # tasks file for django - name: 'install dependencies' package: name: - 'python3-django' - 'curl' - 'tar' - 'git' - 'python3-psycopg2' - 'python3-gunicorn' - 'gunicorn' state: 'present' - name: Install multi python packages pip: name: - bootstrap4 - whitenoise - name: 'Create django user' user: name: "{{ django_user }}" comment: "django user" home: "{{ django_home }}" shell: "/bin/false" - name: Clone git repositories git: repo: "{{ django_app_gitrepo }}" dest: "{{ django_home }}/{{ django_appname }}" version: "{{ django_app_gitversion }}" force: yes - 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_home }}/{{ django_appname }}/settings_template.py.j2" dest: "{{ django_home }}/{{ django_appname }}/settings.py" owner: "{{ django_user }}" group: "{{ django_group }}" remote_src: yes 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('{{ django_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"