Table of Contents

Wprowadzenie do używania TeraForm dla aplikacji Infrastructure as code.

W miarę jak coraz więcej organizacji przenosi swoją infrastrukturę do chmury, potrzeba efektywnego zarządzania nią staje się najważniejsza. W tym miejscu pojawia się Infrastructure as Code (IaC). IaC to proces zarządzania i dostarczania infrastruktury za pomocą kodu, a nie procesów manualnych. Pozwala to na większą spójność, szybkość i niezawodność w zarządzaniu infrastrukturą. Jednym z najpopularniejszych narzędzi do IaC jest Teraform.

Czym jest Teraform?

Teraform to open-source’owe narzędzie programowe Infrastructure as Code, które umożliwia użytkownikom pisanie, planowanie i tworzenie infrastruktury jako kodu. Opracowany przez HashiCorp, Teraform pozwala użytkownikom zarządzać infrastrukturą u różnych dostawców chmury, w tym AWS, Azure i Google Cloud Platform. Dzięki Teraform użytkownicy mogą zdefiniować swoją infrastrukturę jako kod w plikach konfiguracyjnych, zastosować kod do tworzenia lub aktualizacji infrastruktury, a następnie zniszczyć infrastrukturę, gdy nie jest już potrzebna.

Korzyści z używania Teraform

Używanie Teraform do aplikacji infrastructure as code oferuje kilka korzyści, w tym:

  • Efektywność i szybkość: Teraform pozwala na szybsze i bardziej efektywne zarządzanie infrastrukturą poprzez wyeliminowanie konieczności stosowania procesów manualnych.

  • Spójność:** Poprzez użycie kodu do definiowania infrastruktury, Teraform zapewnia spójność w różnych środowiskach.

  • Skalowalność:** Teraform pozwala na łatwe skalowanie infrastruktury, aby sprostać rosnącym wymaganiom.

  • Współpraca: **Pliki konfiguracyjne Teraform mogą być kontrolowane pod względem wersji i udostępniane członkom zespołu, co ułatwia współpracę.

  • Oszczędność kosztów:** Zdolność Teraform do łatwego dostarczania i usuwania zasobów może skutkować oszczędnością kosztów.

Getting Started with Teraform

Aby rozpocząć pracę z Teraform, będziesz musiał:

  1. Pobrać Teraform: Teraform może być pobrany z witryny official website

  2. Utwórz plik konfiguracyjny: Teraform używa plików konfiguracyjnych napisanych w języku HashiCorp Configuration Language (HCL) lub JSON. Plik konfiguracyjny definiuje infrastrukturę, którą chcesz stworzyć, zaktualizować lub usunąć.

Aby użyć Terraform, należy utworzyć plik konfiguracyjny w celu zdefiniowania pożądanej infrastruktury. Plik konfiguracyjny określa zasoby, które mają być utworzone, ich właściwości i zależności.

Pliki konfiguracyjne mogą być napisane w HashiCorp Configuration Language (HCL), języku, który został zaprojektowany tak, aby był czytelny dla człowieka i łatwy do nauczenia, lub w formacie JSON. Składnia HCL jest podobna do składni innych języków programowania, z wykorzystaniem bloków, atrybutów i wartości.

Oto przykład podstawowego pliku konfiguracyjnego Terraform w formacie HCL, który tworzy instancję AWS EC2:

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}

W tym przykładzie plik konfiguracyjny określa dostawcę aws i tworzy zasób aws_instance z obrazem maszyny Amazon (AMI) i typem instancji.

Dla bardziej zaawansowanych przykładów zobacz poniższy przykład użycia Terraform do konfiguracji systemów przy użyciu VMWare:

provider "vsphere" {
  user           = "[email protected]"
  password       = "password"
  vsphere_server = "vcenter.example.com"
}

data "vsphere_datacenter" "dc" {
  name = "Datacenter"
}

data "vsphere_datastore" "ds" {
  name          = "Datastore"
  datacenter_id = data.vsphere_datacenter.dc.id
}

data "vsphere_network_interface" "nic" {
  label          = "Network adapter 1"
  datacenter_id  = data.vsphere_datacenter.dc.id
  network_id     = "VM Network"
}

resource "vsphere_virtual_machine" "vm" {
  name             = "terraform-vm"
  folder           = "/terraform"
  num_cpus         = 2
  memory           = 2048
  guest_id         = "otherLinux64Guest"
  scsi_type        = "pvscsi"
  datastore_id     = data.vsphere_datastore.ds.id

  network_interface {
    network_id = data.vsphere_network_interface.nic.network_id
  }

  disk {
    label            = "disk0"
    size             = 20
    eagerly_scrub    = true
    thin_provisioned = true
  }

  clone {
    template_uuid = "template-uuid"
  }
}

W tym przykładzie plik konfiguracyjny określa dostawcę vsphere i tworzy zasób vsphere_virtual_machine z określoną nazwą, folderem, liczbą procesorów, ilością pamięci, systemem operacyjnym gościa, typem SCSI i ustawieniami dysku. Klonuje również maszynę wirtualną z określonego szablonu.

Plik konfiguracyjny wykorzystuje również bloki danych do odpytywania infrastruktury vSphere o informacje dotyczące centrum danych, magazynu danych i interfejsu sieciowego, które mają być używane przez zasób maszyny wirtualnej.

Po utworzeniu pliku konfiguracyjnego, może on zostać użyty do tworzenia, aktualizacji lub usuwania zasobów infrastruktury.

  1. Inicjalizacja Teraform: Po utworzeniu pliku konfiguracyjnego, można zainicjować Teraform uruchamiając program.terraform init polecenie. Spowoduje to pobranie wszelkich niezbędnych wtyczek i modułów.

Na przykład, jeśli masz plik konfiguracyjny o nazwiemain.tf w katalogu o nazwieterraform-example możesz zainicjować Terraform, wykonując następujące polecenie wterraform-example katalog:terraform init

Spowoduje to pobranie wszelkich niezbędnych wtyczek i modułów określonych w pliku konfiguracyjnym.

  1. Plan and Apply Infrastructure: Po inicjalizacji można uruchomić.terraform plan aby zobaczyć jakie zmiany zostaną wprowadzone do infrastruktury, a następnie zastosować zmiany za pomocąterraform apply polecenie.

Po inicjalizacji można zaplanować, jakie zmiany zostaną wprowadzone do infrastruktury, korzystając z poleceniaterraform plan command. Dzięki temu dowiesz się, jakie zasoby zostaną utworzone, zaktualizowane lub usunięte. Na przykład, jeśli masz plik konfiguracyjny o nazwiemain.tf w katalogu o nazwieterraform-example możesz zaplanować zmiany w infrastrukturze, wykonując następujące polecenie:

terraform plan

To pokaże Ci podgląd zmian, które zostaną wprowadzone do infrastruktury.

Kiedy jesteś zadowolony ze zmian, możesz je zastosować używając opcjiterraform apply polecenie. Na przykład, jeśli masz plik konfiguracyjny o nazwiemain.tf w katalogu o nazwieterraform-example można zastosować zmiany w infrastrukturze, wykonując następujące polecenie:

terraform apply

Spowoduje to zastosowanie zmian w Twojej infrastrukturze. Zauważ, że zastosowanie zmian może zająć trochę czasu, w zależności od rozmiaru i złożoności Twojej infrastruktury.

Best Practices for Using Teraform

Aby zapewnić, że używasz Teraform efektywnie, rozważ przestrzeganie tych najlepszych praktyk:

  • Używaj kontroli wersji: Przechowuj pliki konfiguracyjne Teraform w kontroli wersji, aby umożliwić współpracę i zapewnić, że zmiany są śledzone.

  • Używaj modułów: Użyj modułów Teraform, aby zorganizować i ponownie wykorzystać kod.

  • Rozdziel konfiguracje:** Rozdziel konfiguracje według środowisk (np. dev, staging, prod), aby zapewnić spójność i uniknąć dryfowania konfiguracji.

  • Walidacja zmian: Przed zastosowaniem zmian w infrastrukturze, należy je zweryfikować używając narzędziaterraform plan polecenie.

Wnioski.

Teraform to potężne narzędzie Infrastructure as Code, które umożliwia szybsze, bardziej wydajne i spójne zarządzanie infrastrukturą. Korzystając z Teraform, organizacje mogą zaoszczędzić czas i pieniądze, jednocześnie poprawiając współpracę i skalowalność. Stosując się do najlepszych praktyk i rozpoczynając pracę z Teraform, możesz skorzystać z tych korzyści i zarządzać swoją infrastrukturą bardziej efektywnie.


Referencje:

- Teraform Official Website - Teraform Documentation - AWS Best Practices for Security, Identity, & Compliance