Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



03.03.2023

Nowość dla przemysłowych...

Cisco ogłosiło innowacje w zakresie sieci zarządzanych w chmurze.
03.03.2023

Wielofunkcyjna platforma

Nowe narzędzie firmy Veeam Software to zintegrowana platforma oferująca zaawansowane...
03.03.2023

Bard rywalem dla ChatGPT

Google ogłosiło uruchomienie chatbota napędzanego sztuczną inteligencją o nazwie Bard,...
03.03.2023

Monitoring środowisk...

Firma Schneider Electric opublikowała dokument White Paper nr 281 dotyczący tego, jak...
03.03.2023

Chmura danych

Snowflake, firma działająca w obszarze usług cloudowych, uruchomiła chmurę danych dla...
03.03.2023

Bezpieczeństwo w świecie...

HPE rozszerzył gamę serwerów HPE ProLiant Gen11 nowej generacji.
03.03.2023

Bezobsługowa projekcja

Firma Panasonic Connect Europe zaprezentowała nową generację projektorów laserowych DLP z...
03.03.2023

Zasilanie awaryjne

Firma Vertiv, dostawca rozwiązań krytycznej infrastruktury cyfrowej i zapewniających...
03.03.2023

Monitory biznesowe

Marka AOC prezentuje siedem monitorów do zastosowań biznesowych oraz home office.

Konfiguracja VMware’a z wykorzystaniem Ansible’a

Data publikacji: 03-03-2023 Autor: Bartosz Bielawski

W tej części cyklu przyglądamy się temu, jak infrastrukturę VMware'a można konfigurować za pomocą Ansible’a. Omawiamy poszczególne kroki na podstawie konfigurowania pamięci masowych. Założymy przy tym, że same pamięci masowe tworzone będą również  za pomocą Ansible’a na urządzeniach NetAppa. Sprawdzimy też, jakie inne moduły dostępne są w ramach kolekcji modułów Community.VMware.

 

W odróżnieniu od wielu modułów Ansible’a, korzystając z modułu Community.VMware (podobnie jest w przypadku modułów z kolekcji NetApp.ONTAP), nie będziemy próbowali konfigurować maszyny, z którą bezpośrednio się połączymy. Serwer ten będzie jedynie pośredniczyć w komunikacji z właściwą infrastrukturą VMware’u czy klastrami NetAppa. Mimo że z serwerami ESXi i klastrami NetAppa moglibyśmy łączyć się za pomocą sesji SSH, to takie połączenie będzie realizowane z wykorzystaniem REST API.

 

Vmware i NetApp a inne moduły

 

Nie interesują nas zatem informacje o bieżącym systemie, ponieważ jego właściwości nie wpłyną na to, jakie parametry przekażemy do poszczególnych modułów. Zamiast faktów pobieranych z bieżącego systemu pobierzemy informacje od vCenter odnośnie do ustawień naszej infrastruktury VMware’u czy od klastrów NetAppa o istniejących zasobach dyskowych. Posłużą nam do tego moduły informacyjne, których jedynym zadaniem jest zbieranie informacji o istniejących zasobach. W naszym przypadku przydatny będzie przede wszystkim moduł vmware_datastore_info. Zbierze on informację o istniejących datastore’ach w ramach interesującego nas klastra, do którego będziemy chcieli podpiąć nowy dysk, oraz vmware_host_disk_info, który podobną informację zbierze o fizycznych dyskach. Przyda się nam też moduł na_ontap_rest_info – pozwoli nam pobrać dane o dostępnych LUN-ach.

 

Łączenie dysków z serwerami

 

W interesującym nas scenariuszu zadbamy o to, by nowo utworzony LUN na urządzeniu NetAppa podłączyć do klastra VMware’u. Postaramy się jednocześnie, by nazwa w ramach NetAppa pokrywała się z tą, którą nadamy dyskowi w VMware (ułatwi nam to późniejszą administrację). Zanim jednak zaczniemy komunikować się z obiema platformami, musimy zadbać o uwierzytelnianie.


VMware i NetApp – uwierzytelnianie

 

O uwierzytelnianie należy zadbać w obu przypadkach. Jeśli chodzi o Net­Appa, możemy skorzystać z certyfikatów lub pary użytkownik i hasło. W przypadku VMware’a uwierzytelniać się będziemy za pomocą użytkownika i hasła. Aby nie powielać tych danych (oraz danych dotyczących klastra NetAppa lub vCenter VMware’u), utworzymy odpowiednie dane na samym początku naszego playbooka:


- set_fact:
vcauth: &vcauth
hostname: "{{ vcenter }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_password }}"
auth: &auth
hostname: "{{ netapp_hostname }}"
cert_filepath: "{{ cert_filepath }}"
key_filepath: "{{ key_filepath }}"
https: true

validate_certs: false

 

Dzięki temu wszystkie zasoby muszą jedynie przekazać uprzednio utworzony blok, korzystając z przeznaczonej do tego składni. Dla przykładu wspomniane wcześniej moduły informacyjne (dla NetAppa i VMware’u):

 

- name: Zbieranie informacji o istniejących datastorach
community.vmware.vmware_datastore_info:
cluster: "{{ cluster }}"
properties: [name]
<<: *vcauth

register: datastores

 

- name: Zbieranie informacji o istniejących LUNach na klastrze NetApp
netapp.ontap.na_ontap_rest_info:
gather_subset:
- storage_luns_info
parameters:
name: "*{{ lun }}"
fields:
- name
- serial_number
<<: *auth
register: luninformation

 

Pobrane informacje rejestrujemy, by móc skorzystać z nich w kolejnych krokach.

 

Tworzenie filtrów

 

Ansible ma wiele filtrów, dzięki którym można przetwarzać uprzednio zebrane informacje. Niestety, jeśli chcemy, by nasze datastore’y nazywały się tak samo jak LUN-y na NetAppie, musimy powiązać informację z VMware’u (gdzie dyski reprezentowane będą przez WWID) oraz NetAppa (od którego uzyskamy jedynie informację o numerze seryjnym, jaki po przetworzeniu określać będzie unikalny fragment WWID). Utworzymy w tym celu dwa filtry: jeden dokonujący operacji podobnej do JOIN znanego z TSQL i drugi, który przetworzy serial (w wersji ASCII) na liczbę szesnastkową:

 

class FilterModule(object):
def ascii_to_hex(self, ascii):
return ascii.encode("ascii").hex()

 

def to_dict(self, obj, attr=""):
out = dict()

 

if type(obj) is not dict:
temp = dict()
temp["name"] = obj

obj = temp

 

if attr != "":
out[attr] = obj
else:
out.update(obj)
return out

 

def join_dict_list(self, list1, list2, attr1="", attr2="", on="True"):
out = []
for a in list1:
for b in list2:
_item_ = dict()
_item_.update(self.to_dict(a, attr1))
_item_.update(self.to_dict(b, attr2))
if eval(on.replace('`', '"')):
out.append(_item_)
return out

 

def filters(self):
return {
'ascii_to_hex': self.ascii_to_hex,
'to_dict': self.to_dict,
'join_dict_list': self.join_dict_list
}

 

Plik zawierający filtry musimy umieścić w folderze filter_plugins w ramach naszego repozytorium. Dzięki temu informację pobraną od VMware’u będziemy mogli powiązać z informacjami uzyskanymi od NetAppa.

 

Najpierw musimy przeskanować HBA:

 

- name: Przeskanowanie HBA dla wybranego klastra VMware
community.vmware.vmware_host_scanhba:
cluster_name: "{{ cluster }}"
refresh_storage: yes
rescan_hba: yes
rescan_vmfs: yes
<<: *vcauth

 

Następnie pobierzemy informację o fizycznych dyskach, z założeniem, że będzie wśród nich nowo utworzony LUN:

 

- name: Pobranie informacji o dyskach VMware
community.vmware.vmware_host_disk_info:
cluster_name: "{{ cluster }}"
<<: *vcauth

register: vmwarediskinfo

 

[...]

 

Autor zawodowo zajmuje się informatyką. Były Microsoft MVP w dziedzinie PowerShella. Bloger oraz jeden z moderatorów forum dotyczącego skryptów w serwisie TechNet. Autor książki „Windows PowerShell 5.1 Biblia”.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

prenumerata Numer niedostępny Spis treści

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik \"IT Professional\"