[service] create a generic role for services and apply it to dhcp

certbot_on_virtu
_shirenn 2021-05-15 15:22:59 +02:00 committed by Yohann D'ANELLO
parent 821330bf99
commit b8e57e9627
Signed by: _ynerant
GPG Key ID: 3A75C55819C8CF85
8 changed files with 90 additions and 60 deletions

View File

@ -63,12 +63,23 @@ glob_dhcp:
max: 100.65.255.254
options: []
glob_re2o_services:
server: re2o.adm.crans.org
service:
glob_service_dhcp:
re2o:
hostname: "{{ query('ldap', 'ip', 're2o', 'adm') | ipv4 | first }}"
user: services
password: "{{ vault.re2o_service_password }}"
mail_server: "{{ glob_smtp }}"
glob_re2o_dhcp:
uri: "https://gitlab.adm.crans.org/nounous/dhcp.git"
name: dhcp
install_dir: /var/local/services/dhcp
generated: yes
frequency: "*/2 * * * *"
options: -q
dependencies:
- python3-jinja2
git:
remote: https://gitlab.adm.crans.org/nounous/dhcp.git
version: master
config:
extensions:
- adh.crans.org
- adh-nat.crans.org
- infra.crans.org

View File

@ -4,9 +4,7 @@
- hosts: dhcp
vars:
dhcp: "{{ glob_dhcp | default({}) | combine(loc_dhcp | default({})) }}"
re2o_services: "{{ glob_re2o_services | default({}) | combine(loc_re2o_services | default({})) }}"
re2o_dhcp: "{{ glob_re2o_dhcp | default({}) | combine(loc_re2o_dhcp | default({})) }}"
service: "{{ glob_service_dhcp | default({}) | combine(loc_service_dhcp | default({})) }}"
roles:
- isc-dhcp-server
- re2o-services
- re2o-dhcp
- service

View File

@ -1,47 +0,0 @@
---
- name: Create re2o-dhcp directory
file:
path: /var/local/re2o-services/dhcp
state: directory
mode: '2775'
owner: root
group: _nounou
- name: Set ACL for re2o-dhcp directory
acl:
path: /var/local/re2o-services/dhcp
default: true
entity: _nounou
etype: group
permissions: rwx
state: query
when: not ansible_check_mode
- name: Clone re2o-dhcp repository
git:
repo: "{{ re2o_dhcp.uri }}"
dest: /var/local/re2o-services/dhcp
version: crans
umask: '002'
- name: Create symbolic link to configuration
file:
src: /var/local/re2o-services/config.ini
dest: /var/local/re2o-services/dhcp/config.ini
owner: root
group: root
state: link
force: yes
- name: Create generated directory
file:
path: /var/local/re2o-services/dhcp/generated
state: directory
mode: 0755
owner: root
group: root
- name: Deploy cron for re2o-dhcp
template:
src: cron.d/re2o-services-dhcp.j2
dest: /etc/cron.d/re2o-services-dhcp

View File

@ -1,2 +0,0 @@
{{ ansible_header | comment }}
* * * * * root /usr/bin/python3 /var/local/re2o-services/dhcp/main.py --force

View File

@ -0,0 +1,62 @@
---
- name: Install service dependencies
apt:
update_cache: true
install_recommends: false
name: "{{ service.dependencies }}"
register: apt_result
retries: 3
until: apt_result is succeeded
- name: Create service directory
file:
path: "{{ service.install_dir }}"
state: directory
mode: '2775'
owner: root
group: _nounou
- name: Set ACL for service directory
acl:
path: "{{ service.install_dir }}"
default: true
entity: _nounou
etype: group
permissions: rwx
state: query
- name: Clone service repository
git:
repo: "{{ service.git.remote }}"
version: "{{ service.git.version }}"
dest: "{{ service.install_dir }}"
umask: '002'
- name: Create generated directory
file:
path: "{{ service.install_dir }}/generated"
state: directory
mode: '2770'
owner: root
group: _nounou
when: service.generated is defined and service.generated
- name: Deploy re2o config
template:
src: service/re2o-config.ini.j2
dest: "{{ service.install_dir }}/re2o-config.ini"
mode: 0600
owner: root
group: root
when: service.re2o is defined
- name: Deploy cron for service
template:
src: cron.d/service.j2
dest: "/etc/cron.d/services-{{ service.name }}"
- name: Deploy service configuration
template:
src: service/config.json
dest: "{{ service.install_dir }}/{{ service.name }}.json"
when: service.config is defined

View File

@ -0,0 +1,2 @@
{{ ansible_header | comment }}
{{ service.frequency }} root /usr/bin/python3 {{ service.install_dir }}/{{ service.name }}.py {{ service.options }}

View File

@ -0,0 +1 @@
{{ service.config | to_nice_json }}

View File

@ -0,0 +1,5 @@
{{ ansible_header | comment(decoration='; ') }}
[Re2o]
hostname = {{ service.re2o.hostname }}
username = {{ service.re2o.user }}
password = {{ service.re2o.password }}