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