Oktawave Terraform
Czyli jak wykorzystać popularne narzędzie do orkiestracji w celu zdeployowania usług w Oktawave
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 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
1
wget https://releases.hashicorp.com/terraform/0.12.19/terraform_0.12.19_linux_amd64.zip
Copied!
oraz rozpakuj plik:
1
unzip terraform_0.12.19_linux_amd64.zip
Copied!
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:
1
mkdir terraform_oktawave && mv terraform terraform_oktawave/
Copied!
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:
1
ls -la && nano .profile
Copied!
dodając do niego w końcowej części pliku linię:
1
export PATH=$PATH:~/terraform_oktawave
Copied!
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:
1
source ~/.profile
Copied!
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ę:
1
terraform --version
Copied!
w odpowiedzi, powinniśmy uzyskać informację o wersji oprogramowania odpowiadającej pobranej:
1
Terraform v0.12.19
Copied!
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/ którą należy zapisać w katalogu ~/terraform_oktawave a następnie zmienić jego nazwę na terraform-provider-oktawave
przykładowo, dla systemu Linux
1
cd ~/terraform_oktawave && wget https://github.com/oktawave-code/terraform-provider-oktawave/releases/download/v0.4.0/terraform_linux_amd64
Copied!
zmieniamy nazwę wtyczki i nadajemy jej prawa do wykonywania:
1
mv terraform_linux_amd64 terraform-provider-oktawave && chmod +x terraform-provider-oktawave
Copied!
Następnie utwórz prosty plik konfiguracyjny dla infrastruktury:
1
# PROVIDER & ACCESS:
2
provider "oktawave" {
3
access_token="YOUR-ACCESS-TOKEN"
4
api_url = "https://pl1-api.oktawave.com/services"
5
}
6
resource "oktawave_oci" "my_oci" {
7
8
# NAME:
9
instance_name="TERRAFORM_OCI"
10
11
# OCI AUTH METOD:
12
authorization_method_id=1399
13
14
# OVS (STORAGE) PARAMETERS:
15
# disk class (tier)
16
disk_class=896
17
18
# disk size
19
init_disk_size=5
20
21
# IP ADDRESS:
22
# Available values: id of ip address that you want to set as default
23
# Comment: Replace default ip address that would be created as part of instance setup
24
# If you comment this field, ip address will be computed & obtained by default
25
# ip_address_id=id
26
27
# SUBREGION ID:
28
subregion_id=7
29
# INSTANCE CLASS & OS TYPE:
30
type_id = 1268
31
template_id =1021
32
# INSTANCES COUNT:
33
instances_count = 1
34
# FREEMIUM PLAN (IF AVAILABLE):
35
isfreemium=false
36
}
Copied!
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 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:
    1
    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'
    Copied!
    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:
    1
    {"access_token":"5705017483762801c55c131122c9754a","expires_in":86400,"token_type":"Bearer"}
    Copied!
    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):
1
powinno być curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer 5705017483762801c55c131122c9754a' 'https://api.oktawave.com/services/dictionaries/'
Copied!
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
1
terraform init & terraform apply
Copied!
Usunięcie infrastruktury
1
Terraform destroy
Copied!
Last modified 5mo ago