remove modules in infrastructure
This commit is contained in:
parent
bb35d6cf3e
commit
5d969ada38
4 changed files with 40 additions and 41 deletions
|
@ -55,6 +55,16 @@
|
||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.value['doc'] }}"
|
label: "{{ item.value['doc'] }}"
|
||||||
|
|
||||||
|
# some services (like networkd) did not really stoped
|
||||||
|
- name: "Stop services"
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: "{{ item.value['doc'] }}"
|
||||||
|
state: stopped
|
||||||
|
when: item.value['manage'] and item.value['activate'] and item.value['doc'].endswith('.service') and not item.value['doc'].endswith('@.service') and item.value['engine'] != 'none' and item.value['doc'] in services
|
||||||
|
loop: "{{ vars[inventory_hostname]['services'] | dict2items }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.value['doc'] }}"
|
||||||
|
|
||||||
- name: "Start services"
|
- name: "Start services"
|
||||||
when: item.value['manage'] and item.value['activate'] and item.value['doc'].endswith('.service') and not item.value['doc'].endswith('@.service') and item.value['engine'] != 'none'
|
when: item.value['manage'] and item.value['activate'] and item.value['doc'].endswith('.service') and not item.value['doc'].endswith('@.service') and item.value['engine'] != 'none'
|
||||||
ansible.builtin.service:
|
ansible.builtin.service:
|
||||||
|
|
|
@ -74,7 +74,7 @@ class RisottoInventory(object):
|
||||||
'hosts': servers,
|
'hosts': servers,
|
||||||
'vars': {
|
'vars': {
|
||||||
# FIXME
|
# FIXME
|
||||||
# 'ansible_ssh_host': '192.168.0.100',
|
# 'ansible_ssh_host': '192.168.0.29',
|
||||||
'ansible_ssh_user': 'root',
|
'ansible_ssh_user': 'root',
|
||||||
'ansible_python_interpreter': '/usr/bin/python3'
|
'ansible_python_interpreter': '/usr/bin/python3'
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ class Applications:
|
||||||
Returns something link:
|
Returns something link:
|
||||||
{<applicationservice>: seed/<applicationservice>}
|
{<applicationservice>: seed/<applicationservice>}
|
||||||
"""
|
"""
|
||||||
applications = {}
|
applications = {'host': None}
|
||||||
for dataset_directory in self.datasets:
|
for dataset_directory in self.datasets:
|
||||||
for applicationservice in listdir(dataset_directory):
|
for applicationservice in listdir(dataset_directory):
|
||||||
applicationservice_dir = join(dataset_directory, applicationservice)
|
applicationservice_dir = join(dataset_directory, applicationservice)
|
||||||
|
@ -59,23 +59,22 @@ class Modules:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
host_applicationsservices: list,
|
|
||||||
applicationservices: Applications,
|
applicationservices: Applications,
|
||||||
applicationservice_provider: str,
|
applicationservice_provider: str,
|
||||||
modules_name: list,
|
modules_name: list,
|
||||||
modules: dict,
|
host_applicationsservice: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
self.application_directories = applicationservices.application_directories
|
self.application_directories = applicationservices.application_directories
|
||||||
self.module_infos = {}
|
self.module_infos = {}
|
||||||
self.module_infos['host'] = self._load_module_informations('host',
|
self.module_infos['host'] = self._load_module_informations('host',
|
||||||
host_applicationsservices,
|
['host', host_applicationsservice],
|
||||||
is_host=True,
|
is_host=True,
|
||||||
)
|
)
|
||||||
for module_name in modules_name:
|
for module_name in modules_name:
|
||||||
if module_name == 'host':
|
if module_name == 'host':
|
||||||
raise Exception('forbidden module name: "host"')
|
raise Exception('forbidden module name: "host"')
|
||||||
self.module_infos[module_name] = self._load_module_informations(module_name,
|
self.module_infos[module_name] = self._load_module_informations(module_name,
|
||||||
[applicationservice_provider] + modules[module_name],
|
[applicationservice_provider, module_name],
|
||||||
is_host=False,
|
is_host=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -120,6 +119,8 @@ class Modules:
|
||||||
raise Exception(f'cannot find application dependency "{appname}"')
|
raise Exception(f'cannot find application dependency "{appname}"')
|
||||||
cfg.depends.append(appname)
|
cfg.depends.append(appname)
|
||||||
as_dir = self.application_directories[appname]
|
as_dir = self.application_directories[appname]
|
||||||
|
if not as_dir:
|
||||||
|
return
|
||||||
self._load_applicationservice_directories(as_dir,
|
self._load_applicationservice_directories(as_dir,
|
||||||
cfg,
|
cfg,
|
||||||
)
|
)
|
||||||
|
@ -234,7 +235,7 @@ async def valid_mandatories(config):
|
||||||
msg = f' - {text} ({path})'
|
msg = f' - {text} ({path})'
|
||||||
supplier = await suboption.information.get('supplier', None)
|
supplier = await suboption.information.get('supplier', None)
|
||||||
if supplier:
|
if supplier:
|
||||||
msg += f' you could add a service that provides {supplier}'
|
msg += f' you could add a service that provides "{supplier}"'
|
||||||
try:
|
try:
|
||||||
await config.option(mandatory).value.get()
|
await config.option(mandatory).value.get()
|
||||||
variables.setdefault(title, []).append(msg)
|
variables.setdefault(title, []).append(msg)
|
||||||
|
|
|
@ -226,15 +226,14 @@ class Loader:
|
||||||
# load modules associate to this host
|
# load modules associate to this host
|
||||||
modules_name = set()
|
modules_name = set()
|
||||||
for name, mod_datas in datas['servers'].items():
|
for name, mod_datas in datas['servers'].items():
|
||||||
if not 'module' in mod_datas:
|
if not 'applicationservice' in mod_datas:
|
||||||
raise Exception(f'module is mandatory for "{name}"')
|
raise Exception(f'applicationservice is mandatory for "{name}"')
|
||||||
modules_name.add(mod_datas['module'])
|
modules_name.add(mod_datas['applicationservice'])
|
||||||
# load modules informations from config files
|
# load modules informations from config files
|
||||||
modules = Modules(datas['applicationservices'],
|
modules = Modules(applicationservices,
|
||||||
applicationservices,
|
|
||||||
datas['applicationservice_provider'],
|
datas['applicationservice_provider'],
|
||||||
modules_name,
|
modules_name,
|
||||||
self.servers_json['modules']
|
datas['applicationservice'],
|
||||||
)
|
)
|
||||||
|
|
||||||
# load host
|
# load host
|
||||||
|
@ -253,10 +252,10 @@ class Loader:
|
||||||
modules_info = {}
|
modules_info = {}
|
||||||
#FIXME ADD TLS in servers !!!
|
#FIXME ADD TLS in servers !!!
|
||||||
for server_name, server_datas in datas['servers'].items():
|
for server_name, server_datas in datas['servers'].items():
|
||||||
module_info = modules.get(server_datas['module'])
|
module_info = modules.get(server_datas['applicationservice'])
|
||||||
zones_name = server_datas['informations']['zones_name']
|
zones_name = server_datas['informations']['zones_name']
|
||||||
values = [f'{server_name}.{zones[zone_name]["domain_name"]}' for zone_name in zones_name]
|
values = [f'{server_name}.{zones[zone_name]["domain_name"]}' for zone_name in zones_name]
|
||||||
if server_datas['module'] == 'tls':
|
if server_datas['applicationservice'] == 'tls':
|
||||||
true_host_name = f'{server_name}.{zones[list(zones)[0]]["domain_name"]}'
|
true_host_name = f'{server_name}.{zones[list(zones)[0]]["domain_name"]}'
|
||||||
else:
|
else:
|
||||||
true_host_name = values[0]
|
true_host_name = values[0]
|
||||||
|
@ -265,7 +264,7 @@ class Loader:
|
||||||
'global:server_names': values,
|
'global:server_names': values,
|
||||||
'global:zones_name': zones_name,
|
'global:zones_name': zones_name,
|
||||||
'global:zones_list': list(range(len(zones_name))),
|
'global:zones_list': list(range(len(zones_name))),
|
||||||
'global:module_name': server_datas['module'],
|
'global:module_name': server_datas['applicationservice'],
|
||||||
}
|
}
|
||||||
server_datas['server_name'] = true_host_name
|
server_datas['server_name'] = true_host_name
|
||||||
functions_files |= set(module_info.functions_file)
|
functions_files |= set(module_info.functions_file)
|
||||||
|
@ -281,28 +280,19 @@ class Loader:
|
||||||
|
|
||||||
def add_tls(self):
|
def add_tls(self):
|
||||||
zones = set()
|
zones = set()
|
||||||
rp_module_name = None
|
|
||||||
dns_module_name = None
|
dns_module_name = None
|
||||||
for module_name, applicationservices in self.servers_json['modules'].items():
|
for host in self.servers_json['hosts'].values():
|
||||||
if 'nginx-reverse-proxy' in applicationservices:
|
zones = [None, None]
|
||||||
rp_module_name = module_name
|
for server_name, datas in host['servers'].items():
|
||||||
|
if datas['applicationservice'] == 'tls':
|
||||||
|
raise Exception(f'forbidden module name "tls" for server {server_name}')
|
||||||
|
#FIXME use provider!
|
||||||
|
if datas['applicationservice'] == 'nginx-reverse-proxy' and len(datas['informations']['zones_name']) > 0:
|
||||||
if dns_module_name:
|
if dns_module_name:
|
||||||
break
|
break
|
||||||
if 'unbound' in applicationservices:
|
|
||||||
dns_module_name = module_name
|
|
||||||
if rp_module_name:
|
|
||||||
break
|
|
||||||
if not rp_module_name or not dns_module_name:
|
|
||||||
rp_module_name = dns_module_name = None
|
|
||||||
for host_name, host_datas in self.servers_json['hosts'].items():
|
|
||||||
zones = [None, None]
|
|
||||||
for server_name, datas in host_datas['servers'].items():
|
|
||||||
if datas['module'] == 'tls':
|
|
||||||
raise Exception(f'forbidden module name "tls" for server {server_name}')
|
|
||||||
if datas['module'] == rp_module_name and len(datas['informations']['zones_name']) > 0:
|
|
||||||
# always add tls machine in second zone of reverse proxy
|
# always add tls machine in second zone of reverse proxy
|
||||||
zones[1] = datas['informations']['zones_name'][0]
|
zones[1] = datas['informations']['zones_name'][0]
|
||||||
if datas['module'] == dns_module_name:
|
if datas['applicationservice'] == 'unbound':
|
||||||
# always add tls machine in second zone of reverse proxy
|
# always add tls machine in second zone of reverse proxy
|
||||||
zones[0] = datas['informations']['zones_name'][0]
|
zones[0] = datas['informations']['zones_name'][0]
|
||||||
if None in zones:
|
if None in zones:
|
||||||
|
@ -310,15 +300,13 @@ class Loader:
|
||||||
else:
|
else:
|
||||||
if zones[0] == zones[1]:
|
if zones[0] == zones[1]:
|
||||||
zones = [zones[0]]
|
zones = [zones[0]]
|
||||||
host_datas['servers']['tls'] = {'module': 'tls',
|
host['servers']['tls'] = {'applicationservice': 'tls',
|
||||||
'informations': {'zones_name': list(zones)},
|
'informations': {'zones_name': list(zones)},
|
||||||
}
|
}
|
||||||
for module_name in self.servers_json['modules']:
|
|
||||||
if module_name == 'tls':
|
|
||||||
raise Exception('forbidden module name: "tls"')
|
|
||||||
self.servers_json['modules']['tls'] = ['tls']
|
|
||||||
|
|
||||||
def load_dictionaries(self, cfg, module_info, server_name, rougail):
|
def load_dictionaries(self, cfg, module_info, server_name, rougail):
|
||||||
|
if not module_info.dictionaries_dir:
|
||||||
|
raise Exception(f'server "{server_name}" has any dictionaries!')
|
||||||
cfg['dictionaries_dir'] = module_info.dictionaries_dir
|
cfg['dictionaries_dir'] = module_info.dictionaries_dir
|
||||||
cfg['extra_dictionaries'] = module_info.extra_dictionaries
|
cfg['extra_dictionaries'] = module_info.extra_dictionaries
|
||||||
cfg['functions_file'] = module_info.functions_file
|
cfg['functions_file'] = module_info.functions_file
|
||||||
|
@ -362,7 +350,7 @@ class Loader:
|
||||||
for datas in hosts_datas['servers'].values():
|
for datas in hosts_datas['servers'].values():
|
||||||
server_name = datas['server_name']
|
server_name = datas['server_name']
|
||||||
information = config.option(normalize_family(server_name)).information
|
information = config.option(normalize_family(server_name)).information
|
||||||
await information.set('module', datas['module'])
|
await information.set('module', datas['applicationservice'])
|
||||||
await information.set('templates_dir', self.templates_dir[server_name])
|
await information.set('templates_dir', self.templates_dir[server_name])
|
||||||
await information.set('patches_dir', self.patches_dir[server_name])
|
await information.set('patches_dir', self.patches_dir[server_name])
|
||||||
await information.set('functions_files', self.functions_files[server_name])
|
await information.set('functions_files', self.functions_files[server_name])
|
||||||
|
|
Loading…
Reference in a new issue