Familiarité avec les cas d'utilisation courants des fonctions intégrées de Terraform

Un tutoriel rapide sur l'utilisation de Terraform pour apprendre et appliquer les différents types de fonctions intégrées, notamment Numérique, Chaîne, Date et Heure dans cet outil IaC.







Les équipes informatiques peuvent utiliser Terraform de HashiCorp pour déployer et gérer les ressources cloud et sur site. Pour optimiser l'utilisation de vos outils, découvrez et installez les fonctionnalités de Terraform.







Les administrateurs peuvent utiliser les fonctions Terraform intégrées pour effectuer diverses opérations mathématiques liées au déploiement et pour effectuer des opérations telles que le codage et le décodage ou la capture et l'affichage des horodatages. Terraform ne prend en charge que les fonctions intégrées ; les fonctions spéciales ou définies par l'utilisateur ne sont pas disponibles.







Utilisez ce didacticiel Terraform pour découvrir les principes de base des fonctionnalités, ainsi que quelques façons courantes de les utiliser dans les déploiements d'entreprise.







Commençons par la syntaxe



La syntaxe de la fonction Terraform commence par le nom de la fonction, suivi de parenthèses contenant zéro à plusieurs arguments, séparés par des virgules:







name(arg-1, arg-2, … arg-n)
      
      





, , timestamp()



, :







> timestamp()
2019-12-07T07:44:12Z
      
      





, file()



:













Terraform



Terraform , . $ {builtinfunction ()}



, :







resource "myinstance" "web" {
    tags = ["${var.env == "prod" ? var.prod_subnet : var.dev_subnet}"]
}
      
      





Terraform, . Terraform, .







. Terraform environment



, production, AWS (AZs). availzone



, , , us-east-1a



, us-east-1b



us-east-1c



. , , :







variable "environment" {
default = {
    "test" = "us-east-1"
    "prod" = "us-west-2"
  }
}

variable "availzone" {
  description = "Availability Zones Mapping"
  default = {
    "us-east-1" = "us-east-1a,us-east-1b,us-east-1c"
    "us-west-2" = "us-west-2a,us-west-2b,us-east-1c"
  }
}
      
      





AZ, lookup()



, , , (,)



split()



.







, element()



. AZ . $ {}



, , Terraform , .







output "availabiltyzones" {
  value = "${element(split(",", lookup(var.availzone,var.environment.prod)), 1)}"
}
      
      





, :













Terraform



Terraform .













, , , / , :



















Terraform . , title()



, lower()



upper()



:













- , :



















Terraform. , timestamp()



:













formatdate()



, :



















Terraform , . , base64encode('string')



Base64, Azure, Base64 . file()



, Base64encode()



:







resource "azurerm_virtual_machine_extension" "Example" {
  name                 = "MyVM"
  location             = "${azurerm_resource_group.test.location}"
  resource_group_name  = "${azurerm_resource_group.test.name}"
  virtual_machine_name = "${azurerm_virtual_machine.test.name}"
  publisher            = "Microsoft.Azure.Extensions"
  type                 = "CustomScript"
  type_handler_version = "2.0"
  settings = <
      
      





(Collections)







Terraform , , :







length([1,12,31,14,5,2])
length("this is a string")
      
      





, , :














All Articles