Playbook Ansible : ajouter un “Uplink profile” dans NSX-T

Dans NSX-T l’ajout d’un “Uplink Profil” est on ne peut plus simple via la GUI (quand celle-ci répond correctement 🙂 ), de notre côté on préfère (et de loin…) passer par les REST APIs, ces dernières sont plus sures et plus rapides surtout si on souhaite automatiser certaine actions. 

Vous l’avez remarquer on est dans un labs from scatch 🙂

Le playbook ci-dessous permet de créer un Uplink Profile, sans tag, avec un vlan en 102 et une mtu en 1600 dans un manager NSX-T (version 3.2.3.1.0).

Dans le playbook nous récupérons le nom et l’id du “Profile Uplink” afin de pouvoir les réutiliser plus tard si par exemple vous souhaitez aller plus loin dans vos actions (ajout d’un “Transport Node Profile par exemple etc…). Vous remarquerez que nous avons mis un block et un rescue afin de gérer proprement d’éventuelle(s) erreur(s),  si vous le souhaitez vous pouvez ajouter  des actions dans la partie rescue (comme une gestion de log par exemple 😉 ).

- hosts: localhost


  vars:
      nsx_manager: "Your_NSX-T-MANAGER"
      nsx_username: "admin"
      nsx_password: "PWD_admin"
      uplinkProfil_name: "Uplink_Profil01"
      mtuvar: "1600"
      vlanvar: "102"
  
          
  tasks:

    - name: Create a Uplink Profile
      block:
        - name: Create a Hostswitch Profile on NSX manager
          uri:
            url: "https://{{ nsx_manager }}/api/v1/host-switch-profiles"
            force_basic_auth: yes
            validate_certs: no
            headers:
              Accept: "application/json"
              Content-Type: "application/json"
            user: "{{ nsx_username }}"
            password: "{{ nsx_password }}"
            method: POST
            body: | 
              {
              "resource_type": "UplinkHostSwitchProfile",
              "display_name": "{{uplinkProfil_name}}",
              "mtu": "{{mtuvar}}",
              "teaming": {
                  "standby_list": [
                    {
                        "uplink_name": "uplink-2",
                        "uplink_type": "PNIC"
                    }
                  ],
                  "active_list": [
                    {
                        "uplink_name": "uplink-1",
                        "uplink_type": "PNIC"
                    }
                  ],
                  "policy": "FAILOVER_ORDER"
                },
                "transport_vlan": "{{vlanvar}}"
              }
            status_code: "201"
            body_format: json
          register: nsx_hostswitch


        - name: Display ID "Create a Hostswitch Profile"
          debug:
            msg: 
              - "display_name : {{ nsx_hostswitch.json.display_name }}"
              - "ID : {{ nsx_hostswitch.json.id }}"

          when: nsx_hostswitch.json.id is defined

      rescue:
        - name: Display error
          debug:
            msg: "Uplink Profile on {{ nsx_manager }} is not created"
Une fois le playblook terminé, il nous reste plus qu’à vérifier ce que ça donne dans notre Manager
Nous avons bien notre nouveau “Uplink Profile”

Post to Twitter