vSphere 분산 스위치에 포트그룹 추가

Lab 환경을 테스트하기 위해서 포트그룹을 일련번호로 여러개 만들어야할 일이 생겼습니다.

Lab-01-External : VLAN 1010
Lab-02-External : VLAN 1020
…
Lab-19-External : VLAN 1190
Lab-20-External : VLAN 1200

그래서 Ansible로 하면 어떻게할까하고 찾아봤습니다.

작업 내용은 간단하니, 3가지만 찾으면 됩니다.

  1. 포트그룹(portgroup) 관련 작업은 표준 스위치는 community.vmware.vmware_portgroup, 분산 스위치는 community.vmware.vmware_dvs_portgroup 모듈로 구분되어 있습니다.
  2. 1씩 증가시키며 20까지 반복 : with_sequence: start=1 count=20
  3. 숫자를 00, 01, 10, 20과 같이 접두어 0을 사용해서 2자리로 표시 : with_sequence: start=1 count=20 format=%02d

이게 뭐라고 처음에 또 뻘건 오류 메시지가 줄줄줄…

failed: [localhost] (item=20) => {"ansible_loop_var": "item", "changed": false, "item": "20", "msg": "missing required arguments: port_binding, portgroup_name, switch_name"}

port_binding, portgroup_name, switch_name 3가지 파라미터가 필수 더라고요. port_binding 파라미터 지정 안한게 원인이었습니다.

포트그룹 만들고, VLAN만 설정하면 되어서 파라미터도 간단히 구성되었습니다.

- name: Create portgroup
  vars_files:
    - vars.yml
  hosts: localhost
  become: false
  gather_facts: false

  tasks:
    - name: Create vlan portgroup
      community.vmware.vmware_dvs_portgroup:
        hostname: '{{ vcenter_hostname }}'
        username: '{{ vcenter_username }}'
        password: '{{ vcenter_password }}'
        switch_name: "TOR-10G"
        portgroup_name: "Lab-{{ item }}-External"
        vlan_id: "1{{ item }}0"
        port_binding: ephemeral
        state: present
      with_sequence: "start=1 count=20 format=%02d"
      delegate_to: localhost

우히히~ 오류 없이 잘 됐습니다!

[ikhwan@mgmt-linux Lab-OpenHCI]$ ansible-playbook create-portgroup.yml
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
[WARNING]: Collection community.vmware does not support Ansible version 2.14.14

PLAY [Create portgroup] **********************************************************************************************************

TASK [Create vlan portgroup] *****************************************************************************************************
changed: [localhost] => (item=01)
changed: [localhost] => (item=02)
changed: [localhost] => (item=03)
changed: [localhost] => (item=04)
changed: [localhost] => (item=05)
changed: [localhost] => (item=06)
changed: [localhost] => (item=07)
changed: [localhost] => (item=08)
changed: [localhost] => (item=09)
changed: [localhost] => (item=10)
changed: [localhost] => (item=11)
changed: [localhost] => (item=12)
changed: [localhost] => (item=13)
changed: [localhost] => (item=14)
changed: [localhost] => (item=15)
changed: [localhost] => (item=16)
changed: [localhost] => (item=17)
changed: [localhost] => (item=18)
changed: [localhost] => (item=19)
changed: [localhost] => (item=20)

PLAY RECAP ***********************************************************************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[ikhwan@mgmt-linux Lab-OpenHCI]$

참고자료

  • https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_dvs_portgroup_module.html
  • https://docs.ansible.com/ansible/latest/collections/ansible/builtin/sequence_lookup.html
  • https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_portgroup_module.html
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like