Ansible 플레이북이 vmware_guest 모듈을 사용하여 고정 IP 주소를 할당하지 못함

Ansible 플레이북이 vmware_guest 모듈을 사용하여 고정 IP 주소를 할당하지 못함

Ansible을 사용하여 템플릿에서 VM을 빌드하려고 합니다. IP 주소를 지정해야 합니다. 다른 모든 구성은 플레이북에서 작동합니다. 구문 문제가 아닙니다. 이것은 실험실이므로 구성에 사용할 VLAN이 없습니다. 네트워크 이름을 사용해야 합니다. SystemsLab은 유효한 표준 포트 그룹입니다.

vmware_guest 네트워크에 대한 ansible 문서에 따르면:

네트워크

"네트워크 목록(NIC 순서). 가상 머신을 재구성하는 동안 NIC 제거는 허용되지 않습니다. 모든 매개변수와 VMware 개체 이름은 대소문자를 구분합니다.

항목당 아래 매개변수 중 하나가 필요합니다.

  • name(문자열): 이 인터페이스에 대한 포트 그룹 또는 분산 가상 포트 그룹의 이름입니다. 분산 가상 포트 그룹을 지정할 때 지정된 esxi_hostname 또는 클러스터가 연결되어 있는지 확인하세요.
  • vlan (정수): 이 인터페이스의 VLAN 번호입니다."

VM 구성에 대한 내 플레이북 항목은 다음과 같습니다.

- name: Create VM from template
     vmware_guest:
       validate_certs: False
       hostname: "{{ vcenter_hostname }}"
       username: "{{ vcenter_user }}"
       password: "{{ vcenter_pass }}"
       esxi_hostname: lab-vmsystems-01
       datacenter: Lab
       name: testvm_1
       template: RHEL74-IMG
       folder: template
       datastore: autoselect_datastore
       networks:
         - name: "SystemsLab"
           type: static
           device_type: vmxnet3
           ip: 10.**.**.199
           netmask: 255.255.255.0
           gateway: 10.**.**.1
         - dns_servers:
           - 10.**.**.21
           - 10.**.**.22
         - domain: ****.net

내가 겪고있는 오류는 다음과 같습니다.

    "changed": false,
    "invocation": {
        "module_args": {
            "annotation": null,
            "cdrom": {},
            "cluster": null,
            "convert": null,
            "customization": {},
            "customization_spec": null,
            "customvalues": [],
            "datacenter": "Lab",
            "datastore": "autoselect_datastore",
            "disk": [],
            "esxi_hostname": "lab-vmsystems-01",
            "folder": "template",
            "force": false,
            "guest_id": null,
            "hardware": {
                "memory_mb": "1024",
                "num_cpus": 1
            },
            "hostname": "***-vcenter-01",
            "is_template": false,
            "linked_clone": false,
            "name": "testvm_1",
            "name_match": "first",
            "networks": [
                {
                    "device_type": "vmxnet3",
                    "gateway": "10.**.**.1",
                    "ip": "10.**.**.199",
                    "name": "SystemsLab",
                    "netmask": "255.255.255.0",
                    "type": "static"
                },
                {
                    "dns_servers": [
                        "10.**.**.21",
                        "10.**.**.22"
                    ]
                },
                {
                    "domain": "****.net"
                }
            ],
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "port": 443,
            "resource_pool": null,
            "snapshot_src": null,
            "state": "present",
            "state_change_timeout": 0,
            "template": "RHEL74-IMG",
            "use_instance_uuid": false,
            "username": "***@***.net",
            "uuid": null,
            "validate_certs": false,
            "vapp_properties": [],
            "wait_for_customization": false,
            "wait_for_ip_address": true
        }
    },
    "msg": "Please specify at least a network name or a VLAN name under VM network list."```

C:\Program Files (x86)\VMware\VMware vSphere CLI>dcli +server lvd-vcenter-01 com vmware vcenter network list +skip-server-verification
|----------|----------|------------------|
|Network   |Name      |Type              |
|----------|----------|------------------|
|network-31|VM Network|STANDARD_PORTGROUP|
|network-32|SystemsLab|STANDARD_PORTGROUP|
|----------|----------|------------------|

답변1

세 가지 네트워크 인터페이스를 생성합니다.

"networks": [
                {
                    "device_type": "vmxnet3",
                    "gateway": "10.**.**.1",
                    "ip": "10.**.**.199",
                    "name": "SystemsLab",
                    "netmask": "255.255.255.0",
                    "type": "static"
                },
                {
                    "dns_servers": [
                        "10.**.**.21",
                        "10.**.**.22"
                    ]
                },
                {
                    "domain": "****.net"
                }
            ],

dns_servers 및 도메인에 대한 대시를 제거하십시오.

- name: Create VM from template
     vmware_guest:
       validate_certs: False
       hostname: "{{ vcenter_hostname }}"
       username: "{{ vcenter_user }}"
       password: "{{ vcenter_pass }}"
       esxi_hostname: lab-vmsystems-01
       datacenter: Lab
       name: testvm_1
       template: RHEL74-IMG
       folder: template
       datastore: autoselect_datastore
       networks:
         - name: "SystemsLab"
           type: static
           device_type: vmxnet3
           ip: 10.**.**.199
           netmask: 255.255.255.0
           gateway: 10.**.**.1
           dns_servers:
             - 10.**.**.21
             - 10.**.**.22
           domain: ****.net

관련 정보