diff --git a/roles/service/README.md b/roles/service/README.md index 02a05e9f..9238c9c6 100644 --- a/roles/service/README.md +++ b/roles/service/README.md @@ -1,18 +1,25 @@ # Service -Permet d'installer et de configurer des services issues -d'un git. En parituclier, il sert à automatiquement -configurer les scripts maisons du crans. +Permet d'installer et de configurer des services issues d'un git. En +parituclier, il sert à automatiquement configurer les scripts maisons du crans. ## Variables +```yaml services: name: nom du service install_dir: chemin où le repo sera cloner - cron: + systemd: si existe, configure un systemd service + catégorie: par exemple Unit ou Service + option: valeur -> par exemple Restart: on-failure + timer: si existe, configure un timer systemd + catégorie: par exemple Timer + option: valeur -> par exemple OnCalendar: "23:59" + cron: si existe configure un cron frequency: fréquence d'éxécution du cron dependencies: liste des dépendances à installer (dans apt) git: remote: repo à cloner version: version config: variable à écrire dans le fichier de configuration {{ service.install_dir }}/{{ service.name }}.json +``` diff --git a/roles/service/handlers/main.yml b/roles/service/handlers/main.yml new file mode 100644 index 00000000..50c12b79 --- /dev/null +++ b/roles/service/handlers/main.yml @@ -0,0 +1,10 @@ +--- +- name: Restart timer + service: + name: services-{{ service.name }}.timer + enabled: true + state: restarted + +- name: systemctl daemon-reload + systemd: + daemon_reload: true diff --git a/roles/service/tasks/main.yml b/roles/service/tasks/main.yml index 73fbfb59..db201dcf 100644 --- a/roles/service/tasks/main.yml +++ b/roles/service/tasks/main.yml @@ -57,6 +57,23 @@ dest: /etc/cron.d/services-{{ service.name }} when: service.cron is defined and service.cron.frequency is defined +- name: Deploy systemd service + template: + src: systemd/system/service.service.j2 + dest: /etc/systemd/system/services-{{ service.name }}.service + notify: + - systemctl daemon-reload + when: service.systemd is defined + +- name: Deploy systemd timer + template: + src: systemd/system/service.timer.j2 + dest: /etc/systemd/system/services-{{ service.name }}.timer + notify: + - Restart timer + - systemctl daemon-reload + when: service.timer is defined + - name: Deploy service configuration template: src: service/config.json diff --git a/roles/service/templates/systemd/system/service.service.j2 b/roles/service/templates/systemd/system/service.service.j2 new file mode 100644 index 00000000..3c433bb9 --- /dev/null +++ b/roles/service/templates/systemd/system/service.service.j2 @@ -0,0 +1,9 @@ +{{ ansible_header | comment }} + +{% for category in service.systemd %} + +[{{ category }}] +{% for option in service.systemd[category] %} +{{ option }}={{ service.systemd[category][option] }} +{% endfor %} +{% endfor %} diff --git a/roles/service/templates/systemd/system/service.timer.j2 b/roles/service/templates/systemd/system/service.timer.j2 new file mode 100644 index 00000000..2b8653a2 --- /dev/null +++ b/roles/service/templates/systemd/system/service.timer.j2 @@ -0,0 +1,9 @@ +{{ ansible_header | comment }} + +{% for category in service.timer %} + +[{{ category }}] +{% for option in service.timer[category] %} +{{ option }}={{ service.timer[category][option] }} +{% endfor %} +{% endfor %}