Terraform πάροχος Selectel

Terraform πάροχος Selectel

Δημιουργήσαμε έναν επίσημο πάροχο Terraform για συνεργασία με την Selectel. Αυτό το προϊόν επιτρέπει στους χρήστες να εφαρμόσουν πλήρως τη διαχείριση πόρων μέσω της μεθοδολογίας Infrastructure-as-code.

Ο πάροχος υποστηρίζει επί του παρόντος τη διαχείριση πόρων υπηρεσιών "Εικονικό ιδιωτικό σύννεφο" (εφεξής θα αναφέρεται ως VPC). Στο μέλλον, σχεδιάζουμε να προσθέσουμε διαχείριση πόρων για άλλες υπηρεσίες που παρέχονται από την Selectel.

Όπως ήδη γνωρίζετε, η υπηρεσία VPC είναι χτισμένη στο OpenStack. Ωστόσο, λόγω του γεγονότος ότι το OpenStack δεν παρέχει εγγενή εργαλεία για την εξυπηρέτηση του δημόσιου νέφους, εφαρμόσαμε τη λειτουργικότητα που λείπει σε ένα σύνολο πρόσθετων API που απλοποιούν τη διαχείριση σύνθετων σύνθετων αντικειμένων και κάνουν την εργασία πιο βολική. Ορισμένες από τις λειτουργίες που είναι διαθέσιμες στο OpenStack είναι κλειστές από άμεση χρήση, αλλά είναι διαθέσιμες μέσω το API μας.

Ο πάροχος Selectel Terraform περιλαμβάνει πλέον τη δυνατότητα διαχείρισης των ακόλουθων πόρων VPC:

  • έργα και τις ποσοστώσεις τους·
  • χρήστες, τους ρόλους και τα διακριτικά τους·
  • δημόσια υποδίκτυα, συμπεριλαμβανομένων διαπεριφερειακών και VRRP.
  • άδειες λογισμικού.

Ο πάροχος χρησιμοποιεί τη δημόσια βιβλιοθήκη Go για να εργαστεί με το VPC API. Τόσο η βιβλιοθήκη όσο και ο ίδιος ο πάροχος είναι ανοιχτού κώδικα, η ανάπτυξή τους πραγματοποιείται στο Github:

Για να διαχειριστείτε άλλους πόρους cloud, όπως εικονικές μηχανές, δίσκους, συμπλέγματα Kubernetes, μπορείτε να χρησιμοποιήσετε τον πάροχο OpenStack Terraform. Η επίσημη τεκμηρίωση και για τους δύο παρόχους είναι διαθέσιμη στους ακόλουθους συνδέσμους:

Ξεκινώντας

Για να ξεκινήσετε, πρέπει να εγκαταστήσετε το Terraform (οδηγίες και σύνδεσμοι για πακέτα εγκατάστασης βρίσκονται στη διεύθυνση επίσημη ιστοσελίδα).

Για να λειτουργήσει, ο πάροχος απαιτεί ένα κλειδί Selectel API, το οποίο δημιουργείται στο πίνακες ελέγχου λογαριασμού.

Τα μανιφέστα για εργασία με το Selectel δημιουργούνται χρησιμοποιώντας Terraform ή χρησιμοποιώντας ένα σύνολο έτοιμων παραδειγμάτων που είναι διαθέσιμα στο αποθετήριο Github: terraform-παραδείγματα.

Το αποθετήριο με παραδείγματα χωρίζεται σε δύο καταλόγους:

  • ενότητες, που περιέχει μικρές επαναχρησιμοποιήσιμες μονάδες που λαμβάνουν ένα σύνολο παραμέτρων ως είσοδο και διαχειρίζονται ένα μικρό σύνολο πόρων.
  • παραδείγματα, που περιέχει παραδείγματα ενός πλήρους συνόλου διασυνδεδεμένων μονάδων.

Αφού εγκαταστήσετε το Terraform, δημιουργήσετε ένα κλειδί Selectel API και εξοικειωθείτε με τα παραδείγματα, ας προχωρήσουμε σε πρακτικά παραδείγματα.

Ένα παράδειγμα δημιουργίας διακομιστή με τοπικό δίσκο

Ας δούμε ένα παράδειγμα δημιουργίας έργου, χρήστη με ρόλο και εικονικής μηχανής με τοπικό δίσκο: terraform-examples/examples/vpc/server_local_root_disk.

Στο αρχείο vars.tf περιγράφονται όλες οι παράμετροι που θα χρησιμοποιηθούν κατά την κλήση μονάδων. Ορισμένα από αυτά έχουν προεπιλεγμένες τιμές, για παράδειγμα, ο διακομιστής θα δημιουργηθεί στη ζώνη ru-3a με την ακόλουθη διαμόρφωση:

variable "server_vcpus" {
default = 4
}

variable "server_ram_mb" {
default = 8192
}

variable "server_root_disk_gb" {
default = 8
}

variable "server_image_name" {
default = "Ubuntu 18.04 LTS 64-bit"
}

Στο αρχείο κύρια.τφ Ο πάροχος Selectel αρχικοποιείται:

provider "selectel" {
token    = "${var.sel_token}"
}

Αυτό το αρχείο περιέχει επίσης την προεπιλεγμένη τιμή για το κλειδί SSH που θα εγκατασταθεί στον διακομιστή:

module "server_local_root_disk" {
...
server_ssh_key      = "${file("~/.ssh/id_rsa.pub")}"
}

Εάν είναι απαραίτητο, μπορείτε να καθορίσετε ένα διαφορετικό δημόσιο κλειδί. Το κλειδί δεν χρειάζεται να καθοριστεί ως διαδρομή αρχείου, μπορείτε επίσης να προσθέσετε την τιμή ως συμβολοσειρά.

Περαιτέρω σε αυτό το αρχείο εκκινούνται οι ενότητες έργο_με_χρήστη и server_local_root_disk, που διαχειρίζονται τους απαραίτητους πόρους.

Ας δούμε αυτές τις ενότητες με περισσότερες λεπτομέρειες.

Δημιουργία έργου και χρήστη με ρόλο

Η πρώτη ενότητα δημιουργεί ένα έργο και έναν χρήστη με ρόλο σε αυτό το έργο: terraform-examples/modules/vpc/project_with_user.

Ο χρήστης που δημιουργήθηκε θα μπορεί να συνδεθεί στο OpenStack και να διαχειριστεί τους πόρους του. Η ενότητα είναι απλή και διαχειρίζεται μόνο τρεις οντότητες:

  • selectel_vpc_project_v2,
  • selectel_vpc_user_v2,
  • selectel_vpc_role_v2.

Δημιουργία εικονικού διακομιστή με τοπικό δίσκο

Η δεύτερη ενότητα ασχολείται με τη διαχείριση αντικειμένων OpenStack, τα οποία είναι απαραίτητα για τη δημιουργία ενός διακομιστή με έναν τοπικό δίσκο.

Θα πρέπει να δώσετε προσοχή σε ορισμένα από τα ορίσματα που καθορίζονται σε αυτήν την ενότητα για τον πόρο openstack_compute_instance_v2:

resource "openstack_compute_instance_v2" "instance_1" {
  ...

  lifecycle {
    ignore_changes = ["image_id"]
  }

  vendor_options {
    ignore_resize_confirmation = true
  }
}

Επιχείρημα ignore_changes σας επιτρέπει να αγνοήσετε τις αλλαγές χαρακτηριστικών id για την εικόνα που χρησιμοποιείται για τη δημιουργία της εικονικής μηχανής. Στην υπηρεσία VPC, οι περισσότερες δημόσιες εικόνες ενημερώνονται αυτόματα μία φορά την εβδομάδα και ταυτόχρονα id αλλάζει επίσης. Αυτό οφείλεται στις ιδιαιτερότητες του στοιχείου OpenStack - Glance, στο οποίο οι εικόνες θεωρούνται αμετάβλητες οντότητες.

Εάν δημιουργείτε ή τροποποιείτε έναν υπάρχοντα διακομιστή ή δίσκο που έχει ως όρισμα image_id χρησιμοποιούνται id δημόσια εικόνα, και μετά την ενημέρωση αυτής της εικόνας, εκτελώντας ξανά το μανιφέστο Terraform θα αναδημιουργηθεί ο διακομιστής ή ο δίσκος. Χρησιμοποιώντας ένα όρισμα ignore_changes σας επιτρέπει να αποφύγετε μια τέτοια κατάσταση.

Σημείωση: επιχείρημα ignore_changes εμφανίστηκε στο Terraform πριν από πολύ καιρό: τραβήξτε #2525.

Επιχείρημα ignore_resize_confirmation απαιτείται για την επιτυχή αλλαγή του μεγέθους του τοπικού δίσκου, των πυρήνων ή της μνήμης διακομιστή. Τέτοιες αλλαγές γίνονται μέσω του στοιχείου OpenStack Nova χρησιμοποιώντας ένα αίτημα αλλάξετε το μέγεθος. Προεπιλογή Nova μετά από αίτημα αλλάξετε το μέγεθος θέτει τον διακομιστή σε κατάσταση verify_resize και περιμένει για επιπλέον επιβεβαίωση από τον χρήστη. Ωστόσο, αυτή η συμπεριφορά μπορεί να αλλάξει, ώστε η Nova να μην περιμένει πρόσθετες ενέργειες από τον χρήστη.

Το καθορισμένο όρισμα επιτρέπει στην Terraform να μην περιμένει για την κατάσταση verify_resize για τον διακομιστή και να είστε προετοιμασμένοι ώστε ο διακομιστής να βρίσκεται σε ενεργή κατάσταση μετά την αλλαγή των παραμέτρων του. Το όρισμα είναι διαθέσιμο από την έκδοση 1.10.0 του παρόχου OpenStack Terraform: τραβήξτε #422.

Δημιουργία πόρων

Πριν εκτελέσετε τις δηλώσεις, σημειώστε ότι στο παράδειγμά μας, εκκινούνται δύο διαφορετικοί πάροχοι και ο πάροχος OpenStack εξαρτάται από τους πόρους του παρόχου Selectel, καθώς χωρίς τη δημιουργία χρήστη στο έργο, είναι αδύνατο να διαχειριστείτε τα αντικείμενα που ανήκουν σε αυτόν . Δυστυχώς, για τον ίδιο λόγο δεν μπορούμε απλώς να εκτελέσουμε την εντολή ισχύουν τα terraform μέσα στο παράδειγμά μας. Πρώτα πρέπει να κάνουμε κάντε αίτηση εδώ. για ενότητα έργο_με_χρήστη και μετά για όλα τα άλλα.

Σημείωση: Αυτό το ζήτημα δεν έχει επιλυθεί ακόμη στο Terraform, μπορείτε να παρακολουθήσετε τη συζήτηση στο Github στο τεύχος #2430 и τεύχος #4149.

Για να δημιουργήσετε πόρους, μεταβείτε στον κατάλογο terraform-examples/examples/vpc/server_local_root_disk, το περιεχόμενό του θα πρέπει να είναι ως εξής:

$ ls
README.md	   main.tf		vars.tf

Αρχικοποιούμε τις ενότητες χρησιμοποιώντας την εντολή:

$ terraform init

Η έξοδος δείχνει ότι η Terraform κατεβάζει τις πιο πρόσφατες εκδόσεις των παρόχων που χρησιμοποιεί και ελέγχει όλες τις λειτουργικές μονάδες που περιγράφονται στο παράδειγμα.

Πρώτα ας εφαρμόσουμε το module έργο_με_χρήστη. Αυτό απαιτεί τη μη αυτόματη μεταβίβαση τιμών για μεταβλητές που δεν έχουν οριστεί:

  • sel_account με τον αριθμό λογαριασμού Selectel σας·
  • sel_token με το κλειδί σας για Selectel API.
  • Κωδικός Χρήστη με κωδικό πρόσβασης για τον χρήστη του OpenStack.

Οι τιμές για τις δύο πρώτες μεταβλητές πρέπει να λαμβάνονται από πίνακες ελέγχου.

Για την τελευταία μεταβλητή, μπορείτε να βρείτε οποιονδήποτε κωδικό πρόσβασης.

Για να χρησιμοποιήσετε τη μονάδα πρέπει να αντικαταστήσετε τις τιμές SEL_ACCOUNT, SEL_TOKEN и ΚΩΔΙΚΟΣ ΧΡΗΣΤΗ εκτελώντας την εντολή:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply -target=module.project_with_user

Μετά την εκτέλεση της εντολής, το Terraform θα δείξει ποιους πόρους θέλει να δημιουργήσει και θα ζητήσει επιβεβαίωση:

Plan: 3 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.

Enter a value: yes

Μόλις δημιουργηθεί το έργο, ο χρήστης και ο ρόλος, μπορείτε να ξεκινήσετε τη δημιουργία των υπόλοιπων πόρων:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

Κατά τη δημιουργία πόρων, δώστε προσοχή στην έξοδο Terraform με την εξωτερική διεύθυνση IP όπου θα είναι προσβάσιμος ο δημιουργημένος διακομιστής:

module.server_local_root_disk.openstack_networking_floatingip_associate_v2.association_1: Creating...
  floating_ip: "" => "x.x.x.x"

Μπορείτε να εργαστείτε με την εικονική μηχανή που δημιουργήθηκε μέσω SSH χρησιμοποιώντας την καθορισμένη IP.

Επεξεργασία πόρων

Εκτός από τη δημιουργία πόρων μέσω του Terraform, μπορούν επίσης να τροποποιηθούν.

Για παράδειγμα, ας αυξήσουμε τον αριθμό των πυρήνων και της μνήμης για τον διακομιστή μας αλλάζοντας τις τιμές για τις παραμέτρους server_vcpus и server_ram_mb στο αρχείο examples/vpc/server_local_root_disk/main.tf:

-  server_vcpus        = "${var.server_vcpus}"
-  server_ram_mb       = "${var.server_ram_mb}"
+  server_vcpus        = 8
+  server_ram_mb       = 10240

Μετά από αυτό, ελέγχουμε ποιες αλλαγές θα οδηγήσει αυτό χρησιμοποιώντας την ακόλουθη εντολή:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform plan

Ως αποτέλεσμα, η Terraform έκανε μια αλλαγή πόρων openstack_compute_instance_v2 и openstack_compute_flavor_v2.

Λάβετε υπόψη ότι αυτό θα συνεπάγεται επανεκκίνηση της δημιουργημένης εικονικής μηχανής.

Για να εφαρμόσετε τη νέα διαμόρφωση εικονικής μηχανής, χρησιμοποιήστε την εντολή ισχύουν τα terraform, που έχουμε ήδη λανσάρει νωρίτερα.

Όλα τα δημιουργημένα αντικείμενα θα εμφανίζονται στο Πίνακες ελέγχου VPC:

Terraform πάροχος Selectel

Σε μας παραδείγματα αποθετηρίων Μπορείτε επίσης να δείτε δηλώσεις για τη δημιουργία εικονικών μηχανών με μονάδες δίσκου δικτύου.

Παράδειγμα δημιουργίας συμπλέγματος Kubernetes

Πριν προχωρήσουμε στο επόμενο παράδειγμα, θα καθαρίσουμε τους πόρους που δημιουργήσαμε νωρίτερα. Για να το κάνετε αυτό στη ρίζα του έργου terraform-examples/examples/vpc/server_local_root_disk Ας εκτελέσουμε την εντολή για να διαγράψουμε αντικείμενα OpenStack:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform destroy -target=module.server_local_root_disk

Στη συνέχεια, εκτελέστε την εντολή για να διαγράψετε τα αντικείμενα Selectel VPC API:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform destroy -target=module.project_with_user

Και στις δύο περιπτώσεις, θα χρειαστεί να επιβεβαιώσετε τη διαγραφή όλων των αντικειμένων:

Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.

Enter a value: yes

Το παρακάτω παράδειγμα βρίσκεται στον κατάλογο terraform-examples/examples/vpc/kubernetes_cluster.

Αυτό το παράδειγμα δημιουργεί ένα έργο, έναν χρήστη με ρόλο στο έργο και δημιουργεί ένα σύμπλεγμα Kubernetes. Στο αρχείο vars.tf μπορείτε να δείτε προεπιλεγμένες τιμές, όπως τον αριθμό των κόμβων, τα χαρακτηριστικά τους, την έκδοση Kubernetes κ.λπ.

Για να δημιουργήσουμε πόρους παρόμοιους με το πρώτο παράδειγμα, πρώτα από όλα θα ξεκινήσουμε την προετοιμασία των λειτουργικών μονάδων και τη δημιουργία πόρων λειτουργιών έργο_με_χρήστηκαι μετά δημιουργώντας όλα τα άλλα:

$ terraform init

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply -target=module.project_with_user

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

Θα μεταφέρουμε τη δημιουργία και τη διαχείριση των συμπλεγμάτων Kubernetes μέσω του στοιχείου OpenStack Magnum. Μπορείτε να μάθετε περισσότερα σχετικά με τον τρόπο εργασίας με ένα σύμπλεγμα σε ένα από μας προηγούμενα άρθρα, καθώς και στο βάση γνώσεων.

Κατά την προετοιμασία του συμπλέγματος, θα δημιουργηθούν δίσκοι και εικονικές μηχανές και θα εγκατασταθούν όλα τα απαραίτητα στοιχεία. Η προετοιμασία διαρκεί περίπου 4 λεπτά, κατά τη διάρκεια των οποίων το Terraform θα εμφανίζει μηνύματα όπως:

module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)

Μόλις ολοκληρωθεί η εγκατάσταση, το Terraform θα υποδείξει ότι το σύμπλεγμα είναι έτοιμο και θα εμφανίσει το αναγνωριστικό του:

module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Creation complete after 4m20s (ID: 3c8...)

Apply complete! Resources: 6 added, 0 changed, 0 destroyed.

Για να διαχειριστείτε το δημιουργημένο σύμπλεγμα Kubernetes μέσω του βοηθητικού προγράμματος kubectl πρέπει να λάβετε το αρχείο πρόσβασης συμπλέγματος. Για να το κάνετε αυτό, μεταβείτε στο έργο που δημιουργήθηκε μέσω του Terraform στη λίστα των έργων στο λογαριασμό σας:

Terraform πάροχος Selectel

Στη συνέχεια, ακολουθήστε τον σύνδεσμο like xxxxxx.selvpc.ruπου εμφανίζεται κάτω από το όνομα του έργου:

Terraform πάροχος Selectel

Για πληροφορίες σύνδεσης, χρησιμοποιήστε το όνομα χρήστη και τον κωδικό πρόσβασης που δημιουργήσατε μέσω του Terraform. Αν δεν έχεις απατήσει vars.tf ή κύρια.τφ για το παράδειγμά μας, ο χρήστης θα έχει το όνομα tf_user. Πρέπει να χρησιμοποιήσετε την τιμή της μεταβλητής ως κωδικό πρόσβασης TF_VAR_user_password, το οποίο καθορίστηκε κατά την εκκίνηση ισχύουν τα terraform νωρίτερα.

Μέσα στο έργο πρέπει να μεταβείτε στην καρτέλα Kubernetes:

Terraform πάροχος Selectel

Εδώ βρίσκεται το σύμπλεγμα που δημιουργήθηκε μέσω Terraform. Λήψη αρχείου για kubectl μπορείτε στην καρτέλα «Πρόσβαση»:

Terraform πάροχος Selectel

Οι οδηγίες εγκατάστασης βρίσκονται στην ίδια καρτέλα. kubectl και χρήση των ληφθέντων config.yaml.

Μετά την εκτόξευση kubectl και ορίζοντας τη μεταβλητή περιβάλλοντος KUBECONFIG μπορείτε να χρησιμοποιήσετε το Kubernetes:

$ kubectl get pods --all-namespaces

NAMESPACE        NAME                                    READY  STATUS  RESTARTS AGE
kube-system   coredns-9578f5c87-g6bjf                      1/1   Running   0 8m
kube-system   coredns-9578f5c87-rvkgd                     1/1   Running   0 6m
kube-system   heapster-866fcbc879-b6998                 1/1   Running   0 8m
kube-system   kube-dns-autoscaler-689688988f-8cxhf             1/1   Running   0 8m
kube-system   kubernetes-dashboard-7bdb5d4cd7-jcjq9          1/1   Running   0 8m
kube-system   monitoring-grafana-84c97bb64d-tc64b               1/1   Running   0 8m
kube-system   monitoring-influxdb-7c8ccc75c6-dzk5f                1/1   Running   0 8m
kube-system   node-exporter-tf-cluster-rz6nggvs4va7-minion-0 1/1   Running   0 8m
kube-system   node-exporter-tf-cluster-rz6nggvs4va7-minion-1 1/1   Running   0 8m
kube-system   openstack-cloud-controller-manager-8vrmp        1/1   Running   3 8m
prometeus-monitoring   grafana-76bcb7ffb8-4tm7t       1/1   Running   0 8m
prometeus-monitoring   prometheus-75cdd77c5c-w29gb           1/1   Running   0 8m

Ο αριθμός των κόμβων συμπλέγματος μπορεί εύκολα να αλλάξει μέσω Terraform.
Στο αρχείο κύρια.τφ καθορίζεται η ακόλουθη τιμή:

cluster_node_count = "${var.cluster_node_count}"

Αυτή η τιμή αντικαθίσταται από vars.tf:

variable "cluster_node_count" {
default = 2
}

Μπορείτε να αλλάξετε είτε την προεπιλεγμένη τιμή σε vars.tf, ή καθορίστε την απαιτούμενη τιμή απευθείας στο κύρια.τφ:

-  cluster_node_count = "${var.cluster_node_count}"
+  cluster_node_count = 3

Για να εφαρμόσετε τις αλλαγές, όπως στην περίπτωση του πρώτου παραδείγματος, χρησιμοποιήστε την εντολή ισχύουν τα terraform:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

Όταν αλλάξει ο αριθμός των κόμβων, το σύμπλεγμα θα παραμείνει διαθέσιμο. Αφού προσθέσετε έναν κόμβο μέσω Terraform, μπορείτε να τον χρησιμοποιήσετε χωρίς πρόσθετη διαμόρφωση:

$ kubectl get nodes
NAME                               STATUS                     ROLES     AGE   VERSION
tf-cluster-rz6nggvs4va7-master-0   Ready,SchedulingDisabled   master    8m    v1.12.4
tf-cluster-rz6nggvs4va7-minion-0   Ready                      <none>    8m    v1.12.4
tf-cluster-rz6nggvs4va7-minion-1   Ready                      <none>    8m    v1.12.4
tf-cluster-rz6nggvs4va7-minion-2   Ready                      <none>    3m    v1.12.4

Συμπέρασμα

Σε αυτό το άρθρο γνωρίσαμε τους κύριους τρόπους εργασίας "Εικονικό ιδιωτικό σύννεφο" μέσω Terraform. Θα χαρούμε να χρησιμοποιήσετε τον επίσημο πάροχο Selectel Terraform και να παρέχετε σχόλια.

Οποιαδήποτε σφάλματα εντοπίστηκαν στον πάροχο Selectel Terraform μπορούν να αναφερθούν μέσω Ζητήματα Github.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο