Maison  >  Article  >  tutoriels informatiques  >  Utiliser Terraform pour gérer les clusters OpenStack

Utiliser Terraform pour gérer les clusters OpenStack

WBOY
WBOYavant
2024-02-18 16:42:23529parcourir

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

Ensuite, installez Terraform :

$ sudo dnf install terraform -y

Vérifier l'installation :

$ terraform –version

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
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”
}
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
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"
}
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
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"
}
}
Initialisez votre Terraform

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

Pour les administrateurs :

$ cd AdminTF

$ terraform init

$ terraform fmt

Pour les locataires :

$ cd TenantTF

$ terraform init

$ terraform fmt

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

Pour les locataires :

$ cd TenantTF

$ terraform validate

$ terraform plan

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

Pour les locataires :🎜
$ cd TenantTF

$ terraform apply

接下来的步骤

之前,我写了一篇关于在树莓派上部署最小 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer