Déployer ses ressources avec l'outil IaC Terraform !
DevOps
Publié le
Karl Certa Infrastructure Engineer | Linux & AutomatisationPlus de 6 ans sur Linux et Windows en production, du support à l'automatisation d'infra. J'écris ici sur ce que je pratique. Certifié AWS Solutions Architect Associate Basé à Dublin, disponible tout de suite LinkedIn karlcerta.com GitHub Karl Certa
Terraform est un outil d’infrastructure as code pour créer, modifier et versionner l’infrastructure de manière sécurisée et efficace sur tous les providers cloud.
variable "vsphere_server" { description = "Serveur vCenter" type = string default = "vcenter.example.com"}variable "vsphere_user" { description = "Utilisateur vSphere" type = string}variable "vsphere_password" { description = "Mot de passe vSphere" type = string sensitive = true}variable "vm_name" { description = "Nom de base des VMs" type = string default = "terraform-vm"}variable "vm_count" { description = "Nombre de VMs à créer" type = number default = 1}
Outputs (outputs.tf)
output "vm_name" { description = "Nom de la VM créée" value = vsphere_virtual_machine.web.name}output "vm_ip" { description = "IP de la VM" value = vsphere_virtual_machine.web.default_ip_address}output "vm_uuid" { description = "UUID de la VM" value = vsphere_virtual_machine.web.uuid sensitive = false}
📦 Modules
Créer un module
# modules/vm/main.tfresource "vsphere_virtual_machine" "this" { name = var.vm_name resource_pool_id = var.resource_pool_id datastore_id = var.datastore_id num_cpus = var.num_cpus memory = var.memory guest_id = var.guest_id network_interface { network_id = var.network_id } disk { label = "disk0" size = var.disk_size } clone { template_uuid = var.template_uuid customize { linux_options { host_name = var.vm_name domain = var.domain } network_interface { ipv4_address = var.ip_address ipv4_netmask = 24 } ipv4_gateway = var.gateway } }}# modules/vm/variables.tfvariable "vm_name" { description = "Nom de la VM" type = string}variable "num_cpus" { description = "Nombre de CPUs" type = number default = 2}variable "memory" { description = "Mémoire en MB" type = number default = 4096}