119 lines
3.1 KiB
YAML
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"
|