Terraform
Terraform de voiture. Serverspace vous permet de gérer les ressources cloud à l'aide de l'approche Infrastructure as Code. La gestion se fait à l'aide de fichiers de configuration spéciaux dans lesquels vous décrivez l'état souhaité de votre infrastructure.
Pose Terraform
Tout d'abord, installons Terraform dans votre système d'exploitation. Nous recommandons d'utiliser le Terraform manuel du développeur.
Configuration du fournisseur
-
- Créer un API clé pour le projet qui fonctionnera avec Terraform.
- Créez et accédez au répertoire qui sera utilisé pour travailler avec Terraform Fournisseur.
- Créez et ouvrez le fichier de configuration provider.tf.
- Insérez les informations du fournisseur dans le fichier, où se trouve votre API et enregistrez les modifications :
- Ouvrez une invite de commande et accédez au répertoire dans lequel vous avez créé le fichier. Effectuez une initialisation pour vérifier qu'elle est correcte :
terraform init
Vous verrez le message suivant si l'initialisation est réussie :
Initialisation du backend...
Initialisation des plug-ins du fournisseur...
- Trouver itglobalcom/serverspace versions correspondant à "0.2.0"...
- Installation d'itglobalcom/serverspace v0.2.0 ...
- Installé itglobalcom/serverspace v0.2.0 (auto-signé, ID de clé 062XXXXXXXXXXXX)Les fournisseurs partenaires et communautaires sont signés par leurs développeurs.
Si vous souhaitez en savoir plus sur la signature du fournisseur, vous pouvez en savoir plus ici : https://www.terraform.io/docs/cli/plugins/signature.htmlTerraform a créé un fichier de verrouillage .terraform.lock.hcl pour enregistrer les sélections de fournisseur effectuées ci-dessus. Incluez ce fichier dans votre référentiel de contrôle de version afin que Terraform peut garantir de faire les mêmes sélections par défaut lorsque vous exécutez "terraform init" à l'avenir.
Terraform a été initialisé avec succès !
Vous pouvez maintenant commencer à travailler avec Terraform. Essayez de courir "terraform plan" pour voir les changements nécessaires pour votre infrastructure. Tous Terraform Les commandes devraient maintenant fonctionner.
Si jamais vous définissez ou modifiez des modules ou la configuration du backend pour Terraform, réexécutez cette commande pour réinitialiser votre répertoire de travail. Si vous oubliez, d'autres commandes le détecteront et vous rappelleront de le faire si nécessaire.
terraform {
fournisseurs_requis {
serverspace = {
source = "itglobalcom/serverspace"
version = "0.2.2"
}
}
}variable "s2_token" {
type = chaîne
par défaut = ""
}fournisseur "serverspace"{
clé = var.s2_token
}
Description de votre infrastructure
Avec Serverspace Terraform Fournisseur, vous pouvez créer une infrastructure avec différentes configurations. Vous trouverez une documentation détaillée dans le Terraform Registre.
Prenons l'exemple de la création d'une infrastructure simple avec deux serveurs connectés via un réseau isolé :
- Serveur à Amsterdam appelé "server-1" avec Ubuntu 20.04 système d'exploitation. Configuration du serveur - 2 Go RAM2 CPUs, 40 Go SSD disque de démarrage, 20 Go supplémentaires SSD lecteur, 50 Mbit/s. SSH connexion au serveur. Stockage de données Redis installé sur le serveur.
- Serveur à Amsterdam appelé "server-2" avec Ubuntu 20.04 système d'exploitation. Configuration du serveur - 8 Go RAM4 CPUs, 40 Go SSD lecteur de démarrage, 70 Mbps.
- Réseau isolé à Amsterdam adressant 192.168.0.0/24
Suivez les étapes ci-dessous pour configurer cette infrastructure :
-
- Créer et ouvrir le fichier ssh_key.tf, qui contiendra la partie publique du ssh clé pour créer le serveur.
- Insérer les informations sur la partie publique du ssh clé dans le fichier ssh_key.tf et enregistrez les modifications, en remplaçant le contenu de la variable public_key par votre valeur :
Ressource "serverspace_ssh""terraform"{
nom = "terraform-clé"
clé_publique = "ssh-rsa AAAAB3Nza...JUDjlM= racine@CentOS.local"
}variable "clé_pvt" {
type = chaîne
par défaut = ""
} - Créez et ouvrez le fichier main.tf qui contiendra la description de l'infrastructure.
- Insérez la description de votre infrastructure dans le fichier.
Ressource "serverspace_serveur" "serveur1" {
image = "Ubuntu-20.04-X64"
nom = "serveur-1"
emplacement = "am2"
cpu = 2
ram = 2048boot_volume_size = 40*1024
volume {
nom = "barre"
taille = 20*1024
}nic {
réseau = ""
network_type = "PublicPartagé"
bande passante = 50
}
nic {
réseau = ressource.serverspace_isolated_network.my_net.id
network_type = "Isolé"
bande passante = 0
}ssh_clés = [
ressource.serverspace_ssh.terraform.identifiant,
]lien {
hôte = self.public_ip_addresses[0]
utilisateur = "racine"
taper = "ssh"
clé_privée = fichier(var.pvt_key)
délai = "2m"
}fournisseur "exec à distance" {
en ligne = [
"exporter CHEMIN=$CHEMIN :/usr/bin",
"sudo apt-obtenir la mise à jour",
"sudo apt-get install -y serveur redis",
"sortie 0"
]
}}
Ressource "serverspace_serveur" "serveur2" {
image = "Ubuntu-20.04-X64"
nom = "serveur-2"
emplacement = "am2"
cpu = 4
ram = 8192boot_volume_size = 40*1024
nic {
réseau = ""
network_type = "PublicPartagé"
bande passante = 70
}
nic {
réseau = ressource.serverspace_isolated_network.my_net.id
network_type = "Isolé"
bande passante = 0
}
}Ressource"serverspace_isolated_network" "mon_net" {
emplacement = "am2"
nom = "mon_net"
description = "Exemple pour Terraform"
préfixe_réseau = "192.168.0.0"
masque = 24
} - Pour créer l'infrastructure décrite ci-dessus, exécutez la commande :
terraform vous inscrire
Une fenêtre de dialogue apparaîtra :
Terraform a utilisé les fournisseurs sélectionnés pour générer le plan d'exécution suivant.
Les actions de ressource sont indiquées par les symboles suivants :
+ créerTerraform effectuera les actions suivantes :
# serverspace_isolated_network.my_net sera créé
+ ressource "serverspace_isolated_network" "mon_net" {
+ description = "Exemple pour Terraform"
+ id = (connu après postulation)
+ emplacement = "am2"
+ masque = 24
+ nom = "mon_net"
+ préfixe_réseau = "192.168.0.0"
}# serverspace_server.server1 sera créé
+ ressource "serverspace_serveur" "serveur1" {
+ boot_volume_id = (connu après application)
+ boot_volume_size = 40960
+ cpu = 2
+ id = (connu après postulation)
+ image = "Ubuntu-20.04-X64"
+ emplacement = "am2"
+ nom = "serveur-1"
+ public_ip_addresses = (connu après application)
+ ram = 2048
+ ssh_keys = (connu après application)+ sympa {
+ bande passante = 0
+ id = (connu après postulation)
+ ip_address = (connu après postulation)
+ réseau = (connu après application)
+ network_type = "Isolé"
}
+ sympa {
+ bande passante = 50
+ id = (connu après postulation)
+ ip_address = (connu après postulation)
+ network_type = "PublicPartagé"
}+ volumes {
+ id = (connu après postulation)
+ nom = "barre"
+ taille = 20480
}
}# serverspace_server.server2 sera créé
+ ressource "serverspace_serveur" "serveur2" {
+ boot_volume_id = (connu après application)
+ boot_volume_size = 40960
+ cpu = 4
+ id = (connu après postulation)
+ image = "Ubuntu-20.04-X64"
+ emplacement = "am2"
+ nom = "serveur-2"
+ public_ip_addresses = (connu après application)
+ ram = 8192
+ ssh_keys = (connu après application)+ sympa {
+ bande passante = 0
+ id = (connu après postulation)
+ ip_address = (connu après postulation)
+ réseau = (connu après application)
+ network_type = "Isolé"
}
+ sympa {
+ bande passante = 70
+ id = (connu après postulation)
+ ip_address = (connu après postulation)
+ network_type = "PublicPartagé"
}
}# serverspace_ssh.terraform sera créé
+ ressource "serverspace_ssh""terraform"{
+ id = (connu après postulation)
+ nom = "terraform-clé"
+ clé_publique = "ssh-rsa AAAAB3Nza...JUDjlM= racine@CentOS.local"
}Plan : 4 pour ajouter, 0 pour modifier, 0 pour détruire.
Voulez-vous effectuer ces actions ?
Terraform effectuera les actions décrites ci-dessus.
Seul 'oui' sera accepté pour approuver. - Entrez yes pour créer l'infrastructure.
Entrez une valeur : ouiserverspace_ssh.terraform: Créer...
serverspace_isolated_network.my_net : création...
serverspace_ssh.terraform: Création terminée après 1s [id=3181]
serverspace_isolated_network.my_net : création terminée après 8 s [id=l2n403]
serverspace_server.server2 : création...
serverspace_server.server1 : création...
serverspace_server.server1 : Toujours en cours de création... [10 s se sont écoulées]
serverspace_server.server2 : Toujours en cours de création... [10 s se sont écoulées]
serverspace_server.server1 (exec à distance) : (Lecture de la base de données...
serverspace_server.server1 (exec à distance) : (Lecture de la base de données... 5 %
serverspace_server.server1 (exec à distance) : (Lecture de la base de données... 10 %
serverspace_server.server1 : Création terminée après 1m3s [id=l2s190038]
Postulez complet ! Ressources : 4 ajoutées, 0 modifiées, 0 détruites. - Pour afficher l'infrastructure actuelle, exécutez la commande :
terraform montrer
Cela affichera la configuration actuelle de l'infrastructure :
# serverspace_isolated_network.mon_net :
Ressource "serverspace_isolated_network" "mon_net" {
description = "Exemple pour Terraform"
identifiant = "l2n403"
emplacement = "am2"
masque = 24
nom = "mon_net"
préfixe_réseau = "192.168.0.0"
}# serverspace_server.server1 :
Ressource "serverspace_serveur" "serveur1" {
boot_volume_id = 58909
boot_volume_size = 40960
cpu = 2
identifiant = "l2s190038"
image = "Ubuntu-20.04-X64"
emplacement = "am2"
nom = "serveur-1"
adresses_ip_publiques = [
"45.138.24.19",
]
ram = 2048
ssh_keys = [
3181
]nic {
bande passante = 0
identifiant = 59576
adresse_ip = "192.168.0.1"
réseau = "l2n403"
network_type = "Isolé"
}
nic {
bande passante = 50
identifiant = 59575
adresse_ip = "45.138.24.19"
network_type = "PublicPartagé"
}volume {
identifiant = 58910
nom = "barre"
taille = 20480
}
}# serverspace_server.server2 :
Ressource "serverspace_serveur" "serveur2" {
boot_volume_id = 58911
boot_volume_size = 40960
cpu = 4
identifiant = "l2s190039"
image = "Ubuntu-20.04-X64"
emplacement = "am2"
nom = "serveur-2"
adresses_ip_publiques = [
"31.44.3.68",
]
ram = 8192
ssh_keys = []nic {
bande passante = 0
identifiant = 59578
adresse_ip = "192.168.0.2"
réseau = "l2n403"
network_type = "Isolé"
}
nic {
bande passante = 70
identifiant = 59577
adresse_ip = "31.44.3.68"
network_type = "PublicPartagé"
}
}# serverspace_ssh.terraform:
Ressource "serverspace_ssh""terraform"{
identifiant = "3181"
nom = "terraform-clé"
clé_publique = "ssh-rsa AAAAB3Nza...JUDjlM= racine@CentOS.local"
}
Félicitations pour votre première infrastructure en tant qu'implémentation de code.