- name: create sites dir file: path: /srv/sites state: directory owner: root group: root mode: 0755 - name: create project dir file: path: "{{ app_dir }}" state: directory owner: "{{ app_user }}" group: "{{ app_user }}" mode: 0755 - name: clone project become_user: "{{ app_user }}" git: repo: "https://git.fudiggity.nl/sonny/newsreader.git" dest: "{{ app_dir }}" version: "{{ app_branch }}" update: true force: true - name: install npm packages become_user: "{{ app_user }}" command: /usr/bin/npm install args: chdir: "{{ app_dir }}" - name: build static files become_user: "{{ app_user }}" command: /usr/bin/npm run build:prod args: chdir: "{{ app_dir }}" - name: run migrations become_user: "{{ app_user }}" django_manage: command: migrate app_path: "{{ app_dir }}/src/" virtualenv: "{{ app_dir }}/.venv" settings: "newsreader.conf.production" - name: collect static files become_user: "{{ app_user }}" django_manage: command: collectstatic app_path: "{{ app_dir }}/src/" virtualenv: "{{ app_dir }}/.venv" settings: "newsreader.conf.production" - name: include poetry tasks include_role: name: common tasks_from: "poetry.yml" vars: poetry_user: "{{ app_user }}" poetry_dir: "/home/{{ app_user }}/.poetry" - name: run poetry tasks block: - name: retrieve user $PATH shell: "echo $PATH" become_user: "{{ app_user }}" register: path_stats - name: set poetry user variables set_fact: poetry_user_path: "{{ path_stats.stdout }}" - name: set default venv python version become_user: "{{ app_user }}" command: "poetry env use python3.7" args: chdir: "{{ app_dir }}" environment: PATH: "/home/{{ app_user }}/.local/bin:{{ poetry_user_path }}" - name: install project dependencies become_user: "{{ app_user }}" command: 'poetry install --extras "sentry"' # noqa 301 args: chdir: "{{ app_dir }}" environment: PATH: "/home/{{ app_user }}/.local/bin:{{ poetry_user_path }}" - name: setup env file template: src: "env.j2" dest: "{{ app_dir }}/.env" owner: "{{ app_user }}" group: "{{ app_user }}" mode: 0600 - name: setup gunicorn service template: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: root group: root mode: "{{ item.mode }}" loop: - { src: "gunicorn-socket.j2", dest: "/etc/systemd/system/gunicorn.socket", "mode": "0644", } - { src: "gunicorn.j2", dest: "/etc/systemd/system/gunicorn.service", "mode": "0644", } notify: - restart gunicorn socket - stop gunicorn service - name: create conf dir become_user: "{{ app_user }}" file: path: "/home/{{ app_user }}/.config/conf.d" state: directory owner: "{{ app_user }}" group: "{{ app_user }}" mode: 0750 - name: create celery run dir file: path: /run/celery state: directory owner: "{{ app_user }}" group: "{{ app_user }}" mode: 0755 - name: copy celery config template: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "{{ item.mode }}" loop: - { src: "celery.j2", dest: "/etc/systemd/system/celery.service", "mode": "0644", } - { src: "celerybeat.j2", dest: "/etc/systemd/system/celerybeat.service", "mode": "0644", } - { src: "celery.env.j2", dest: "/home/newsreader/.config/conf.d/celery", "mode": "0640", } notify: - restart celery - restart celerybeat