Creazione di una configurazione Terraform

Quando curi le soluzioni del catalogo dei servizi per la tua organizzazione, puoi creare una configurazione Terraform, o config, che gli utenti possono eseguire il deployment utilizzando Terraform. Dopo aver creato la configurazione, puoi condividerla con gli utenti assegnandola ai cataloghi.

In questa guida, utilizzerai Cloud Build per eseguire i comandi Terraform nell'ultima versione dell'immagine Docker di Terraform e utilizzerai Cloud Storage per archiviare e gestire le risorse Terraform come moduli e file di stato.

Per risorse e indicazioni sull'utilizzo di Terraform, consulta Utilizzo di Terraform con Google Cloud.

Prima di iniziare

  • Devi disporre dei seguenti ruoli Identity and Access Management (IAM):

    • Amministratore del catalogo OPPURE Gestore del catalogo per l' Google Cloud organizzazione associata al Google Cloud progetto in cui è abilitato il catalogo dei servizi. Se non hai questo ruolo, contatta l'Amministratore organizzazione per richiedere l'accesso.
    • Amministratore Storage per il Google Cloud progetto in cui vuoi creare la soluzione. Se la configurazione Terraform si trova in un progetto diverso, devi avere anche il ruolo Amministratore Storage per il progetto che contiene la configurazione Terraform.
    • Editor Cloud Build per il Google Cloud progetto in cui vuoi creare la soluzione.

    Se prevedi di utilizzare il tuo account di servizio, devi avere anche il ruolo Utente account di servizio per il Google Cloud progetto che contiene l'account di servizio che prevedi di utilizzare.

    Se non hai questi ruoli, contatta l'Amministratore organizzazione per richiedere l'accesso.

  • Se prevedi di utilizzare il tuo account di servizio, quest'ultimo deve avere i seguenti ruoli IAM:

    • Amministratore Storage per il Google Cloud progetto in cui vuoi creare la soluzione. Se la configurazione Terraform si trova in un progetto diverso, il tuo account di servizio deve avere anche il ruolo Visualizzatore oggetti Storage per il progetto che contiene la configurazione Terraform.
    • Writer log per il Google Cloud progetto in cui vuoi creare la soluzione.

    Se non hai questi ruoli, contatta l'Amministratore organizzazione per richiedere l'accesso.

  • Configura Cloud Build nel progetto in cui stai creando la configurazione:

    1. Abilita l'API Cloud Build.

      Ruoli richiesti per abilitare le API

      Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

      Abilitare l'API

      L'abilitazione dell'API crea automaticamente un account di servizio Cloud Build che utilizzerai nel passaggio successivo.
    2. Vai alla pagina Cloud Build.
    3. Nel riquadro a sinistra, seleziona Impostazioni.
    4. Utilizza l'account di servizio fornito nella sezione Indirizzo email dell'account di servizio.
    5. Se non utilizzi il tuo account di servizio, concedi i seguenti ruoli IAM all'account di servizio. Per i passaggi per concedere i ruoli, consulta Configurazione dell'accesso per l'account di servizio Cloud Build.

Caricamento dei file di configurazione in Cloud Storage

Utilizzi Cloud Storage per gestire i file di configurazione Terraform per il catalogo dei servizi.

Creazione di un bucket Cloud Storage

Per configurare Cloud Storage, crea un bucket nello stesso progetto in cui hai abilitato il catalogo dei servizi per la tua organizzazione:

  1. Nella Google Cloud console, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Fai clic su Crea.
  3. Nella pagina Crea un bucket, inserisci le informazioni del bucket. Per passare al passaggio successivo, fai clic su Continua.
    1. Nella sezione Inizia, procedi nel seguente modo:
    2. Nella sezione Scegli dove archiviare i dati, procedi nel seguente modo:
      1. Seleziona un tipo di località.
      2. Scegli una località in cui i dati del bucket vengono archiviati in modo permanente dal menu a discesa Tipo di località.
        • Se selezioni il tipo di località a due regioni, puoi anche scegliere di abilitare la replica turbo utilizzando la casella di controllo pertinente.
      3. Per configurare la replica tra bucket, seleziona Aggiungi la replica tra bucket tramite Storage Transfer Service e segui questi passaggi:

        Configurare la replica tra bucket

        1. Nel menu Bucket, seleziona un bucket.
        2. Nella sezione Impostazioni di replica , fai clic su Configura per configurare le impostazioni per il job di replica.

          Viene visualizzato il riquadro Configura la replica tra bucket.

          • Per filtrare gli oggetti da replicare in base al prefisso del nome dell'oggetto, inserisci un prefisso da cui vuoi includere o escludere gli oggetti, quindi fai clic su Aggiungi un prefisso.
          • Per impostare una classe di archiviazione per gli oggetti replicati, seleziona una classe di archiviazione dal menu Classe di archiviazione. Se salti questo passaggio, gli oggetti replicati utilizzeranno per impostazione predefinita la classe di archiviazione del bucket di destinazione.
          • Fai clic su Fine.
    3. Nella sezione Scegli come archiviare i dati, procedi nel seguente modo:
      1. Seleziona una classe di archiviazione predefinita per il bucket o Autoclass per la gestione automatica della classe di archiviazione dei dati del bucket.
      2. Per abilitare lo spazio dei nomi gerarchico, nella sezione Ottimizza l'archiviazione per i carichi di lavoro a uso intensivo di dati, seleziona Abilita lo spazio dei nomi gerarchico in questo bucket.
    4. Nella sezione Scegli come controllare l'accesso agli oggetti, seleziona se il bucket applica o meno la prevenzione dell'accesso pubblico, e seleziona un metodo di controllo dell'accesso per gli oggetti del bucket.
    5. Nella sezione Scegli come proteggere i dati degli oggetti, procedi nel seguente modo:
      • Seleziona una delle opzioni in Protezione dei dati che vuoi impostare per il bucket.
        • Per abilitare l'eliminazione temporanea, fai clic sulla casella di controllo Criterio di eliminazione temporanea (per il recupero dei dati), e specifica il numero di giorni per cui vuoi conservare gli oggetti dopo l'eliminazione.
        • Per impostare il controllo delle versioni degli oggetti, fai clic sulla casella di controllo Controllo delle versioni degli oggetti (per il controllo delle versioni) e specifica il numero massimo di versioni per oggetto e il numero di giorni dopo i quali le versioni non correnti scadono.
        • Per abilitare il criterio di conservazione su oggetti e bucket, fai clic sulla casella di controllo Conservazione (per la conformità) e poi procedi nel seguente modo:
          • Per abilitare il blocco della conservazione degli oggetti, fai clic sulla casella di controllo Abilita la conservazione degli oggetti.
          • Per abilitare il blocco del bucket, fai clic sulla casella di controllo Imposta il criterio di conservazione del bucket e scegli un'unità di tempo e una durata per il periodo di conservazione.
      • Per scegliere come verranno criptati i dati degli oggetti, espandi la la sezione Criptaggio dei dati () e seleziona un metodo di criptaggio dei dati.
  4. Fai clic su Crea.

Abilitazione del controllo delle versioni degli oggetti

Devi utilizzare il controllo delle versioni degli oggetti per il bucket per proteggere la configurazione Terraform dall'eliminazione o dalla sovrascrittura. Per abilitare il controllo delle versioni degli oggetti, consulta la documentazione di Cloud Storage sull'utilizzo del controllo delle versioni degli oggetti.

Concessione dell'accesso al bucket

Quando gli utenti della tua organizzazione eseguono il deployment della configurazione, il loro account di servizio Cloud Build deve avere accesso in lettura al tuo bucket. Se il bucket è archiviato nello stesso Google Cloud progetto in cui gli utenti eseguono il deployment della configurazione, allora l'account di servizio ha già questo accesso.

Se gli utenti eseguono il deployment della configurazione in un progetto diverso Google Cloud , concedi l'accesso al bucket utilizzando uno dei seguenti metodi:

  • Concedi il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer) agli account di servizio Cloud Build degli utenti o a una Google Cloud risorsa in cui gli utenti eseguono il deployment delle configurazioni Terraform, ad esempio un progetto, una cartella o un'organizzazione.

  • Utilizza un elenco di controllo dell'accesso (ACL) per gestire l'accesso al bucket.

Per informazioni dettagliate sulla gestione dell'accesso ai bucket, consulta la panoramica del controllo dell'accesso di Cloud Storage .

Creazione e caricamento di un modulo Terraform

Dopo aver configurato il bucket Cloud Storage, devi creare e caricare un modulo Terraform, ovvero un container di tutti i file di configurazione. Il catalogo dei servizi utilizza il modulo per generare automaticamente un file di schema JSON per definire le variabili della configurazione.

Quando chiami i moduli al di fuori della directory corrente, utilizza il percorso remoto anziché un percorso relativo. Ad esempio, anziché source = "../../", utilizza source = "GoogleCloudPlatform/cloud-run/google".

Per i moduli dei casi d'uso comuni Google Cloud , consulta Progetti base e moduli Terraform per Google Cloud.

Il seguente esempio di codice illustra un file di configurazione Terraform, main.tf:


variable "machine_type" {
  type    = string
  default = "n1-standard-1"
}

variable "zone" {
  type    = string
  default = "us-central1-a"
}

variable "deployment_identifier" {
  description = "The unique name for your instance"
  type        = string
}

resource "google_compute_instance" "default" {
  name         = "vm-${var.deployment_identifier}"
  machine_type = var.machine_type
  zone         = var.zone

  boot_disk {
    device_name = "boot"
    auto_delete = true
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
    access_config {
      // Ephemeral IP
    }
  }
}

Dopo aver creato il modulo, comprimi i file in un file ZIP. Assicurati che il modulo sia archiviato nella directory principale del file ZIP.

Per garantire l'archiviazione corretta del modulo quando comprimi i file Terraform, esegui il seguente comando: none zip solution.zip file1.tf file2.tf file3.tf

Quindi, carica il file ZIP nel bucket. Per i passaggi per caricare il file ZIP, consulta la documentazione di Cloud Storage sul caricamento degli oggetti.

Creazione della configurazione nel catalogo dei servizi

Dopo aver configurato un bucket Cloud Storage con il modulo Terraform, crea una soluzione del catalogo dei servizi che includa il bucket.

Per creare la configurazione Terraform come soluzione del catalogo dei servizi:

  1. Vai alla pagina Soluzionidi amministrazione del catalogo dei servizi nella Google Cloud console.
    Vai alla pagina Soluzioni

  2. Per scegliere il Google Cloud progetto, fai clic su Seleziona.

  3. Fai clic su Crea soluzione. Nell'elenco a discesa, seleziona Crea configurazione Terraform.

  4. Inserisci un nome, una descrizione e uno slogan per la configurazione Terraform. Lo slogan è una breve descrizione di una soluzione che gli utenti vedono mentre esplorano il catalogo dei servizi.

  5. Nel campo Link alla configurazione Terraform, fornisci il link al bucket Cloud Storage che contiene il file ZIP per il modulo Terraform, ad esempio gs://my-terraform-bucket/my-zip-file.zip.

  6. (Facoltativo) Carica un'icona per la soluzione. Le dimensioni consigliate per un'icona sono 80 x 80 pixel.

  7. (Facoltativo) Inserisci un link per la raccolta fondi e le informazioni di contatto del creatore.

  8. (Facoltativo) Aggiungi un link alla documentazione della soluzione.

  9. Seleziona la versione di Terraform che vuoi utilizzare per eseguire il deployment della soluzione.

  10. (Facoltativo) Puoi fornire il tuo account di servizio facendo clic sulla casella di controllo accanto a Seleziona o inserisci il tuo service account. Se il tuo account di servizio si trova nello stesso Google Cloud progetto in cui stai creando la soluzione, seleziona Seleziona un account di servizio dal progetto corrente e seleziona il tuo account di servizio dal menu a discesa. Se il tuo account di servizio si trova in un progetto Google Cloud diverso dalla soluzione, seleziona Inserisci un indirizzo email dell'account di servizio da qualsiasi progettoe inserisci l'indirizzo email del tuo account di servizio.

  11. Fai clic su CREA.

La soluzione viene creata e visualizzata nella pagina Soluzioni di amministrazione del catalogo dei servizi.

Lo screenshot seguente illustra la creazione di una configurazione Terraform:

Crea una configurazione Terraform

Passaggi successivi