--- - name: Pin Django from Debian experimental until bullseye-backports exists template: src: "apt/{{ item }}.j2" dest: "/etc/apt/{{ item }}" loop: - sources.list.d/experimental.list - preferences.d/django-experimental - name: Install constellation dependencies apt: update_cache: true install_recommends: false name: - gettext - python3-django - python3-django-extensions - python3-django-polymorphic - python3-ipython - python3-pip - python3-psycopg2 register: apt_result retries: 3 until: apt_result is succeeded - name: Install constellation pip dependencies pip: name: - git+https://gitlab.adm.crans.org/nounous/django-dnsmanager.git - name: Set configuration directories in development mode when: constellation.version != "master" set_fact: module_path: "/var/local/constellation/constellation" project_path: "/var/local/constellation" - name: Set configuration directories in production mode when: constellation.version == "master" set_fact: module_path: "/usr/local/lib/python3.9/dist-packages/constellation" project_path: "/usr/local/lib/python3.9/dist-packages/constellation" - name: Create constellation directory file: path: "/etc/constellation" state: directory mode: '2775' owner: "{{ constellation.owner }}" group: "{{ constellation.group }}" - name: Set ACL for constellation directory acl: path: "/etc/constellation" default: true entity: nounou etype: group permissions: rwx state: query ignore_errors: "{{ ansible_check_mode }}" - name: Clone constellation repository (development) when: constellation.version != "master" git: repo: 'https://gitlab.adm.crans.org/nounous/constellation.git' dest: "{{ project_path }}" umask: '002' version: "{{ constellation.version }}" recursive: true - name: Install pip module with editable flag (development) when: constellation.version != "master" pip: name: - "{{ project_path }}" editable: true state: latest - name: Install and upgrade constellation (production) when: constellation.version == "master" pip: name: - git+https://gitlab.adm.crans.org/nounous/constellation.git state: latest - name: Set owner of cloned project when: constellation.version != "master" file: path: "{{ project_path }}" owner: "{{ constellation.owner }}" group: "{{ constellation.group }}" recurse: true - name: Deploy Constellation settings_local.py template: src: constellation/settings_local.py.j2 dest: "/etc/constellation/settings_local.py" mode: 0660 owner: "{{ constellation.settings_local_owner }}" group: "{{ constellation.settings_local_group }}" - name: Symlink configuration file file: src: "/etc/constellation/settings_local.py" dest: "{{ module_path }}/settings_local.py" state: link - name: Deploy crontab when: constellation.crontab template: src: "cron.d/constellation.j2" dest: "/etc/cron.d/constellation" owner: root group: root mode: 0644 - name: Compile messages when: not constellation.front django_manage: command: compilemessages project_path: "{{ project_path }}" # In the future, migrations will be included in the repository. - name: Make Django migrations (non-front app) when: not constellation.front django_manage: command: makemigrations project_path: "{{ project_path }}" - name: Migrate database (non-front app) when: not constellation.front django_manage: command: migrate project_path: "{{ project_path }}" - name: Load initial data (non-front app) when: not constellation.front django_manage: command: loaddata initial project_path: "{{ project_path }}" - name: Indicate constellation in motd template: src: update-motd.d/05-service.j2 dest: /etc/update-motd.d/05-constellation mode: 0755