Partie II.3.

Ansible Réseau

Partie Ansible Réseau.

    Prérequis Lab Ansible automation réseau

    1. Installation de GNS3 Server sur un serveur (distant) Installation de GNS3 Server sur un serveur (distant). cd /tmp curl https://raw.githubusercontent.com/GNS3/gns3-server/master/scripts/remote-install.sh \ > gns3-remote-install.sh bash gns3-remote-install.sh --with-openvpn Il sera nécessaire de redémarrer matériellement le serveur. On charge une topologie mise à disposition et on attaque la gestion directement à partir de l’hôte de virtualisation ou à partir d’un hôte dans la topologie. 2. Préparation des périphériques Les noeuds gérés, s’ils sont Unix, doivent disposer de Python 2.

    Explorer l'environnement de lab

    Étape 1 : Dossier de travail Créer si n’est déjà fait le dossier networking-workshop et s’y rendre. mkdir networking-workshop cd networking-workshop/ Étape 2 : Vérification de la configuration Lancer la commande ansible avec l’option --version pour examiner sa configuration. ansible --versionansible 2.6.2 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.

    Écrire un premier playbook

    1. Rappel théoriques Maintenant que vous en savez assez sur le fichier d’inventaire et les variables de groupe et d’hôte, nous allons écrire notre premier livre de jeu. Playbook definition for network automation La cible d’un jeu est défini par la directive hosts Définir le type de connexion : connection : network_cli À propos de gather_facts Exécuter un livre de jeu --- - name: GATHER INFORMATION FROM ROUTERS hosts: cisco connection: network_cli gather_facts: no tasks: - name: GATHER ROUTER FACTS ios_facts:ansible-playbook gather_ios_data.

    Module documentation, Registering output & tags

    1. Théorie Modules Modules do the actual work in ansible, they are what gets executed in each playbook task. Typically written in Python (but not limited to it) Modules are idempotent Modules take user input in the form of parameters Network modules Ansible modules for network automation typically references the vendor OS followed by the module name. *_facts *_command *_config more modules depending on platform

    Mise à jour de configuration

    1. Théorie The *_config module Vendor specific config modules allow the user to update the configuration on network devices. Different ways to invoke the *_config module: tasks: - name: ENSURE THAT THE DESIRED SNMP STRINGS ARE PRESENT ios_config: commands: - snmp-server community ansible-public RO - snmp-server community ansible-private RW - snmp-server community ansible-test ROtasks: - name: ENSURE THAT ROUTERS ARE SECURE ios_config: src: secure_router.cfg Validating changes before they are applied Ansbile lets you validate the impact of the proposed configuration using the –check flag.

    Backing and Restoring router configuration

    1. Théorie Backing up router configuration --- - name: BACKUP ROUTER CONFIGURATIONS hosts: cisco connection: network_cli gather_facts: no tasks: - name: BACKUP THE CONFIG ios_config: backup: yes register: config_output The backup parameter of the ios_config module triggers the backup and automatically stores device configuration backups within a backups directory Cleaning up the backed up configuration The backed up configuration has 2 lines that should be removed: Building configuration... Current configuration with default configurations exposed : 393416 bytes The lineinfile module is a general purpose module that is used for manipulating file contents.

    Introduction modèle Jinja2

    1. Théorie Templates Ansible has native integration with the Jinja2 templating engine Render data models into device configurations Render device output into dynamic documentation Jinja2 enables the user to manipulate variables, apply conditional logic and extend programmability for network automation. Using templates to generate configuration Data model: vlans: - id: 10 name: WEB - id: 20 name: APP - id: 30 name: DB Jinja2 template vlan {{ vlan.

    Documentation dynamique

    1. Données structurées et rôles Structured data from show commands rtr2#show interfaces GigabitEthernet1 is up, line protocol is up Hardware is CSR vNIC, address is 0e56.1bf5.5ee2 (bia 0e56.1bf5.5ee2) Internet address is 172.17.16.140/16 MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) Full Duplex, 1000Mbps, link type is auto, media type is Virtual output flow-control is unsupported, input flow-control is unsupported ARP type: ARPA, ARP Timeout 04:00:00 .

    Ansible Cisco CCNA

    https://github.com/goffinet/ansible-ccna-lab/blob/master/README.md 1. Mise en place minimale Note pour les utilisateur de la topologie GNS3 fournie en classe, sur tous les périphériques, il sera peut-être nécessaire de re-générer les clés RSA des périphériques Cisco : enable configure terminal crypto key generate rsa modulus 2048 exit wr 1.1. Images GNS3 image IOSv (kvm) image IOSv-L2 (kvm) image Centos (kvm) 1.2. Routeurs On utilise des IOSv pour les routeurs L3 avec 8 interfaces GigabitEthernet.