Interrogazione dei dati con le data source
Utilizzi le data source per recuperare informazioni sull'infrastruttura esistente o su servizi esterni, così da creare configurazioni più dinamiche e adattabili.
Interrogazione dei dati con le data source è una lezione Terraform Infrastructure as Code gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Terraform Infrastructure as Code, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Terraform Infrastructure as Code include 4 lezioni in totale.
Che cosa sono le origini dati?
In Terraform, spesso è necessario fare riferimento a un'infrastruttura esistente o a dati esterni non gestiti dalla configurazione corrente.
È qui che entrano in gioco le origini dati! Consentono alla configurazione Terraform di recuperare informazioni su risorse già create o su servizi esterni.
Origini dati e risorse a confronto
È importante distinguere le origini dati dalle risorse.
- Le risorse definiscono l'infrastruttura che Terraform creerà, aggiornerà o eliminerà.
- Le origini dati recuperano soltanto informazioni sull'infrastruttura o sui dati esistenti. Non creano né modificano nulla.
Le si può considerare come query di sola lettura per l'infrastruttura.
Casi d'uso pratici
Le origini dati sono estremamente utili per:
- Individuare l'ID di un Virtual Private Cloud (VPC) esistente.
- Recuperare l'ultima Amazon Machine Image (AMI) per un'istanza EC2.
- Recuperare segreti da un servizio di gestione dei segreti.
- Cercare record DNS o configurazioni di rete.
Rendono le configurazioni più dinamiche e meno basate su valori codificati direttamente.
Definire un'origine dati
Un blocco di origine dati è simile a un blocco di risorsa. Inizia con la parola chiave data, seguita dal provider e dal tipo, quindi da un nome locale.
data "aws_vpc" "selected" {
filter {
name = "tag:Name"
values = ["my-existing-vpc"]
}
}Utilizzare i dati recuperati
Quando un'origine dati recupera le informazioni, i relativi attributi diventano disponibili per le altre parti della configurazione. Può farvi riferimento usando la sintassi: data.<TYPE>.<NAME>.<ATTRIBUTE>.
Ad esempio, per ottenere l'ID del VPC selezionato:
output "vpc_id" {
value = data.aws_vpc.selected.id
}Recuperare l'ultima AMI
Un'attività comune consiste nel trovare l'ultima Amazon Machine Image (AMI) per un'istanza EC2. In questo modo si evita di inserire gli ID AMI direttamente nella configurazione, rendendola più robusta.
Ecco come recuperare l'ultima AMI di Amazon Linux 2:
provider "aws" {
region = "us-east-1"
}
data "aws_ami" "amazon_linux_2" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-hvm-*-x86_64-gp2"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
}
output "latest_ami_id" {
value = data.aws_ami.amazon_linux_2.id
}Documento di policy S3 dinamico
Le origini dati non servono soltanto per le risorse cloud. L'origine dati aws_iam_policy_document aiuta a costruire policy IAM complesse in modo strutturato.
Non crea una policy, ma genera il documento JSON che può poi essere applicato a una risorsa come un bucket S3.
provider "aws" {
region = "us-east-1"
}
data "aws_iam_policy_document" "s3_read_only_policy" {
statement {
principals {
type = "AWS"
identifiers = ["arn:aws:iam::123456789012:user/example-user"]
}
actions = [
"s3:GetObject",
"s3:ListBucket"
]
resources = [
"arn:aws:s3:::my-example-bucket",
"arn:aws:s3:::my-example-bucket/*"
]
}
}
output "policy_json" {
value = data.aws_iam_policy_document.s3_read_only_policy.json
}Affinare la ricerca
Molte origini dati supportano blocchi filter. Questi consentono di specificare criteri per restringere i risultati e assicurarsi di recuperare la risorsa o i dati corretti.
I filtri accettano generalmente un name (l'attributo in base al quale filtrare) e values (un elenco di valori accettabili per quell'attributo).
data "aws_instance" "web" {
instance_state_names = ["running"]
filter {
name = "tag:Environment"
values = ["production"]
}
filter {
name = "instance-type"
values = ["t2.micro", "t3.micro"]
}
}Best practice per le origini dati
Per mantenere le configurazioni ordinate ed efficienti:
- Sia specifico: utilizzi i filtri per assicurarsi di recuperare esattamente i dati necessari, evitando ambiguità.
- Idempotenza: le origini dati sono intrinsecamente idempotenti, ossia eseguirle più volte produce lo stesso risultato.
- Riduca le chiamate: recuperi i dati solo quando necessario, così da velocizzare le operazioni
terraform plan. - Le combini con gli output: utilizzi gli output per esporre i dati recuperati di cui potrebbero aver bisogno altre configurazioni o altri utenti.
Quiz sulle origini dati
Quali delle seguenti affermazioni sulle origini dati di Terraform sono VERE?
Riepilogo: interrogare i dati
Ha imparato come le origini dati di Terraform consentano alle configurazioni di interrogare e recuperare informazioni sull'infrastruttura esistente o sui servizi esterni.
Questa potente funzionalità permette di creare configurazioni dinamiche, flessibili e robuste, evitando valori codificati direttamente e adattandosi allo stato attuale dell'ambiente. Ricordi: le origini dati leggono soltanto, non creano né modificano mai nulla!
Domande Frequenti
La lezione «Interrogazione dei dati con le data source» è gratuita?
Sì — il testo completo di «Interrogazione dei dati con le data source» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Terraform Infrastructure as Code, passa a CoddyKit PRO. Il corso Terraform Infrastructure as Code include 4 lezioni in totale.
Cosa imparerò in «Interrogazione dei dati con le data source»?
Utilizzi le data source per recuperare informazioni sull'infrastruttura esistente o su servizi esterni, così da creare configurazioni più dinamiche e adattabili. Eserciti Terraform Infrastructure as Code con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Terraform Infrastructure as Code?
Non è richiesta alcuna esperienza precedente. Terraform Infrastructure as Code su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Interrogazione dei dati con le data source»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Terraform Infrastructure as Code?
Sì. Ogni lezione Terraform Infrastructure as Code include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Interrogazione dei dati con le data source
- Provisioner `local-exec` e `remote-exec`
- Risorse null e trigger
- Usare dati esterni e template