vSphere VMFS Datastore: backend de almacenamiento iSCSI con ONTAP
Esta sección cubre la creación de un almacén de datos VMFS con almacenamiento iSCSI ONTAP .
Para el aprovisionamiento automatizado, utilice el siguiente script:[Ansible] .
Lo que necesitas
-
Las habilidades básicas necesarias para administrar un entorno vSphere y ONTAP.
-
Un sistema de almacenamiento ONTAP (FAS/ AFF/CVO/ ONTAP Select/ ASA) que ejecuta {ontap_version}
-
Credenciales de ONTAP (nombre de SVM, ID de usuario y contraseña)
-
Puerto de red ONTAP , SVM e información de LUN para iSCSI
-
Credenciales de vCenter Server
-
Información del host(s) de vSphere
-
{versión de vsphere}
-
-
Información de IP del adaptador iSCSI VMKernel
-
Conmutador(es) de red
-
Con puertos de datos de red del sistema ONTAP y hosts vSphere conectados
-
VLAN configuradas para iSCSI
-
(Opcional) Agregación de enlaces configurada para puertos de datos de red ONTAP
-
-
Herramienta ONTAP para VMware vSphere implementada, configurada y lista para usar
Pasos
-
Comprobar compatibilidad con el "Herramienta de matriz de interoperabilidad (IMT)" .
-
Complete las siguientes tareas de ONTAP y vSphere.
Tareas de ONTAP
-
"Verificar la licencia de ONTAP para iSCSI" .
-
Utilice el
system license show
Comando para verificar si iSCSI está en la lista. -
Usar
license add -license-code <license code>
para agregar la licencia.
-
-
"Verifique que el protocolo iSCSI esté habilitado en la SVM."
-
Verifique que las interfaces lógicas de red iSCSI estén disponibles en la SVM.
Cuando se crea una SVM mediante la GUI, también se crean interfaces de red iSCSI. -
Utilice el
Network interface
Comando para ver o realizar cambios en la interfaz de red.Se recomiendan dos interfaces de red iSCSI por nodo. -
"Crear una interfaz de red iSCSI."Puede utilizar la política de servicio default-data-blocks.
-
"Verifique que el servicio data-iscsi esté incluido en la política de servicio."Puedes utilizar
network interface service-policy show
Para verificar. -
"Crear y mapear el LUN."Omita este paso si está utilizando ONTAP tools for VMware vSphere. Repita este paso para cada LUN.
Tareas de VMware vSphere
-
Verifique que al menos una NIC esté disponible para la VLAN iSCSI. Se prefieren dos NIC para un mejor rendimiento y tolerancia a fallas.
-
"Identifique la cantidad de NIC físicas disponibles en el host vSphere."
-
"Configurar el iniciador iSCSI."Un caso de uso típico es un iniciador iSCSI de software.
-
"Verificar que los grupos de puertos iSCSI estén disponibles" .
-
Normalmente utilizamos un único conmutador virtual con varios puertos de enlace ascendente.
-
Utilice la asignación de adaptador 1:1.
-
-
Verifique que los adaptadores iSCSI VMKernel estén habilitados para que coincidan con la cantidad de NIC y que las IP estén asignadas.
-
"Vincule el adaptador de software iSCSI a los adaptadores VMKernel iSCSI."
-
"Aprovisione el almacén de datos VMFS con herramientas ONTAP" . Repita este paso para todos los almacenes de datos.
-
"Verificar la compatibilidad con la aceleración de hardware."
¿Que sigue?
Una vez completadas estas tareas, el almacén de datos VMFS está listo para usarse para aprovisionar máquinas virtuales.
## 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