forked from evolix/ansible-roles
Jérémy Lecour
7b14296503
* manage commits with an optimized shell script instead of many slow Ansible tasks * centralize cron jobs in dedicated crontab
111 lines
2.6 KiB
YAML
111 lines
2.6 KiB
YAML
---
|
|
|
|
- name: Git is installed (Debian)
|
|
apt:
|
|
name: git
|
|
state: present
|
|
tags:
|
|
- etc-git
|
|
|
|
- include: repository.yml
|
|
vars:
|
|
repository_path: "/etc"
|
|
gitignore_items:
|
|
- "aliases.db"
|
|
- "*.swp"
|
|
- "postfix/sa-blacklist.access"
|
|
- "postfix/*.db"
|
|
- "postfix/spamd.cidr"
|
|
- "evobackup/.keep-*"
|
|
- "letsencrypt/.certbot.lock"
|
|
|
|
- name: verify /usr/share/scripts presence
|
|
stat:
|
|
path: /usr/share/scripts
|
|
register: _usr_share_scripts
|
|
|
|
- include: repository.yml
|
|
vars:
|
|
repository_path: "/usr/share/scripts"
|
|
gitignore_items: []
|
|
when:
|
|
- _usr_share_scripts.stat.isdir
|
|
- ansible_distribution_major_version is version('10', '>=')
|
|
|
|
- name: "evocommit script is installed"
|
|
copy:
|
|
src: evocommit
|
|
dest: /usr/local/bin/evocommit
|
|
mode: "0755"
|
|
force: yes
|
|
tags:
|
|
- etc-git
|
|
|
|
- name: "etc-git-optimize script is installed"
|
|
copy:
|
|
src: etc-git-optimize
|
|
dest: /usr/share/scripts/etc-git-optimize
|
|
mode: "0755"
|
|
force: yes
|
|
tags:
|
|
- etc-git
|
|
|
|
- name: "etc-git-status script is installed"
|
|
copy:
|
|
src: etc-git-status
|
|
dest: /usr/share/scripts/etc-git-status
|
|
mode: "0755"
|
|
force: yes
|
|
tags:
|
|
- etc-git
|
|
|
|
- name: Check if cron is installed
|
|
shell: "set -o pipefail && dpkg -l cron 2>/dev/null | grep -q -E '^(i|h)i'"
|
|
args:
|
|
executable: /bin/bash
|
|
failed_when: False
|
|
changed_when: False
|
|
check_mode: no
|
|
register: is_cron_installed
|
|
|
|
- block:
|
|
- name: Legacy cron jobs for /etc/.git status are absent
|
|
file:
|
|
dest: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- /etc/cron.monthly/optimize-etc-git
|
|
- /etc/cron.d/etc-git-status
|
|
|
|
- name: Cron job for monthly git optimization
|
|
cron:
|
|
name: "Monthly optimization"
|
|
cron_file: etc-git
|
|
special_time: "monthly"
|
|
user: root
|
|
job: "/usr/share/scripts/etc-git-optimize"
|
|
|
|
- name: Cron job for hourly git status
|
|
cron:
|
|
name: "Hourly warning for unclean Git repository if nobody is connected"
|
|
cron_file: etc-git
|
|
special_time: "hourly"
|
|
user: root
|
|
job: "who > /dev/null || /usr/share/scripts/etc-git-status"
|
|
state: "{{ etc_git_monitor_status | bool | ternary('present','absent') }}"
|
|
|
|
- name: Cron job for daily git status
|
|
cron:
|
|
name: "Daily warning for unclean Git repository"
|
|
cron_file: etc-git
|
|
user: root
|
|
job: "/usr/share/scripts/etc-git-status"
|
|
minute: "21"
|
|
hour: "21"
|
|
weekday: "*"
|
|
day: "*"
|
|
month: "*"
|
|
state: "{{ etc_git_monitor_status | bool | ternary('present','absent') }}"
|
|
when: is_cron_installed.rc == 0
|
|
tags:
|
|
- etc-git |