|
1 | | -- name: Install curl |
| 1 | +- name: Install ffshmon dependencies |
2 | 2 | ansible.builtin.apt: |
3 | | - name: ['curl'] |
| 3 | + name: ["curl", "python3-venv", "python3-pip", "sudo", "logrotate"] |
| 4 | +- name: Add ffshmon system user |
| 5 | + ansible.builtin.user: |
| 6 | + name: ffshmon |
| 7 | + system: true |
| 8 | + create_home: false |
| 9 | + shell: /usr/sbin/nologin |
4 | 10 | - name: Create log directory |
5 | 11 | ansible.builtin.file: |
6 | 12 | path: /var/log/ffshmon |
7 | 13 | state: directory |
8 | | - mode: '0755' |
| 14 | + owner: ffshmon |
| 15 | + group: ffshmon |
| 16 | + mode: "0755" |
| 17 | +- name: Create ffshmon log file |
| 18 | + ansible.builtin.file: |
| 19 | + path: /var/log/ffshmon/ffshmon.log |
| 20 | + state: touch |
| 21 | + owner: ffshmon |
| 22 | + group: ffshmon |
| 23 | + mode: "0640" |
| 24 | + access_time: preserve |
| 25 | + modification_time: preserve |
| 26 | + notify: |
| 27 | + - Restart ffshmon service |
| 28 | +- name: Allow root to manage ffshmon repository |
| 29 | + ansible.builtin.blockinfile: |
| 30 | + path: /etc/gitconfig |
| 31 | + create: true |
| 32 | + owner: root |
| 33 | + group: root |
| 34 | + mode: "0644" |
| 35 | + block: | |
| 36 | + [safe] |
| 37 | + directory = /opt/ffshmon |
| 38 | + marker: "# {mark} ANSIBLE MANAGED FFSHMON SAFE DIRECTORY" |
9 | 39 | - name: Clone ffshmon repository |
10 | 40 | ansible.builtin.git: |
11 | 41 | repo: https://github.com/ffsh/ffshmon.git |
12 | 42 | dest: /opt/ffshmon |
13 | 43 | force: true |
14 | 44 | version: main |
15 | | -- name: Trigger ffshmon regularly |
16 | | - ansible.builtin.cron: |
17 | | - name: "Execute ffshmon" |
18 | | - minute: "*/30" |
19 | | - job: "python3 /opt/ffshmon/wireguard.py check --user {{ ffshmon_mail }} --password {{ ffshmon_pw }} --log /var/log/ffshmon/ffshmon.log" |
| 45 | +- name: Install ffshmon Python dependencies |
| 46 | + ansible.builtin.pip: |
| 47 | + requirements: /opt/ffshmon/requirements.txt |
| 48 | + virtualenv: /opt/ffshmon/.venv |
| 49 | + virtualenv_command: python3 -m venv |
| 50 | +- name: Adjust ffshmon permissions |
| 51 | + ansible.builtin.file: |
| 52 | + path: /opt/ffshmon |
| 53 | + owner: ffshmon |
| 54 | + group: ffshmon |
| 55 | + recurse: true |
| 56 | + state: directory |
| 57 | +- name: Configure ffshmon sudo permissions |
| 58 | + ansible.builtin.template: |
| 59 | + src: templates/ffshmon.sudoers |
| 60 | + dest: /etc/sudoers.d/ffshmon |
| 61 | + owner: root |
| 62 | + group: root |
| 63 | + mode: "0440" |
| 64 | + validate: "visudo -cf %s" |
| 65 | +- name: Configure ffshmon log rotation |
| 66 | + ansible.builtin.template: |
| 67 | + src: templates/ffshmon.logrotate |
| 68 | + dest: /etc/logrotate.d/ffshmon |
| 69 | + owner: root |
| 70 | + group: root |
| 71 | + mode: "0644" |
| 72 | +- name: Install ffshmon service |
| 73 | + ansible.builtin.template: |
| 74 | + src: templates/ffshmon.service |
| 75 | + dest: /etc/systemd/system/ffshmon.service |
| 76 | + owner: root |
| 77 | + group: root |
| 78 | + mode: "0600" |
| 79 | + notify: |
| 80 | + - Restart ffshmon service |
| 81 | + |
| 82 | +- name: Flush handlers |
| 83 | + ansible.builtin.meta: flush_handlers |
| 84 | + |
| 85 | +- name: Enable ffshmon service |
| 86 | + ansible.builtin.systemd: |
| 87 | + enabled: true |
| 88 | + state: started |
| 89 | + name: ffshmon |
0 commit comments