Ansible playbook 無法使用 vmware_guest 模組指派靜態 IP 位址

Ansible playbook 無法使用 vmware_guest 模組指派靜態 IP 位址

我正在嘗試使用 ansible 從模板建立虛擬機器。我需要指定IP位址。所有其他配置都可以在劇本中使用。這不是文法問題。這是一個實驗室,所以我沒有可用於設定的 VLAN。我必須使用網路名稱。 SystemsLab 是一個有效的標準連接埠群組。

根據 vmware_guest 網路的 ansible 文件:

網路

「網路清單(依 NIC 的順序)。重新配置虛擬機器時不允許刪除 NIC。所有參數和 VMware 物件名稱均區分大小寫。

每個條目需要以下參數之一:

  • name(字串):此介面的連接埠群組或分散式虛擬連接埠群組的名稱。指定分散式虛擬連接埠群組時,請確保給定的 esxi_hostname 或叢集與其關聯。
  • vlan(整數):該介面的 VLAN 號。

這是我的虛擬機器設定手冊條目:

- 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

相關內容