fin TP3
This commit is contained in:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user