Jak utworzyć instancję DB AWS RDS za pomocą Terraform

Jak utworzyć instancję DB AWS RDS za pomocą Terraform
Terraform obsługuje wielu dostawców usług w chmurze, ponieważ jest zbudowany w celu kodu infrastruktury Roztwór IAC. Za pomocą IAC możemy zarządzać konfiguracją infrastruktury z plikami konfiguracyjnymi (e.G. Wdrażaj, aktualizuj i zarządzaj naszą infrastrukturą, określając wymagane zasoby.) Ustalono zatem, że AWS RDS zapewnia łatwy w zarządzaniu usługą relacyjną. Jednak za pomocą Terraform możemy dodatkowo uprościć zadanie zarządzania RDS.

Co obejmiemy?

W tym przewodniku zobaczymy, w jaki sposób możemy zapewnić instancję AWS RDS DB za pomocą Terraform. Zacznijmy najpierw od instalacji Terraform na Ubuntu 20.04.

Instalowanie Terraform

Hashicorp zapewnia oficjalny pakiet Terraform dla Ubuntu/Debian, Centos/Rhel, Fedora i Amazon Linux. Oprócz tego utrzymuje również skompilowane wstępnie binarne i można go również opracować ze źródła. Do tego przewodnika używamy domyślnego pakietu dostarczonego przez repozytorium pakietu Debian, aby zainstalować Terraform na Ubuntu 20.04.

Krok 1. Pierwsza instalacja Gnupg, Oprogramowanie-properties-common i pakiety Curl w celu weryfikacji podpisu GPG Hashicorp i zainstalowania wymaganego repozytorium:

$ sudo apt-get aktualizacja && sudo apt-get install -y gnupg oprogramowanie-properties-common curl

Krok 2. Teraz dodaj Hashicorp GPG Klucz za pomocą polecenia:

$ curl -fssl https: // apt.wydania.Hashicorp.com/gpg | sudo apt-key add -

Krok 3. Kontynuuj, dodając wymagane repozytorium:

$ sudo apt-add-repozytory „deb [arch = amd64] https: // apt.wydania.Hashicorp.com $ (lsb_release -cs) main ”

Krok 4. Na koniec uruchom polecenie aktualizacji, aby dodać repozytorium i zainstaluj Terraform:

$ sudo apt-get aktualizacja && sudo apt-get instaluj terraform

Krok 5. Sprawdź, czy Terraform jest zainstalowany przez uruchamianie polecenia:

$ terraform -version

Budowanie infrastruktury AWS RDS za pomocą Terraform

Teraz, gdy zainstalowaliśmy Terraform na naszym komputerze lokalnym, możemy kontynuować nasze zadanie pracy z AWS. Jak wspomniano wcześniej, Terraform używa kilku plików konfiguracyjnych dla zasobów dostawczych i każdy z tych plików musi być umieszczony w odpowiednim folderze/katalogu roboczym. Utwórzmy katalog w tym celu:

Krok 1. Zrób folder zawierający pliki konfiguracyjne i zmień katalog na ten folder:

$ mkdir linuxhint-terraform && cd Linuxhint-Terraform

Krok 2. Zrobić 'główny.tf„Plik, który będzie zawierał definicję naszej infrastruktury:

$ nano main.tf

Teraz umieść w nim następującą konfigurację:

Terraform
wymagane_providers
AWS =
Źródło = "Hashicorp/AWS"
wersja = "~> 3.27 "


wymagane_wersja = "> = 0.14.9 "

Dostawca „AWS”
region = „US-West-2”
access_key = „Your-Access-Key”
secret_key = „Your-Secret-Key”

Zasób „aws_db_instance” „rds_instance”
alokated_storage = 20
identyfikator = "rds-terraform"
Storage_Type = "GP2"
silnik = „mysql”
Engine_version = "8.0.27 "
instance_class = "db.T2.mikro "
name = "Your-DB-Nazwa"
Nazwa użytkownika = „Twoja nazwa DB”
hasło = „Twoje hasło”
Publicly_Accessible = true
skip_final_snapshot = true
tagi =
Name = "ExamplerdsServerInstance"

Ten plik zawiera całą konfigurację do wdrożenia za pomocą TerraForm, wystarczy zastąpić odważny tekst własnymi szczegółami konfiguracji. Zbadajmy każdą z sekcji użytych w powyższym pliku:

1. Terraform: definiuje ustawienia Terraform. „Wymagani dostawcy” definiuje dostawcę do użycia z Terraform, a „źródło” jest opcjonalnym parametrem nazwy hosta, przestrzeni nazw i typu dostawcy. W powyższym kodzie źródło jest zdefiniowane jako „Hashicorp/AWS”, które podobnie jak wszyscy dostawcy są instalowane z rejestru Terraform. Powyższy dostawca wskazuje 'rejestr.Terraform.IO/HASHICORP/AWS '.

Atrybut wersji definiuje wersję dostawcy, której chcesz użyć.

2. Dostawca: określa to, z którą platformą chmurową będziesz wchodzić w interakcje (AWS, Azure, GCP itp.). Kontroluje to również region, w którym wdrażasz zasoby i poświadczenia bezpieczeństwa dla użytkownika.

3. Zasób: obejmuje komponenty, które budują infrastrukturę taką jak bazy danych, pamięć, sieć itp. Pierwszy ciąg, tutaj „AWS_INSTANCE„Definiuje typ zasobu, a drugi definiuje niestandardową nazwę, której chcesz użyć. Te dwa są połączone, aby utworzyć unikalny identyfikator tego zasobu, oto jest 'AWS_INSTANCE.RDS_INSTANCE'. W ten sam sposób możemy również dołączyć rozmiary maszyn, nazwy obrazów dysku lub identyfikatory VPC.

Aby zweryfikować lub zweryfikować konfigurację, użyj polecenia:

$ Terraform potwierdza

Inicjowanie katalogu Terraform

Aby pobrać i zainstalować dostawcę, który zdefiniowaliśmy w naszej konfiguracji i innych plikach, musimy zainicjować katalog zawierający ten plik:

$ Terraform init

Z powyższego obrazu, nasz w tym Polecenie się udało i są tutaj również nowe pliki. Jest też jeszcze jedno polecenie „Plan Terraform”, chociaż używanie go nie jest obowiązkowe, ale na przykład ma pewne korzyści.:

  1. Możesz zobaczyć, jak Akcje, które Terraform będzie wykonywać.
  2. Może wskazywać błędy składniowe w plikach konfiguracyjnych.

Terraform nie wspomina o tym poleceniu w swojej dokumentacji, ponieważ kiedy uruchomisz polecenie „Terraform”, ten sam plan zostanie ponownie przedstawiony.

Budowanie infrastruktury

Aby zbudować naszą infrastrukturę, użyj polecenia:

$ Terraform Zastosuj

To najpierw wyprowadzi plan wykonania opisujący zadania Terraform, aby wprowadzić stan infrastruktury do tej zdefiniowanej w pliku konfiguracyjnym. Po tym zatrzyma się i poprosi o potwierdzenie planu kontynuowania. Jeśli wszystko jest ustawione tak, jak chcesz, wpisz „tak”, aby kontynuować:

Jeśli jesteś gotowy na kontynuację, wpisz „Tak”.

Ukończenie procesu zajmie trochę czasu. Po zakończeniu tego procesu pojawi się poniższa wiadomość:

W Twojej konsoli zarządzania AWS instancja RDS zostanie wymieniona:

Niszczenie zasobów

Po zakończeniu i nie potrzebujesz już utworzonych zasobów AWS, możesz po prostu je usunąć za pomocą polecenia:

$ Terraform niszczy

Wniosek

W tym przewodniku dowiedzieliśmy się o udostępnianiu instancji RDS na AWS za pomocą Terraform. Możesz także spróbować skonfigurować instancję EC2 w ten sam sposób.