[service] create a generic role for services and apply it to dhcp
parent
821330bf99
commit
b8e57e9627
|
@ -63,12 +63,23 @@ glob_dhcp:
|
||||||
max: 100.65.255.254
|
max: 100.65.255.254
|
||||||
options: []
|
options: []
|
||||||
|
|
||||||
glob_re2o_services:
|
glob_service_dhcp:
|
||||||
server: re2o.adm.crans.org
|
re2o:
|
||||||
service:
|
hostname: "{{ query('ldap', 'ip', 're2o', 'adm') | ipv4 | first }}"
|
||||||
user: services
|
user: services
|
||||||
password: "{{ vault.re2o_service_password }}"
|
password: "{{ vault.re2o_service_password }}"
|
||||||
mail_server: "{{ glob_smtp }}"
|
name: dhcp
|
||||||
|
install_dir: /var/local/services/dhcp
|
||||||
glob_re2o_dhcp:
|
generated: yes
|
||||||
uri: "https://gitlab.adm.crans.org/nounous/dhcp.git"
|
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
|
||||||
|
|
|
@ -4,9 +4,7 @@
|
||||||
- hosts: dhcp
|
- hosts: dhcp
|
||||||
vars:
|
vars:
|
||||||
dhcp: "{{ glob_dhcp | default({}) | combine(loc_dhcp | default({})) }}"
|
dhcp: "{{ glob_dhcp | default({}) | combine(loc_dhcp | default({})) }}"
|
||||||
re2o_services: "{{ glob_re2o_services | default({}) | combine(loc_re2o_services | default({})) }}"
|
service: "{{ glob_service_dhcp | default({}) | combine(loc_service_dhcp | default({})) }}"
|
||||||
re2o_dhcp: "{{ glob_re2o_dhcp | default({}) | combine(loc_re2o_dhcp | default({})) }}"
|
|
||||||
roles:
|
roles:
|
||||||
- isc-dhcp-server
|
- isc-dhcp-server
|
||||||
- re2o-services
|
- service
|
||||||
- re2o-dhcp
|
|
||||||
|
|
|
@ -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
|
|
|
@ -1,2 +0,0 @@
|
||||||
{{ ansible_header | comment }}
|
|
||||||
* * * * * root /usr/bin/python3 /var/local/re2o-services/dhcp/main.py --force
|
|
|
@ -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
|
|
@ -0,0 +1,2 @@
|
||||||
|
{{ ansible_header | comment }}
|
||||||
|
{{ service.frequency }} root /usr/bin/python3 {{ service.install_dir }}/{{ service.name }}.py {{ service.options }}
|
|
@ -0,0 +1 @@
|
||||||
|
{{ service.config | to_nice_json }}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{{ ansible_header | comment(decoration='; ') }}
|
||||||
|
[Re2o]
|
||||||
|
hostname = {{ service.re2o.hostname }}
|
||||||
|
username = {{ service.re2o.user }}
|
||||||
|
password = {{ service.re2o.password }}
|
Loading…
Reference in New Issue