vSphere VMFS資料存放區- iSCSI儲存後端ONTAP 搭配功能
本節說明如何使用ONTAP VMware iSCSI儲存設備來建立VMFS資料存放區。
如需自動化資源配置、請使用下列指令碼: [Ansible]。
您需要的一切
-
管理vSphere環境與ONTAP VMware所需的基本技能。
-
執行{ONTAP_version}的支援系統(FAS/AFF/CVO/ONTAP Select/ASA)ONTAP
-
資訊(SVM名稱、使用者ID和密碼)ONTAP
-
iSCSI的網路連接埠、SVM和LUN資訊ONTAP
-
vCenter Server認證
-
vSphere主機資訊
-
{vSphere_version}
-
-
iSCSI VMKernel 介面卡 IP 資訊
-
網路交換器
-
搭配ONTAP 使用NetApp系統網路資料連接埠和連線的vSphere主機
-
為iSCSI設定的VLAN
-
(選用)連結集合、設定ONTAP 用於連接至整套網路資料連接埠
-
-
VMware vSphere適用的VMware vSphere工具已部署、已設定且隨時可供使用ONTAP
步驟
-
檢查與的相容性 "互通性對照表工具IMT (不含)"。
-
完成下列ONTAP 的VMware及vSphere工作。
執行任務ONTAP
-
-
使用「系統授權show」命令檢查是否列出iSCSI。
-
使用「license add -license code-Code < license code>」來新增授權。
-
-
驗證SVM上是否有iSCSI網路邏輯介面可用。
使用GUI建立SVM時、也會建立iSCSI網路介面。 -
使用「網路介面」命令來檢視或變更網路介面。
建議每個節點使用兩個iSCSI網路介面。 -
"建立iSCSI網路介面。" 您可以使用預設資料區塊服務原則。
-
"驗證資料iSCSI服務是否包含在服務原則中。" 您可以使用「網路介面服務原則展示」來驗證。
-
"建立及對應LUN。" 如果您使用ONTAP VMware vSphere的VMware VMware vSphere的VMware工具、請跳過此步驟。針對每個LUN重複此步驟。
VMware vSphere工作
-
確認至少有一個NIC可供iSCSI VLAN使用。為了提升效能和容錯能力、我們建議使用兩個NIC。
-
"設定iSCSI啟動器。" 典型的使用案例是軟體iSCSI啟動器。
-
-
我們通常使用單一虛擬交換器搭配多個上行鏈路連接埠。
-
使用1:1介面卡對應。
-
-
確認iSCSI VMKernel介面卡已啟用、以符合NIC數量、並已指派IP。
-
"使用ONTAP VMware不穩定工具來配置VMFS資料存放區"。對所有資料存放區重複此步驟。
接下來呢?
完成這些工作之後、VMFS資料存放區就可以開始耗用資源來配置虛擬機器。
## Disclaimer: Sample script for reference purpose only.
- hosts: '{{ vsphere_host }}'
name: Play for vSphere iSCSI Configuration
connection: local
gather_facts: false
tasks:
# Generate Session ID for vCenter
- name: Generate a Session ID for vCenter
uri:
url: "https://{{ vcenter_hostname }}/rest/com/vmware/cis/session"
validate_certs: false
method: POST
user: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
force_basic_auth: yes
return_content: yes
register: vclogin
# Generate Session ID for ONTAP tools with vCenter
- name: Generate a Session ID for ONTAP tools with vCenter
uri:
url: "https://{{ ontap_tools_ip }}:8143/api/rest/2.0/security/user/login"
validate_certs: false
method: POST
return_content: yes
body_format: json
body:
vcenterUserName: "{{ vcenter_username }}"
vcenterPassword: "{{ vcenter_password }}"
register: login
# Get existing registered ONTAP Cluster info with ONTAP tools
- name: Get ONTAP Cluster info from ONTAP tools
uri:
url: "https://{{ ontap_tools_ip }}:8143/api/rest/2.0/storage/clusters"
validate_certs: false
method: Get
return_content: yes
headers:
vmware-api-session-id: "{{ login.json.vmwareApiSessionId }}"
register: clusterinfo
- name: Get ONTAP Cluster ID
set_fact:
ontap_cluster_id: "{{ clusterinfo.json | json_query(clusteridquery) }}"
vars:
clusteridquery: "records[?ipAddress == '{{ netapp_hostname }}' && type=='Cluster'].id | [0]"
- name: Get ONTAP SVM ID
set_fact:
ontap_svm_id: "{{ clusterinfo.json | json_query(svmidquery) }}"
vars:
svmidquery: "records[?ipAddress == '{{ netapp_hostname }}' && type=='SVM' && name == '{{ svm_name }}'].id | [0]"
- name: Get Aggregate detail
uri:
url: "https://{{ ontap_tools_ip }}:8143/api/rest/2.0/storage/clusters/{{ ontap_svm_id }}/aggregates"
validate_certs: false
method: GET
return_content: yes
headers:
vmware-api-session-id: "{{ login.json.vmwareApiSessionId }}"
cluster-id: "{{ ontap_svm_id }}"
when: ontap_svm_id != ''
register: aggrinfo
- name: Select Aggregate with max free capacity
set_fact:
aggr_name: "{{ aggrinfo.json | json_query(aggrquery) }}"
vars:
aggrquery: "max_by(records, &freeCapacity).name"
- name: Convert datastore size in MB
set_fact:
datastoreSizeInMB: "{{ iscsi_datastore_size | human_to_bytes/1024/1024 | int }}"
- name: Get vSphere Cluster Info
uri:
url: "https://{{ vcenter_hostname }}/api/vcenter/cluster?names={{ vsphere_cluster }}"
validate_certs: false
method: GET
return_content: yes
body_format: json
headers:
vmware-api-session-id: "{{ vclogin.json.value }}"
when: vsphere_cluster != ''
register: vcenterclusterid
- name: Create iSCSI VMFS-6 Datastore with ONTAP tools
uri:
url: "https://{{ ontap_tools_ip }}:8143/api/rest/3.0/admin/datastore"
validate_certs: false
method: POST
return_content: yes
status_code: [200]
body_format: json
body:
traditionalDatastoreRequest:
name: "{{ iscsi_datastore_name }}"
datastoreType: VMFS
protocol: ISCSI
spaceReserve: Thin
clusterID: "{{ ontap_cluster_id }}"
svmID: "{{ ontap_svm_id }}"
targetMoref: ClusterComputeResource:{{ vcenterclusterid.json[0].cluster }}
datastoreSizeInMB: "{{ datastoreSizeInMB | int }}"
vmfsFileSystem: VMFS6
aggrName: "{{ aggr_name }}"
existingFlexVolName: ""
volumeStyle: FLEXVOL
datastoreClusterMoref: ""
headers:
vmware-api-session-id: "{{ login.json.vmwareApiSessionId }}"
when: ontap_cluster_id != '' and ontap_svm_id != '' and aggr_name != ''
register: result
changed_when: result.status == 200