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


26.10.2020

Nowa wersja nVision

Można już pobierać nową wersję nVision
26.10.2020

Monitorowanie infrastruktury

Vertiv Environet Alert
23.10.2020

Telefonia w chmurze

NFON Cloudya
23.10.2020

Nowości w EDR

Bitdefender GravityZone
23.10.2020

Wykrywanie anomalii

Flowmon ADS11
23.10.2020

Mobilny monitor

AOC 16T2
22.10.2020

HP Pavilion

HP zaprezentowało nowe laptopy z linii Pavilion.
22.10.2020

Inteligentny monitoring

WD Purple SC QD101
22.10.2020

Przełącznik 2,5GbE

QNAP QSW-1105-5T

Automatyzacja konfiguracji VMware dzięki Terraform

Data publikacji: 16-07-2020 Autor: Maciej Lelusz

W jakim celu automatyzować zadania? Z lenistwa, z chęci rozwoju, z nudów. Słowo „automatyzacja” trochę niepotrzebnie obrosło kultem tajemniczości. Uważane jest za coś przeznaczonego dla dużych i za przesadę dla małych. Niesłusznie, czego postaramy się dowieść w artykule przedstawiającym Terraform w kontekście nowego vSphere 7.0.

 

Na początek kilka słów o tym, czym Terraform jest. Zastosowania można określić poprzez krótki opis sytuacyjny: Oprogramowanie, które ma API, umożliwia automatyczną konfigurację. Posiadając API, możemy wykonywać komendy, które pobudzą API w sposób, który ma nam przynieść konkretny efekt, np. powołać maszynę wirtualną. Natomiast aby wywołać API w sposób, który jest przezeń wymagany, trzeba je poznać. Co ważne, każdy produkt ma inne API. Zatem aby osiągać pożądane efekty, trzeba poznać wiele API, a potem odświeżać swoją wiedzę przy każdej aktualizacji. Postanowiono rozwiązać ten problem poprzez dorzucenie kolejnej warstwy abstrakcji. Nie znasz wielu języków API? Spokojnie, mamy jeden, który będzie na tyle uniwersalny, że w zasadzie nie trzeba będzie znać jakichkolwiek innych. Zatem Terraform jest swoistym interfejsem do różnych API, w naszym wypadku do vSphere 7.0, który umożliwia poprzez specyficzny dla siebie język opisanie ich działania za pomocą kodu.


> INSTALACJA

 

Na Windowsie paczkę terraform można zainstalować za pomocą menedżera pakietów Chocolatey, a na komputerach Apple można w tym celu skorzystać z Homebrew. W przypadku dystrybucji linuksowych najlepszym rozwiązaniem będzie pobranie archiwum tarball z oficjalnego repozytorium Terraform na Git­Hubie i ręczna instalacja. Następnie, dysponując już binarką Terraform ulokowaną w pożądanym miejscu, można zacząć konfigurację od sklonowania repozytorium z przykładowym kodem z naszego repozytorium git:


git clone https://github.com/inleo-pl/
Terraform-VMware-vSphere.git

 

Dzięki temu powstanie folder, w którym znajdziemy wszystkie pliki niezbędne do realizacji naszego scenariusza testowego. Zobaczmy, co jest w środku:


cd Terraform-VMware-vSphere
ls -alh
LICENSE
README.md
vsphere-connection
vsphere-create-dc
vsphere-create-resource-pool
vsphere-add-host-to-cluster
vsphere-add-hosts-to-cluster
vsphere-create-vds
vsphere-deploy-vm
vsphere-deploy-vm-from-template


Zawsze trzeba zacząć od scenariusza, który określi, co chcemy zrealizować, co jest do osiągnięcia tego celu potrzebne, i zdefiniuje ogólne zasady pracy z narzędziem. Na początku więc ustawmy scenę. Przyjmijmy, że w nowo uruchomionym branch offcie naszej organizacji znajduje się serwer ESX i gdzieś lokalnie dysponujemy vCenter. Ważne jest to, że są to wersje pełne, a nie darmowe, ponieważ potrzebujemy API, a ono działa w wersjach płatnych. Zamontowaliśmy serwer w racku, postawiliśmy vSphere 7.0, nadając mu adres IP, i chcemy, aby to była ostatnia rzecz, którą zrobimy ręcznie. Dalej ma pracować za nas Terraform, tworząc Datacenter, klaster i dodając do niego serwer, by następnie skonfigurować sieć i powołać VM z szablonu. Zajrzyjmy więc do pierwszego folderu, czyli vsphere-connection:


cd vsphere-connection
ls -alh
main.tf
terraform.tfvars
variables.tf
versions.tf


Znajdziemy tu cztery pliki, ich omówienie zacznijmy od main.tf bo ten stanowi nasz rdzeń – to w nim znajduje się opis infrastruktury, którą chcemy powołać. Zajrzyjmy do środka:


provider "vsphere" {
user = var.vsphere_user
password = var.vsphere_pass
vsphere_server = var.vsphere_server
allow_unverified_ssl = true
}


Kod ten pokazuje nam, jak się połączyć z serwerem vSphere poprzez użycie providera „vSphere”. Każdy z typów oprogramowania, które Terraform może zautomatyzować, ma swojego providera. Używamy tutaj zmiennych, aby podać hasło. Skrypt tak skonstruowany wymaga zdefiniowania zmiennych w pliku variables.tf:


cat variables.tf
# Provider
variable "vsphere_user" {
type = string
description = "Username of admin/root account."
}
variable "vsphere_pass" {
type = string
description = "Password of admin/root user."
}
variable "vsphere_server" {
type = string
description = "Name/IP for point of mgmt (ESXi/vCenter)."
}


Każda zmienna podana w main.tf musi się tutaj znaleźć. Dzięki temu plikowi możemy zdefiniować, o co poprosić TF podczas wywołania skryptu. Można do każdej z wartości dodać wiersz default = XXXX i wówczas domyślnie, gdy zmienna nie zostanie podana, wypełni ją daną wartością. Jednakże zdecydowanie lepiej jest umieścić wartości w pliku odpowiedzi, czyli terraform.tfvars:


cat terraform.tfvars:
vsphere_user="administrator@vsphere.local"
vsphere_pass="CmentarnaPolk@123"
vsphere_server="vcsa"


Definicja połączenia do hosta, czy też do vCenter jest jednakowa. Niemniej jednak w hoście nie ma za wiele do zrobienia, połączymy się więc z naszym vCenter, w tym przypadku występującym pod nazwą vcsa. Aby połączyć się z vCenter, należy zmienić wartości w tym pliku. W folderze znajduje się również plik versions.tf. Nie jest on wymagany, ale definiuje wersję TF, którą zamierzamy używać. Skoro wiadomo już, co to za pliki i do czego mniej więcej służą, spróbujmy się połączyć. Na początku jednak wywołajmy:


terraform init


Powyższa komenda inicjuje środowisko Terraform w kontekście danego folderu i pozwoli z niego korzystać. Następnie wywołajmy:


terraform plan


Komenda ta pozwoli nam na wykonanie tzw. jazdy na sucho – czyli uruchomi skrypt, wykona jego debug, ale nie uruchomi go w środowisku. Aby faktycznie uruchomić nasz skrypt, użyjemy polecenia:


terraform apply


Połączyliśmy się! Najwyższy czas zrobić coś więcej, np. założyć nowe Datacenter, gdzie umieścimy następnie klaster. Wejdźmy zatem do folderu vsphere-create-dc.
Zestaw plików jest dokładnie taki sam, weźmy jednak na tapet plik main.tf:

 

[..]
resource "vsphere_datacenter" "DC" {
name = var.dc_name }

 

Pojawiły się trzy dodatkowe linie. Definiują one obiekt typu resource o nazwie vsphere_datacenter. Nazwa tego obiektu przechowywana jest tak jak poprzednio w zmiennej zdefiniowanej w pliku variables.tf:

 

[..]
variable "dc_name" {
type = string
description = "Name of your DC." }

 

Wartości można wpisać z palca lub analogicznie dopisać do pliku terraform.tfvars. Wydajemy teraz polecenie:

 

terraform apply

 

Wówczas w vCenter pojawi się nowy obiekt Datacenter o zdefiniowanej nazwie. Tutaj warto podkreślić jedną z ciekawszych funkcji w Terraform, czyli możliwość wycofania wszelkich wprowadzonych zmian. Gdy powołamy infrastrukturę i będziemy ją chcieli „zwinąć”, wystarczy wywołać:

 

terraform destroy

 

Komenda ta pozwoli na usunięcie wszystkiego, co zostało dotąd skonfigurowane. Trzeba być jednak ostrożnym – usunięte zostanie dosłownie wszystko, ni mniej, ni więcej. Czas dodać klaster do naszej konfiguracji. Udajemy się w tym celu do folderu vsphere-create-cluster i drukujemy na ekranie main.tf:

 

[..]
resource "vsphere_datacenter" "dc" {
name = var.dc_name
}
resource "vsphere_compute_cluster" "cluster" {
name = var.cluster_name
datacenter_id = vsphere_datacenter.dc.moid
drs_enabled = true
drs_automation_level = "fullyAutomated"
ha_enabled = false
}

 

[...]

 

Bloger i niezależny konsultant z wieloletnim doświadczeniem w branży IT, specjalizujący się w wirtualizacji i cloud computingu. Posiada tytuły MCP, MCTS, VCP oraz VMware vExpert.

Artykuł pochodzi z miesięcznika: IT Professional

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

.

Transmisje online zapewnia: StreamOnline

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