Datastore vSphere VMFS - backend storage iSCSI con ONTAP
In questa sezione viene descritta la creazione di un datastore VMFS con lo storage iSCSI ONTAP.
Per il provisioning automatico, utilizzare il seguente script: [Ansible].
Di cosa hai bisogno
-
Le competenze di base necessarie per gestire un ambiente vSphere e ONTAP.
-
Un sistema storage ONTAP (FAS/AFF/CVO/ONTAP Select/ASA) con {ontap_version}
-
Credenziali ONTAP (nome SVM, ID utente e password)
-
Informazioni su porta di rete ONTAP, SVM e LUN per iSCSI
-
Credenziali vCenter Server
-
Informazioni sugli host vSphere
-
{vsphere_version}
-
-
Informazioni IP adattatore VMkernel iSCSI
-
Switch di rete
-
Con porte dati di rete del sistema ONTAP e host vSphere collegati
-
VLAN configurate per iSCSI
-
(Opzionale) link aggregation configurato per le porte dati di rete ONTAP
-
-
Tool ONTAP per VMware vSphere implementato, configurato e pronto all'uso
Fasi
-
Verificare la compatibilità con "Tool di matrice di interoperabilità (IMT)".
-
Completare le seguenti attività di ONTAP e vSphere.
Attività di ONTAP
-
"Verificare la licenza ONTAP per iSCSI".
-
Utilizzare
system license show
Comando per verificare se iSCSI è presente nell'elenco. -
Utilizzare
license add -license-code <license code>
per aggiungere la licenza.
-
-
Verificare che le interfacce logiche di rete iSCSI siano disponibili su SVM.
Quando si crea una SVM utilizzando la GUI, vengono create anche le interfacce di rete iSCSI. -
Utilizzare
Network interface
per visualizzare o apportare modifiche all'interfaccia di rete.Si consigliano due interfacce di rete iSCSI per nodo. -
"Creare un'interfaccia di rete iSCSI." È possibile utilizzare la policy di servizio default-data-block.
-
"Verificare che il servizio dati-iscsi sia incluso nella politica di servizio." È possibile utilizzare
network interface service-policy show
per verificare. -
"Creare e mappare il LUN." Saltare questo passaggio se si utilizzano i tool ONTAP per VMware vSphere. Ripetere questo passaggio per ogni LUN.
Attività di VMware vSphere
-
Verificare che almeno una NIC sia disponibile per la VLAN iSCSI. Due schede di rete sono preferite per migliorare le performance e la tolleranza agli errori.
-
"Identificare il numero di NIC fisiche disponibili sull'host vSphere."
-
"Configurare iSCSI Initiator." Un caso d'utilizzo tipico è un iniziatore iSCSI software.
-
"Verificare che i portgroup iSCSI siano disponibili".
-
In genere utilizziamo un singolo switch virtuale con più porte di uplink.
-
Utilizzare la mappatura dell'adattatore 1:1.
-
-
Verificare che gli adattatori VMkernel iSCSI siano abilitati per corrispondere al numero di NIC e che gli IP siano assegnati.
-
"Collegare l'adattatore software iSCSI agli adattatori VMkernel iSCSI."
-
"Eseguire il provisioning del datastore VMFS con gli strumenti ONTAP". Ripetere questo passaggio per tutti gli archivi dati.
Quali sono le prossime novità?
Una volta completate queste attività, il datastore VMFS è pronto per il provisioning delle macchine virtuali.
## 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