This commit is contained in:
2025-11-20 22:01:23 +01:00
parent ff878558f9
commit 39f8b87743
15 changed files with 692 additions and 31 deletions

View File

@@ -167,6 +167,7 @@ def question_38(nr):
resultR2 = filtreR2.run(task=netmiko_save_config)
print_result(resultR1)
print_result(resultR2)
def deploy_config_from_file(task: Task, config_file: str) -> Result:
"""Déploie la configuration depuis un fichier sur un équipement via Nornir/Netmiko."""
with open(config_file, "r") as f:
@@ -177,36 +178,52 @@ def deploy_config_from_file(task: Task, config_file: str) -> Result:
print_result(result)
return result
def deploy_vrrp(task):
vrrp_filename = task.host.name.replace("-", "_").replace("CPE", "CPE_LYON") + "_VRRP.conf"
task.run(
task=deploy_config_from_file,
config_file=f"config/{vrrp_filename}",
name=f"Déploiement VRRP {task.host.name}"
)
def deploy_ospf(task):
vrrp_filename = task.host.name.replace("-", "_").replace("CPE", "CPE_LYON") + "_OSPF.conf"
task.run(
task=deploy_config_from_file,
config_file=f"config/{vrrp_filename}",
name=f"Déploiement VRRP {task.host.name}"
)
def deploy_to_hosts(nr, host_patterns):
"""Déploie les configurations pour tous les hôtes et ajoute le fichier VRRP pour les routers."""
for pattern in host_patterns:
# Filtrer uniquement par nom pour tous
filtered_hosts = nr.filter(name=pattern)
if not filtered_hosts.inventory.hosts:
print(f"Aucun hôte correspondant à '{pattern}'")
continue
for host_name, host_obj in filtered_hosts.inventory.hosts.items():
# Nom de fichier principal
filename = host_obj.name.replace("-", "_").replace("CPE", "CPE_LYON")
# Déploiement du fichier principal
filtered_hosts.run(
# Déploiement des configs principales
def deploy_main(task):
filename = task.host.name.replace("-", "_").replace("CPE", "CPE_LYON") + ".conf"
task.run(
task=deploy_config_from_file,
config_file=f"config/{filename}.conf",
name=f"Déploiement config {host_obj.name}"
config_file=f"config/{filename}",
name=f"Déploiement config {task.host.name}"
)
# Déploiement des fichiers VRRP uniquement pour les routers
routers = nr.filter(device_type='router')
for host_name, host_obj in routers.inventory.hosts.items():
vrrp_filename = host_obj.name.replace("-", "_").replace("CPE", "CPE_LYON") + "_VRRP.conf"
routers.run(
task=deploy_config_from_file,
config_file=f"config/{vrrp_filename}",
name=f"Déploiement VRRP {host_obj.name}"
)
filtered_hosts.run(task=deploy_main)
# Déploiement VRRP uniquement pour les routers
routers = nr.filter(device_type="router")
routers.run(task=deploy_vrrp)
routers.run(task=deploy_ospf)
def question_39(nr):
host_patterns = [
'R1-CPE-BAT-A',