ansible-role-djangoapp/tasks/main.yml

119 lines
3.1 KiB
YAML

---
# 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"