diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index 17ca82f4befb2cdf6cda16dab31403394e035e26..84802926801cb72f1d7811151ec952855d0722b7 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -149,6 +149,65 @@ - name: Install apticron (for checking available upgrades) apt: name=apticron state=installed +# Implementation for checking pip requirements files via via pip-tools. +- name: Install virtualenv for pip requirements checks + apt: name=virtualenv state=installed + +- name: Create dedicated group for user running pip requirements checks + group: name="pipreqcheck" gid="{{ pipreqcheck_gid | default(omit) }}" state=present + +- name: Create user for running pip requirements checks + user: name="pipreqcheck" uid="{{ pipreqcheck_uid | default(omit) }}" group="pipreqcheck" + home="/var/lib/pipreqcheck" state=present + +- name: Create directory for Python virtual environment used for installing/running pip-tools + file: path="/var/lib/pipreqcheck/virtualenv" state=directory + owner="pipreqcheck" group="pipreqcheck" mode="0750" + +- name: Create Python virtual environment used for installing/running pip-tools + become_user: "pipreqcheck" + command: /usr/bin/virtualenv --prompt "(pipreqcheck)" "/var/lib/pipreqcheck/virtualenv" creates="/var/lib/pipreqcheck/virtualenv/bin/activate" + +- name: Create directory for storing pip requirements files + file: path="/etc/pip_check_requirements_upgrades" state="directory" + owner="root" group="pipreqcheck" mode=750 + +- name: Set-up directory for storing pip requirements file for pip-tools virtual environment itself + file: path="/etc/pip_check_requirements_upgrades/pipreqcheck" state="directory" + owner="root" group="pipreqcheck" mode=750 + +- name: Deploy .in file for pip requirements in pip-tools virtual environment + copy: src="pipreqcheck_requirements.in" dest="/etc/pip_check_requirements_upgrades/pipreqcheck/requirements.in" + owner="root" group="pipreqcheck" mode=640 + +- name: Deploy requirements file for pipreqcheck virtual environment + template: src="pipreqcheck_requirements.txt.j2" dest="/etc/pip_check_requirements_upgrades/pipreqcheck/requirements.txt" + owner="root" group="pipreqcheck" mode=640 + +- name: Install latest pip in pip-tools virtual environment + become_user: "pipreqcheck" + pip: name=pip state=latest virtualenv="~pipreqcheck/virtualenv" + +- name: Install pip-tools if not present + become_user: "pipreqcheck" + pip: name=pip-tools state=present virtualenv="~pipreqcheck/virtualenv" + +- name: Synchronise pip-tools virtual environment via deployed requirements file + become_user: "pipreqcheck" + shell: "source ~pipreqcheck/virtualenv/bin/activate && pip-sync /etc/pip_check_requirements_upgrades/pipreqcheck/requirements.txt" + args: + executable: /bin/bash + register: pipreqcheck_pip_sync + changed_when: "pipreqcheck_pip_sync.stdout != 'Everything up-to-date'" + +- name: Deploy script for checking available upgrades + copy: src="pip_check_requirements_upgrades.sh" dest="/usr/local/bin/pip_check_requirements_upgrades.sh" + owner=root group=root mode=755 + +- name: Deploy crontab entry for checking pip requirements + cron: name="check_pip_requirements" cron_file="check_pip_requirements" hour=0 minute=0 job="/usr/local/bin/pip_check_requirements_upgrades.sh /etc/pip_check_requirements_upgrades" + state=present user=pipreqcheck + - name: Explicitly run all handlers include: ../handlers/main.yml when: "handlers | default(False) | bool() == True"