April 25, 2024

De CDK voor Terraform verbetert HCL-transformatie en Terraform-cloudinteracties

De CDK voor Terraform verbetert HCL-transformatie en Terraform-cloudinteracties

HashiCorp heeft het Een aantal nieuwe verbeteringen uitgebracht naar CDK voor Terraform (CDKTF). Deze verbeteringen omvatten verbeterde typedwang, iteratorondersteuning en functieondersteuning. Andere verbeteringen Streef naar ervaring met het werken met CDKTF binnen Terraform Cloud of Terraform Enterprise. Dit omvat verbeteringen aan de planning, implementatie en geautomatiseerde creatie van Terraform-werkruimten.

De CDK maakt het schrijven van Terraform-configuraties mogelijk in een aantal programmeertalen, waaronder C#, Python, TypeScript, Go en Java. Bevat ondersteuning voor alle bestaande Terraforms aanbieders En eenheden. CDKTF-toepassingscode wordt gecompileerd in JSON-uitvoer die rechtstreeks met Terraform kan worden geïmplementeerd.

Versie 0.16 verbetert typedwang door de convert volgorde Komt overeen met het type waarde dat aan het attribuut wordt toegewezen. de convert De opdracht wordt gebruikt om reeds bestaande Terraform HCL-code om te zetten in een CDKTF-compatibele taal. De opdracht vergelijkt nu het type dat is gegenereerd door de HCL en vergelijkt het met het schema van de provider. Als het type niet overeenkomt, wordt de inkomende waarde geforceerd naar het juiste type. Deze wijziging voorkomt bugs die mogelijk in eerdere versies zijn opgetreden, aangezien Terraform automatisch primitieve typen converteert zodat deze overeenkomen met het bronschema.

De release verbeterde ook de conversie van beschrijvende argumenten zoals count En for_each. Nu kan het beschrijvende attribuut van de telling worden weergegeven als een iterator via een bestand ontsnappingsplan. Bovendien kan convert iterators gebruiken voor for_eachEn counten dynamische blokken zonder ontsnappingsluik.

Het volgende TypeScript-voorbeeld gebruikt de TerraformCount functie Om het opgegeven aantal exemplaren te maken zoals gespecificeerd in servers.numberValue:


const servers = new TerraformVariable(this, "servers", {
  type: "number",
});

const count = TerraformCount.of(servers.numberValue);

new Instance(this, "server", {
  count: count,
  ami: "ami-a1b2c3d4",
  instanceType: "t2.micro",
  tags: {
    Name: "Server ${" + count.index + "}",
  },
});

HashiCorp Beveelt het gebruik van iteraties aan Bij het verwijzen naar dynamische gegevens die pas bekend zijn nadat Terraform de configuratie toepast. Voor statische gegevens raden ze aan om loops te gebruiken binnen de specifieke programmeertaal. Escape-slots zijn vereist bij het verwijzen naar een specifieke index binnen een lijst. Dit komt omdat CDKTF lijsten impliciet converteert naar collecties bij het herhalen ervan.

Transform kan nu ook Terraform-functies omzetten in de juiste CDKTF-functie. Dit verbetert de leesbaarheid van de code en zorgt ervoor dat automatisch aanvullen correct werkt. Met deze wijziging wordt de volgende HCL-expressie:


replace("hello-${22+22}", "44", "world")

Het wordt omgezet in:


cdktf.Fn.replace("hello-" + cdktf.Token.asString(cdktf.Op.add(22, 22)), "44", "world")

de Versie 0.15 Een aantal verbeteringen aangebracht in de manier waarop CDKTF samenwerkt met zowel Terraform Cloud- als Terraform Enterprise-omgevingen. In eerdere versies was tijdens het configureren van de stapel met CDKTF de interactie met Terraform binnen Terraform Cloud verborgen. Het kan alleen worden bekeken via een URL.

Deze release heeft de op Terraform Cloud API gebaseerde implementatie vervangen door een implementatie die rechtstreekse aanroepen naar de Terraform CLI maakt. Hierdoor kan het volledige plan tot in detail worden bekeken. Bovendien ondersteunt CDKTF nu extra functies zoals kostenramingen en Sentinel-beleid bij uitvoering binnen de Terraform Cloud.

De release introduceerde ook het automatisch maken van werkruimten wanneer plan en teams of applicatie en implementatie worden gelanceerd. Dit verbetert het eerdere gedrag waarbij werkruimten handmatig moesten worden gemaakt via Terraform Cloud of Enterprise UI.

Meer informatie over de inhoud van de release is te vinden op blogpost En Upgrade gids. HashiCorp heeft een extensie Discussieforum voor vragen. de CDK voor Terraform-zelfstudies Aanbevolen voor gebruikers die nieuw zijn bij CDKTF.