# Oktawave Terraform

Oktawave umożliwia wdrażanie na infrastrukturze wielu usług naraz poprzez zastosowanie orkiestracji Terraform. W praktyce, należy zainstalować Terraform, pobrać wtyczkę Providera z GitHub'a Oktawave, żeby po autoryzacji był gotowy do użycia. Samo pobranie tokena potrzebnego do uzyskania autoryzacji w ramach API Oktawave, jak również pobranie wartości dla plików konfiguracyjnych zostało opisane w dalszej części artykułu.

Dostępne są 2 ścieżki instalacji Terraform'a:

  • pobranie wykonywalnej binarki
  • zainstalowanie go za pomocą APT lub właściwego dla systemu managera pakietów.

Poniższy przykład opiera się na pobraniu wykonywalnej binarki

# Pobranie pliku wykonywalnego i uruchomienie jej razem z wtyczkami providera:

1. Pobierz konkretną paczkę TUTAJ (opens new window) i rozpakuj ją, na przykład w katalogu domowym użytkownika:

Polecenie może różnić się w zależności od nazwy pobranego pliku

wget https://releases.hashicorp.com/terraform/0.12.19/terraform_0.12.19_linux_amd64.zip 

oraz rozpakuj plik:

unzip terraform_0.12.19_linux_amd64.zip

2. Na potrzeby instalacji utwórz katalog terraform_oktawave do którego należy przenieść plik o nazwie terraform powstały w wyniku rozpakowania archiwum:

mkdir terraform_oktawave && mv terraform terraform_oktawave/

3. Następnie należy dodać ścieżkę (PATH) w ukrytym pliku .profile powłoki BASH (można użyć dowolnego edytora) do folderu z plikiem wykonywalnym Terraform:

ls -la && nano .profile

dodając do niego w końcowej części pliku linię:

export PATH=$PATH:~/terraform_oktawave

4. Zapisz zmiany i wyjdź z edytora.

Jeśli katalog terraform został umieszczony w innym miejscu, należy zmienić ścieżkę przy $PATH: odpowiednio

5. Następnym krokiem jest aktualizacja ścieżki PATH dla obecnej sesji:

source ~/.profile

Dzięki temu będziesz mógł wywołać plik wykonywalny z dowolnego miejsca w systemie. Teraz należy sprawdzić, czy można wywołać aplikację:

terraform --version

w odpowiedzi, powinniśmy uzyskać informację o wersji oprogramowania odpowiadającej pobranej:

Terraform v0.12.19

Terraform korzysta z wtyczek zlokalizowanych w domyślnym katalogu instalacji. Nie jest on jednak w stanie pobierać innych niż domyślne, stąd żeby wykorzystać dodatek Oktawave terraform przejdź do katalogu ~/terraform_oktawave i pobierz odpowiednią dla systemu wtyczkę stąd:
https://github.com/oktawave-code/terraform-provider-oktawave/releases/ (opens new window)
którą należy zapisać w katalogu ~/terraform_oktawave a następnie zmienić jego nazwę na terraform-provider-oktawave

przykładowo, dla systemu Linux

cd ~/terraform_oktawave && wget https://github.com/oktawave-code/terraform-provider-oktawave/releases/download/v0.4.0/terraform_linux_amd64

zmieniamy nazwę wtyczki i nadajemy jej prawa do wykonywania:

mv terraform_linux_amd64 terraform-provider-oktawave && chmod +x terraform-provider-oktawave

Następnie utwórz prosty plik konfiguracyjny dla infrastruktury:

# PROVIDER & ACCESS:
provider "oktawave" {
 access_token="YOUR-ACCESS-TOKEN"
 api_url = "https://pl1-api.oktawave.com/services"
}
resource "oktawave_oci" "my_oci" {

# NAME:
instance_name="TERRAFORM_OCI"

# OCI AUTH METOD:
authorization_method_id=1399

# OVS (STORAGE) PARAMETERS:
# disk class (tier)
disk_class=896

# disk size
init_disk_size=5

# IP ADDRESS:
# Available values: id of ip address that you want to set as default
# Comment: Replace default ip address that would be created as part of instance setup
# If you comment this field, ip address will be computed & obtained by default
# ip_address_id=id

# SUBREGION ID: 
subregion_id=7
# INSTANCE CLASS & OS TYPE:
type_id = 1268
template_id =1021
# INSTANCES COUNT:
instances_count = 1
# FREEMIUM PLAN (IF AVAILABLE):
isfreemium=false
}

Token wygenerowany w PL-1-WAW można również wykorzystać podczas operacji w PL-2-KRK.

Endpoint API dla regionu PL-2-KRK:
https://pl2-api.oktawave.com/services

Plik należy zapisać w katalogu aplikacją/plikiem wykonywalnym terraform. W katalogu tym powinny się znajdować w sumie 3 pliki, żeby wszystko zadziałało:

  • plik wykonywalny terraform
  • plik wykonywalny terraform-provider-oktawave
  • plik konfiguracyjny dla infrastruktury z rozszerzeniem .tf

# Autoryzacja, tworzenie klienta i pobranie tokena

  1. Stworzenie klienta API do pobrania tokena W Nowym Panelu Administracyjnym (opens new window) przejdź do zakładki Konto: Zarządzanie kontem > Klienci API. Tworzymy klienta, nadajemy mu prawa i ZAPISUJEMY Id klienta API i Secret klienta API, które nam zwróci system po zapisaniu zmian.

  2. Pobranie tokena Token autoryzacyjny (Bearer) ma format kilkunastu znaków i jest otrzymywany w odpowiedzi na żądanie autoryzacyjne do API Oktawave. Pobierz go następującym żądaniem:

    curl -k -X POST -d "grant_type=password&username=[LOGIN]&password=[HASLO-DO-PANELU]&scope=oktawave.api" -u "[Id klienta API]:[Secret klienta API]" 'https://id.oktawave.com/core/connect/token'
    

    w żądaniu należy uzupełnić dane autoryzacyjne do Panelu NAP oraz ID klienta API/Secret klienta API.

    w odpowiedzi otrzymamy nasz token - Bearer, na przykład:

    {"access_token":"5705017483762801c55c131122c9754a","expires_in":86400,"token_type":"Bearer"}
    

    3. Zapisz wartość "access_token" do późniejszego wykorzystania.

# Skąd wziąć dane do pliku konfiguracyjnego?

Dane do konfig'a .tf można pobrać ze słownika w API Oktawave. Żeby to zrobić należy podać jedno żądanie, w którym musisz przekazać otrzymany na drodze autoryzacji TOKEN (Bearer):

powinno być curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer 5705017483762801c55c131122c9754a' 'https://api.oktawave.com/services/dictionaries/'

W przypadku gdy po dictionaries nic nie wpiszesz, żądanie zwróci listę wszystkich słowników, jeśli chcesz konkretny z nich otworzyć, w zależności od zasobu podaj jego ID np. 12. Więcej o słownikach tutaj.

Uruchomienie infrastruktury

terraform init & terraform apply

Usunięcie infrastruktury

Terraform destroy