vSphere VMFS Datastore - backend de armazenamento iSCSI com ONTAP
Esta seção aborda a criação de um armazenamento de dados VMFS com armazenamento ONTAP iSCSI.
Para provisionamento automatizado, use o seguinte script:[Ansible] .
O que você precisa
-
As habilidades básicas necessárias para gerenciar um ambiente vSphere e ONTAP.
-
Um sistema de armazenamento ONTAP (FAS/ AFF/ CVO / ONTAP Select/ ASA) executando {ontap_version}
-
Credenciais ONTAP (nome SVM, ID de usuário e senha)
-
Porta de rede ONTAP , SVM e informações de LUN para iSCSI
-
Credenciais do vCenter Server
-
Informações do(s) host(s) vSphere
-
{versão_vsphere}
-
-
Informações de IP do adaptador iSCSI VMKernel
-
Comutadores de rede
-
Com portas de dados de rede do sistema ONTAP e hosts vSphere conectados
-
VLAN(s) configurada(s) para iSCSI
-
(Opcional) Agregação de links configurada para portas de dados de rede ONTAP
-
-
Ferramenta ONTAP para VMware vSphere implantada, configurada e pronta para consumo
Passos
-
Verifique a compatibilidade com o "Ferramenta de Matriz de Interoperabilidade (IMT)" .
-
Conclua as seguintes tarefas do ONTAP e do vSphere.
Tarefas ONTAP
-
"Verifique a licença ONTAP para iSCSI" .
-
Use o
system license showcomando para verificar se o iSCSI está listado. -
Usar
license add -license-code <license code>para adicionar a licença.
-
-
Verifique se as interfaces lógicas de rede iSCSI estão disponíveis no SVM.
Quando uma SVM é criada usando a GUI, interfaces de rede iSCSI também são criadas. -
Use o
Network interfacecomando para visualizar ou fazer alterações na interface de rede.São recomendadas duas interfaces de rede iSCSI por nó. -
"Crie uma interface de rede iSCSI."Você pode usar a política de serviço default-data-blocks.
-
"Verifique se o serviço data-iscsi está incluído na política de serviço."Você pode usar
network interface service-policy showpara verificar. -
"Crie e mapeie o LUN."Pule esta etapa se estiver usando ONTAP tools for VMware vSphere. Repita esta etapa para cada LUN.
Tarefas do VMware vSphere
-
Verifique se pelo menos uma NIC está disponível para a VLAN iSCSI. Duas NICs são preferenciais para melhor desempenho e tolerância a falhas.
-
"Identifique o número de NICs físicas disponíveis no host vSphere."
-
"Configure o iniciador iSCSI."Um caso de uso típico é um iniciador iSCSI de software.
-
"Verifique se os grupos de portas iSCSI estão disponíveis" .
-
Normalmente usamos um único switch virtual com várias portas de uplink.
-
Use o mapeamento do adaptador 1:1.
-
-
Verifique se os adaptadores iSCSI VMKernel estão habilitados para corresponder ao número de NICs e se os IPs estão atribuídos.
-
"Vincule o adaptador de software iSCSI ao(s) adaptador(es) iSCSI VMKernel."
-
"Provisione o armazenamento de dados VMFS com ferramentas ONTAP" . Repita esta etapa para todos os armazenamentos de dados.
O que vem a seguir?
Após a conclusão dessas tarefas, o armazenamento de dados VMFS estará pronto para ser consumido para provisionamento de máquinas virtuais.
## 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