Contenu du playbook principal :
- name: Mise à jour des switchs IOS vers la version 15.2(7)E13 hosts: all gather_facts: false ignore_unreachable: true connection: network_cli vars_files: - vault.yml vars: cp_server: X.X.X.X tasks: - name: Récupération des facts IOS (hardware) cisco.ios.ios_facts: gather_subset: - hardware register: ios_facts_output - name: Vérification du modèle actuel | FAIL si différent de son modèle réel ansible.builtin.set_fact: current_model: "{{ ios_facts_output.ansible_facts.ansible_net_model }}" failed_when: - current_model != netbox_model - name: Extraction de l'espace libre (/flash:) | FAIL si pas assez d'espace ansible.builtin.set_fact: free_space_bytes: >- {{ (ios_facts_output.ansible_facts .ansible_net_filesystems_info['flash:'] .spacefree_kb | int) * 1024 }} - name: Vérification de l'espace libre ansible.builtin.fail: msg: > Espace insuffisant sur : {{ ansible_host }} Minimum attendu: {{ firmware_size_bytes }} Espace disponible: {{ free_space_bytes }} failed_when: (free_space_bytes | int) <= (firmware_size_bytes | int) - name: Définir la plateforme actuelle du switch | FAIL si différent de sa plateforme réelle ansible.builtin.set_fact: current_platform: "{{ ios_facts_output.ansible_facts.ansible_net_version }}" changed_when: current_platform == meant_platform notify: Copier le firmware via SCP handlers: - name: Copier le firmware via SCP ansible.builtin.include_tasks: roles/iosE12_playbook/tasks/handler.yml