Maison > tutoriels informatiques > connaissances en informatique > Utiliser Terraform pour gérer les clusters OpenStack

Utiliser Terraform pour gérer les clusters OpenStack

WBOY
Libérer: 2024-02-18 16:42:23
avant
549 Les gens l'ont consulté

Utiliser Terraform pour gérer les clusters OpenStack

Terraform est un langage déclaratif qui sert de modèle à l'infrastructure que vous construisez.

Après avoir eu un environnement de production OpenStack et un laboratoire à domicile pendant un certain temps, j'ai confirmé l'importance du déploiement et de la gestion des charges de travail du point de vue de l'administrateur et du locataire.

Terraform est un outil logiciel open source permettant de gérer l'infrastructure en tant que code, en créant des plans d'infrastructure via un langage déclaratif. Il prend en charge la gestion Git et convient à GitOps.

Cet article présente les bases de l'utilisation de Terraform pour gérer les clusters OpenStack. J'ai recréé le projet de démonstration OpenStack à l'aide de Terraform.

Installer Terraform

J'utilise CentOS comme tremplin pour exécuter Terraform. D'après la documentation officielle, la première étape consiste à ajouter le dépôt Hashicorp :

$ sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
Copier après la connexion

Ensuite, installez Terraform :

$ sudo dnf install terraform -y
Copier après la connexion

Vérifier l'installation :

$ terraform –version
Copier après la connexion

Si vous voyez le numéro de version renvoyé, cela signifie que Terraform est installé.

Créer un script Terraform pour le fournisseur OpenStack

Dans Terraform, vous avez besoin d'un fournisseur, qui est un convertisseur que Terraform appelle pour convertir votre .tf en un appel API vers la plateforme que vous orchestrez.

Il existe trois types de prestataires : officiel, partenaire et communautaire :

  • Fournisseur officiel maintenu par Hashicorp.
  • Les fournisseurs partenaires sont gérés par des entreprises technologiques qui travaillent avec Hashicorp.
  • Les fournisseurs communautaires sont gérés par des membres de la communauté open source.

Il existe un bon fournisseur communautaire d'OpenStack sur ce lien. Pour utiliser ce fournisseur, créez un fichier .tf文件,并命名为main.tf et nommez-le

.

$ vi main.tf
Copier après la connexion
main.tfAjoutez ce qui suit à

 : 

terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source= "terraform-provider-openstack/openstack"
version = "1.49.0"
}
}
}

provider "openstack" {
user_name = “OS_USERNAME”
tenant_name = “OS_TENANT”
password= “OS_PASSWORD”
auth_url= “OS_AUTH_URL”
region= “OS_REGION”
}
Copier après la connexion
OS_USERNAMEOS_TENANTOS_PASSWORDOS_AUTH_URLOS_REGIONVous devez modifier les

variables pour que cela fonctionne.

Créer un fichier de gestion Terraform

Les fichiers de gestion OpenStack se concentrent sur le provisionnement des réseaux externes, le routage, les utilisateurs, les images, les profils de locataires et les quotas.

Cet exemple fournit des styles, des itinéraires vers des réseaux externes, des images de test, des profils de locataires et des utilisateurs.

AdminTFTout d'abord, créez un

répertoire pour l'approvisionnement des ressources :

$ mkdir AdminTF

$ cd AdminTF
Copier après la connexion
main.tfDans

, ajoutez ce qui suit :

terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source= "terraform-provider-openstack/openstack"
version = "1.49.0"
}
}
}

provider "openstack" {
user_name = “OS_USERNAME”
tenant_name = “admin”
password= “OS_PASSWORD”
auth_url= “OS_AUTH_URL”
region= “OS_REGION”
}

resource "openstack_compute_flavor_v2" "small-flavor" {
name= "small"
ram = "4096"
vcpus = "1"
disk= "0"
flavor_id = "1"
is_public = "true"
}

resource "openstack_compute_flavor_v2" "medium-flavor" {
name= "medium"
ram = "8192"
vcpus = "2"
disk= "0"
flavor_id = "2"
is_public = "true"
}

resource "openstack_compute_flavor_v2" "large-flavor" {
name= "large"
ram = "16384"
vcpus = "4"
disk= "0"
flavor_id = "3"
is_public = "true"
}

resource "openstack_compute_flavor_v2" "xlarge-flavor" {
name= "xlarge"
ram = "32768"
vcpus = "8"
disk= "0"
flavor_id = "4"
is_public = "true"
}

resource "openstack_networking_network_v2" "external-network" {
name = "external-network"
admin_state_up = "true"
external = "true"
segments {
network_type = "flat"
physical_network = "physnet1"
}
}

resource "openstack_networking_subnet_v2" "external-subnet" {
name= "external-subnet"
network_id= openstack_networking_network_v2.external-network.id
cidr= "10.0.0.0/8"
gateway_ip= "10.0.0.1"
dns_nameservers = ["10.0.0.254", "10.0.0.253"]
allocation_pool {
start = "10.0.0.1"
end = "10.0.254.254"
}
}

resource "openstack_networking_router_v2" "external-router" {
name= "external-router"
admin_state_up= true
external_network_id = openstack_networking_network_v2.external-network.id
}

resource "openstack_images_image_v2" "cirros" {
name = "cirros"
image_source_url = "https://download.cirros-cloud.net/0.6.1/cirros-0.6.1-x86_64-disk.img"
container_format = "bare"
disk_format= "qcow2"

properties = {
key = "value"
}
}

resource "openstack_identity_project_v3" "demo-project" {
name = "Demo"
}

resource "openstack_identity_user_v3" "demo-user" {
name = "demo-user"
default_project_id = openstack_identity_project_v3.demo-project.id
password = "demo"
}
Copier après la connexion
Créer un fichier Terraform locataire

En tant que locataire, vous créez généralement des machines virtuelles. Vous créez également des groupes de réseau et de sécurité pour ces machines virtuelles.

Cet exemple utilise l'utilisateur créé par le fichier Admin ci-dessus.

TenantTFTout d'abord, créez un

répertoire pour le provisionnement lié aux locataires :

$ mkdir TenantTF
$ cd TenantTF
Copier après la connexion
main.tfDans

, ajoutez ce qui suit :

terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source= "terraform-provider-openstack/openstack"
version = "1.49.0"
}
}
}

provider "openstack" {
user_name = “demo-user”
tenant_name = “demo”
password= “demo”
auth_url= “OS_AUTH_URL”
region= “OS_REGION”
}

resource "openstack_compute_keypair_v2" "demo-keypair" {
name = "demo-key"
public_key = "ssh-rsa ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
}


resource "openstack_networking_network_v2" "demo-network" {
name = "demo-network"
admin_state_up = "true"
}

resource "openstack_networking_subnet_v2" "demo-subnet" {
network_id = openstack_networking_network_v2.demo-network.id
name = "demo-subnet"
cidr = "192.168.26.0/24"
}

resource "openstack_networking_router_interface_v2" "demo-router-interface" {
router_id = “XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”
subnet_id = openstack_networking_subnet_v2.demo-subnet.id
}

resource "openstack_compute_instance_v2" "demo-instance" {
name= "demo"
image_id= "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
flavor_id = "3"
key_pair= "demo-key"
security_groups = ["default"]

metadata = {
this = "that"
}

network {
name = "demo-network"
}
}
Copier après la connexion
Initialisez votre Terraform

Après avoir créé le fichier Terraform, vous devez initialiser Terraform.

Pour les administrateurs :

$ cd AdminTF

$ terraform init

$ terraform fmt
Copier après la connexion

Pour les locataires :

$ cd TenantTF

$ terraform init

$ terraform fmt
Copier après la connexion

Explication de la commande :
  • terraform init
  • Téléchargez le fournisseur à partir de la source miroir pour provisionner ce projet.
  • terraform fmt
  • Formatez le fichier pour l'utiliser dans le référentiel.

Créer un plan Terraform

Ensuite, créez un plan pour voir quelles ressources seront créées.

Pour les administrateurs :

$ cd AdminTF

$ terraform validate

$ terraform plan
Copier après la connexion

Pour les locataires :

$ cd TenantTF

$ terraform validate

$ terraform plan
Copier après la connexion

Explication de la commande :
  • terraform validate验证.tfterraform validate Vérifiez
  • si la syntaxe est correcte.
  • terraform plan
  • Créez un fichier de plan dans le cache et toutes les ressources gérées peuvent être suivies au fur et à mesure de leur création et de leur destruction.

Appliquez votre premier TF

terraform applyPour déployer des ressources, utilisez la commande

. Cette commande applique tous les états de ressources dans le fichier plan.

Pour les administrateurs :

$ cd AdminTF

$ terraform apply
Copier après la connexion

Pour les locataires :🎜
$ cd TenantTF

$ terraform apply
Copier après la connexion

接下来的步骤

之前,我写了一篇关于在树莓派上部署最小 OpenStack 集群的 文章。你可以找到更详细的Terraform 和 Ansible配置,并通过 GitLab 实现一些 CI/CD。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:mryunwei.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal