Terraform-providers

Terraform Providers



Een van de populaire en open-source Infrastructure as a Code-tools is Terraform. Hiermee kunnen ontwikkelaars uw infrastructuur declaratief definiëren en beheren. Het stelt hen in staat om de infrastructuurbronnen te creëren, beheren en wijzigen met behulp van een eenvoudige en consistente syntaxis, ongeacht het onderliggende cloudplatform of de serviceprovider.

In dit artikel wordt beschreven hoe u de verschillende providers gebruikt en configureert om te communiceren met verschillende cloudplatforms en -services.

Inleiding tot Terraform-providers

Terraform-providers zijn plug-ins waarmee we kunnen communiceren met verschillende cloudplatforms en -services met behulp van Terraform. Deze providers zijn verantwoordelijk voor het vertalen van de Terraform-configuratie naar API-aanroepen die nodig zijn om de bronnen op een specifiek cloudplatform of een specifieke cloudservice te beheren.







Soorten providers in Terraform

In de Terraform-register , zien we drie soorten aanbieders:



Officiële aanbieders

Officiële providers worden onderhouden door het bedrijf HashiCorp dat eigenaar is van Terraform. Deze providers zijn de best beschikbare optie als we de goed gedocumenteerde en up-to-date providers nodig hebben.



AWS-, Microsoft Azure- en Google Cloud Platform-providers kunnen voorbeelden zijn van officiële providers in Terraform.





Partner aanbieders

Externe organisaties onderhouden deze providers en werken samen met HashiCorp om hun diensten officieel te ondersteunen.

GitLab-, MongoDB- en CloudFlare-providers zijn enkele partnerproviders die beschikbaar zijn voor gebruikers.



Community-aanbieders

Communityproviders worden meestal gemaakt door individuen of organisaties van de Terraform-community die de bronnen willen beheren op een cloudplatform of -service die niet wordt ondersteund door een officiële of partnerprovider.

Enkele voorbeelden van communityproviders worden weergegeven in de volgende afbeelding:

Een Terraform-provider gebruiken

Om een ​​Terraform-provider te gebruiken, moeten we een providerblok opnemen in ons configuratiebestand dat de provider specificeert die we willen gebruiken en alle vereiste configuratieparameters zoals inloggegevens of regio.

Zodra de provider is geconfigureerd, kunnen we de bronnen en gegevensbronnen gebruiken die door de provider worden geleverd in onze Terraform-configuratie om de bronnen op het cloudplatform of de cloudservice te beheren.

Laten we een eenvoudig Terraform-configuratiebestand maken dat een EC2-instantie in het AWS-cloudplatform maakt.

aanbieder 'aws' {

versie = '~> 3.0'

regio = 'us-oost-2'

}

bron 'aws_exemplaar' 'mijnEC2' {

welke = 'ami-0a561b65214a47cac'

instantie_type = 't3. klein'

labels = {

Naam = 'nieuwe instantie'

}

}

Eerst definiëren we het providerblok, waarbij we de AWS-provider specificeren en de regio waar de bronnen worden gemaakt. Vervolgens definiëren we ons resourceblok als bestaande uit aws_instance als het resourcetype, 'myEC2' als de resourcenaam en 'ami', 'instance_type' en 'tags' als de attributen. Het resourcetype kan in twee delen worden verdeeld: Provider en Resource. In dit geval is 'aws' de provider en 'instance' de bron. Als iemand tien EC2-exemplaren moet inrichten, kan het kenmerk 'count' worden gebruikt met tien als waarde.

Nu kunnen we de Terraform-stroom uitvoeren, inclusief het uitvoeren van de opdrachten terraform init, terraform plan en terraform apply om de resource te maken die we hebben gedefinieerd.

Met behulp van de Terraform AWS-provider hebben we toegang tot het AWS-cloudplatform en kunnen we efficiënt communiceren met zijn services zonder de AWS-beheerconsole te gebruiken.

Meerdere providers gebruiken in Terraform

In plaats van een enkele provider te gebruiken, stelt Terraform ons in staat om meerdere providers binnen hetzelfde Terraform-configuratiebestand te gebruiken voor interactie met verschillende soorten services en cloudplatforms.

Laten we, voor uw begrip, een voorbeeld nemen waarin we een rekenmachine implementeren in het Google Cloud Platform, een repository in GitHub en een S3-bucket in het AWS-cloudplatform.

aanbieder 'googlen' {

projecteren = 'eerste project'

regio = 'us-west1'

}

aanbieder 'github' {

teken = 'YOUR_GITHUB_TOKEN'

}

aanbieder 'aws' {

versie = '~> 3.0'

regio = 'us-west-2'

}

bron 'google_compute_exemplaar' 'gcpInstance' {

naam = 'nieuwe instantie'

machine_type = 'n1-standaard-1'

zone = 'us-west1-a'

opstartschijf {

initialiseren_params {

afbeelding = 'debian-cloud/debian-10'

}

}

}

bron 'github_repository' 'gitRepo' {

naam = 'nieuwe-repo'

beschrijving = 'Dit is mijn nieuwe archief'

}

bron 'aws_s3_bucket' 'awsBucket' {

emmer = 'nieuwe emmer'

acl = 'privaat'

}

Als eerste stap definiëren we onze providerblokken om de providers (Google, GitHub en AWS) en de benodigde informatie zoals regio, projectnaam, enz. te specificeren. Vervolgens declareren we onze bronnen met behulp van drie bronblokken: 'gcpInstance', ' gitRepo', en 'awsBucket'.

Eerst maken we een rekenengine in het Google Cloud Platform met de 'nieuwe instantie' als naam, 'n1-standaard-1' als machinetype en 'us-west1-a' als beschikbaarheidszone. Het gebruikt Debian als host-besturingssysteem. Vervolgens maken we een GitHub-repository met de naam 'new-repo' en een geschikte beschrijving. Als laatste wordt er een S3 bucket gemaakt met de “new-bucket” als naam en “private” als de ACL (Access Control List) waarde.

Met die drie Terraform-providers kunnen we gemakkelijk communiceren met cloudplatforms en hun diensten.

Best practices voor het werken met Terraform-providers

Versiebeheer van de provider

We moeten de versie van de provider specificeren, omdat dit helpt om consistentie te waarborgen en onverwacht gedrag als gevolg van ingrijpende wijzigingen in nieuwere versies voorkomt.

Provider-authenticatie

We kunnen de veilige authenticatiemechanismen zoals API-sleutels en toegangstokens gebruiken om Terraform te authenticeren en te autoriseren om te communiceren met het respectieve cloudplatform of de betreffende service.

Provider documentatie

Providers hebben vaak specifieke configuratie-opties, functies en beperkingen. Als we deze tutorial begrijpen, kunnen we de provider effectief gebruiken en veelvoorkomende valkuilen vermijden.

Provider-updates

Providers kunnen bugfixes, prestatieverbeteringen en nieuwe functies vrijgeven. Door up-to-date te blijven, kunnen we profiteren van de nieuwste verbeteringen en de compatibiliteit met het ecosysteem van de provider behouden.

Maatschappelijke hulp

We kunnen de online forums, discussieborden en communitykanalen gebruiken om de dagelijkse uitdagingen op te lossen die we tegenkomen bij het gebruik van de providers.

Foutafhandeling en probleemoplossing

Het is een goede gewoonte om vertrouwd te raken met de foutmeldingen, logboeken en foutopsporingstechnieken van de provider, zodat we de problemen efficiënter kunnen diagnosticeren en oplossen.

Conclusie

We hebben een korte introductie gegeven aan Terraform-providers. We bespraken hoe ze kunnen worden gebruikt en geconfigureerd om te communiceren met verschillende cloudplatforms en -services en hoe meerdere providers kunnen worden gebruikt om de bronnen over verschillende cloudplatforms en -services te beheren door middel van gemakkelijk te begrijpen voorbeelden.