Configurare i moduli Terraform

Le risorse necessarie per questa soluzione sono definite nei moduli Terraform.

Operazioni preliminari

Prima di iniziare a configurare i moduli Terraform, effettuare le operazioni riportate di seguito.

  1. Apprendere le nozioni di base di Terraform.

    Leggere come minimo l'introduzione della documentazione di Terrraform.

  2. Tenere presenti le seguenti informazioni:
    • L'OCID della tenancy.

      Puoi trovare l'OCID della tua tenancy nella console Web di Oracle Cloud Infrastructure. Selezionare Amministrazione dal menu Servizi, quindi fare clic su Dettagli tenancy.

    • L'OCID dell'utente che dovrà essere usato da Terraform per l'autenticazione con Oracle Cloud Infrastructure.

      Per trovare l'OCID dell'utente, selezionare Identità dal menu Servizi, quindi selezionare Utenti. Individuare il proprio nome utente nella lista e copiare il relativo OCID.

    • L'OCID del compartimento in cui si desidera creare le risorse.

      Per trovare l'OCID di un compartimento, selezionare Identità dal menu Servizi, quindi selezionare Compartimenti. Individuare il compartimento necessario nella lista e copiarne l'OCID.

    • L'ID dell'area in cui si desidera creare le risorse.

      Ad esempio, l'ID dell'area US East (Ashburn) è us-ashburn-1.

      Vedere Aree e domini di disponibilità.

  3. Scegliere quanto segue:
    • Gli OCID delle immagini che si desidera utilizzare per gli host bastion e admin.
      L'immagine predefinita definita nella configurazione Terraform per l'host di base è un'immagine Oracle Autonomous Linux. Se si desidera usare un'immagine diversa, identificare l'OCID dell'immagine necessaria.
      • Per trovare l'OCID di un'immagine personalizzata, collegarsi alla console Web di Oracle Cloud Infrastructure, selezionare Compute dal menu del servizio, quindi selezionare Immagini personalizzate.
      • Per trovare l'OCID di un'immagine fornita da Oracle, effettuare le operazioni riportate di seguito.
        1. Andare a Immagini di Oracle Cloud.
        2. Nel riquadro di navigazione a sinistra selezionare una famiglia di immagini, ad esempio Oracle Linux 7. x.
        3. Nella pagina risultante scorrere fino alla versione dell'immagine che si desidera utilizzare e fare clic su di essa (ad esempio, Oracle- Linux-7.7-2019.09.25-0 ).
        4. Nella pagina visualizzata scorrere verso il basso fino alla sezione OCIDs delle immagini.
        5. Copiare l'OCID corrispondente all'area in cui si desidera creare l'host di base.

          L'OCID immagine contiene l'ID dell'area in cui è possibile usare l'immagine. Ad esempio, gli OCID delle immagini nell'area Germania Central (Francoforte) sono nel formato ocid1.image.oc1.eu-frankfurt-1.aaaaaaaaxxx… Assicurarsi di copiare l'OCID dell'immagine per l'area in cui si desidera creare le risorse.

    • Il fuso orario per gli host di base e di amministrazione.

      Nei sistemi UNIX è possibile ottenere una lista dei fusi orari eseguendo il comando: timedatectl list-timezones

    • La forma di computazione da utilizzare per l'host di base, l'host di amministrazione e i nodi di lavoro di Kubernetes.

      Vedere Forme di computazione.

  4. Completare i prerequisiti per la creazione dei cluster Kubernetes in Oracle Cloud Infrastructure. Fare riferimento alla sezione Preparazione di Container Engine per Kubernetes.
  5. (Facoltativo) Questo passo è necessario se si desidera estrarre le immagini delle applicazioni containerizzate da un repository privato in Oracle Cloud Infrastructure Registry.
    1. Generare un token di autenticazione per il nome utente da utilizzare per estrarre le immagini da Oracle Cloud Infrastructure Registry. Vedere Recupero di un token di autenticazione.
    2. Memorizzare il token di autenticazione generato come segreto in Oracle Cloud Infrastructure Vault. Vedere Gestione dei segreti.

Scarica codice Terraform

Il codice Terraform per questa soluzione è disponibile in GitHub.

  1. Nel riquadro di navigazione a sinistra fare clic su Codice download.
  2. Fare clic su Repository Git.
  3. Duplicare o scaricare il repository nel computer locale.

Informazioni sul codice Terraform

Il codice Terraform per questa soluzione è organizzato in moduli riutilizzabili, ognuno contenente le risorse per un componente specifico della topologia di destinazione.

La codifica delle risorse cloud nei file di configurazione Terraform consente di eseguire il provisioning rapido della topologia e di gestire le risorse in modo efficiente.

Il codice Terraform contiene le seguenti directory e file al livello superiore:
  • docs directory e *.adoc: documentazione per il codice. Tutte le informazioni e le istruzioni necessarie sono incluse nella documentazione che si sta leggendo ora. Non sarà necessario fare riferimento alla documentazione inclusa nel codice.
  • *.tf: i file di configurazione Terraform utilizzati dalla soluzione. Non modificare questi file.
  • terraform.tfvars.example: modello che verrà utilizzato per creare il file delle variabili Terraform. Non modificare o rimuovere il modello. Copiarlo in terraform.tfvars
  • modules: directory che contengono le configurazioni di base di Terraform per le risorse create utilizzando questa soluzione. Non modificarli.
  • .github directory e .gitignore: file di configurazione Github interni. Non modificarli.

Impostazione delle variabili Terraform

Specificare i parametri necessari per la connessione di Terraform alla tenancy Oracle Cloud Infrastructure. Specificare inoltre i parametri di rete, gli attributi dell'host di base e dell'host di amministrazione e le impostazioni Kubernetes.

  1. Nella directory di livello superiore del codice scaricato o duplicato, creare un file in testo non codificato denominato provider.tf contenente il seguente codice:
    provider "oci" {
      tenancy_ocid         = var.tenancy_id
      user_ocid            = var.user_id
      fingerprint          = var.api_fingerprint
      private_key_path     = var.api_private_key_path
      region               = var.region
      disable_auto_retries = var.disable_auto_retries
    }
  2. Individuare il file terraform.tfvars.example nella directory di livello superiore del codice scaricato o duplicato e copiarlo in terraform.tfvars.

    Nota:

    Per gestire le risorse in più tenancy, gestire un file terraform.tfvars distinto per ogni tenancy.
  3. Assicurarsi di aver completato i prerequisiti descritti in precedenza. Vedere Operazioni preliminari.
  4. Aprire terraform.tfvars in un editor in testo non codificato e impostare i valori per le variabili nel formato riportato di seguito.
    Variabile Descrizione
    api_fingerprint (obbligatorio) L'impronta della chiave di firma API caricata.
    api_private_key_path (obbligatorio) Il percorso completo e il nome del file che contiene la chiave di firma API privata.
    compartment_id (obbligatorio) L'OCID del compartimento in cui si desidera creare le risorse.
    tenancy_id (obbligatorio) L'OCID della tenancy.
    user_id (obbligatorio) L'OCID dell'utente che dovrà essere usato da Terraform per l'autenticazione con Oracle Cloud Infrastructure.
    ssh_private_key_path Il percorso completo e il nome del file che contiene la chiave SSH privata corrispondente alla chiave pubblica che si desidera fornire per l'host di base.

    Questo valore viene utilizzato per creare il comando ssh che è possibile utilizzare per accedere all'host di base. Il comando ssh viene visualizzato nell'output quando si applica la configurazione Terraform. Tenere presente che Terraform non legge né copia la chiave privata.

    ssh_public_key_path Il percorso completo e il nome del file che contiene la chiave SSH pubblica da specificare per l'host di base.
    label_prefix Un identificativo breve, che si desidera utilizzare come prefisso nei nomi delle risorse.

    Utilizzare una stringa che consenta di identificare lo scopo o la natura delle risorse mediante la visualizzazione dei relativi nomi. Ad esempio, se si intende utilizzare la configurazione Terraform per impostare un ambiente di test o di posizionamento nell'area intermedia, utilizzare il prefisso test o staging.

    area L'ID dell'area in cui si desidera creare le risorse.

    Ad esempio, l'ID dell'area US East (Ashburn) è us-ashburn-1.

    nat_gateway_enabled Specificare true per creare un gateway NAT per la VCN.

    Un gateway NAT è necessario se una qualsiasi delle istanze di calcolo private (come l'host di amministrazione o i nodi operativi Kubernetes) deve accedere agli host su Internet pubblico.

    newbits e netnum Quando si applica la configurazione, Terraform passa i valori di newbits e netnum come argomenti alla funzione Terraform cidrsubnet(). Questa funzione calcola i prefissi CIDR delle subnet per l'host di base, l'host di amministrazione, i nodi del load balancer e i nodi di lavoro Kubernetes.
    • newbits viene utilizzato per determinare la dimensione della subnet. È la differenza tra la maschera di rete della rete VCN e la maschera di rete necessaria per la subnet di base.

      Ad esempio, per creare una subnet con la maschera di rete /29 in una VCN /16, specificare 13 come valore di newbits (ovvero 29 meno 16).

      Un valore newbits inferiore genera una subnet con una maggiore quantità di spazio di indirizzi.

    • netnum viene utilizzato per determinare i limiti della subnet. Si tratta dell'indice su base zero della subnet quando la rete viene mascherata con newbits.

      Se si continua con l'esempio precedente, se si specifica newbits=13 e netnum=0, la funzione cidrsubnet() restituisce il prefisso CIDR della subnet 10.0.0.0/29, ovvero il primo spazio di indirizzi /29 all'interno della VCN 10.0.0.0/16.

    Valori predefiniti:
    netnum = {
      admin   = 33
      bastion = 32
      int_lb  = 16
      pub_lb  = 17
      workers = 1
    }
    
    newbits = {
      admin   = 13
      bastion = 13
      lb      = 11
      workers = 2
    }
    Se si esce da queste variabili nei valori predefiniti e si specifica 10.0.0.0/16 come intervallo CIDR per la VCN, la funzione Terraform cidrsubnet() calcola i seguenti prefissi CIDR per le subnet. Gli indirizzi disponibili vengono mostrati tra parentesi. I primi due indirizzi e l'ultimo indirizzo di una subnet sono riservati dal servizio di rete.
    • Subnet Bastion: 10.0.1.0/29 (indirizzi disponibili: da 10.0.1.2 a 10.0.1.6, ovvero 5 host)
    • Subnet di amministrazione: 10.0.1.8/29 (da 10.0.1.10 a 10.0.1.14; 5 host)
    • Subnet interna del load balancer: 10.0.2.0/27 (10.0.2.2 in 10.0.2.30; 29 nodi)
    • Subnet del load balancer pubblico: 10.0.2.32/27 (10.0.2.34 in 10.0.2.62; 29 nodi)
    • Subnet dei nodi di lavoro di Kubernetes: 10.0.64.0/18 (10.0.64.2 in 10.0.127.254; 16381 nodi)

    Se sono necessarie subnet con indirizzi o dimensioni diversi dalle impostazioni predefinite, è necessario determinare i valori appropriati per newbits e netnum. A tale scopo, è necessario avere una conoscenza di base sugli indirizzi IP senza classe. Vedere anche la documentazione di Terraform per la funzione cidrsubnet().

    Assicurarsi che i blocchi CIDR specificati qui non si sovrappongano al blocco CIDR specificato per i pod Kubernetes (pods_cidr).

    service_gateway_enabled Specificare true per creare un gateway di servizio per la VCN.

    Un gateway di servizi è necessario se le istanze di calcolo nella rete VCN devono accedere ad altri servizi Oracle, ad esempio lo storage degli oggetti Oracle Cloud Infrastructure.

    vcn_cidr Blocco CIDR IPv4 di tua scelta per la VCN.

    L'impostazione predefinita è 10.0.0.0/16. L'intervallo consentito è da /16 a /30

    Assicurarsi che il blocco CIDR specificato qui non si sovrapponga al blocco CIDR specificato per i servizi Kubernetes (services_cidr).

    vcn_dns_label Il prefisso del nome per il nome DNS interno della VCN.

    Il nome specificato qui è preceduto dal prefisso oraclevcn.com per formare il nome del dominio DNS della VCN. Ad esempio, se si specifica oke come prefisso, il nome del dominio DNS della VCN sarà oke.oraclevcn.com

    vcn_name Il nome della risorsa VCN.
    bastion_access L'intervallo di indirizzi IP (nella notazione CIDR) dai quali è necessario consentire l'accesso SSH alla base.

    Per consentire l'accesso SSH da qualsiasi host, ovvero 0.0.0.0/0, lasciare la variabile nel relativo valore predefinito, ANYWHERE.

    bastion_enabled Specificare true per creare un host di base.
    bastion_image_id L'OCID dell'immagine da usare per creare l'host di base.

    Se si lascia questa variabile nel valore predefinito NONE, verrà utilizzata un'immagine Oracle Autonomous Linux.

    bastion_notification_enabled È possibile utilizzare il servizio di notifica di Oracle Cloud Infrastructure per ricevere messaggi di stato dall'host di base quando gli aggiornamenti vengono applicati oppure quando Oracle Ksplice ha rilevato un tentativo di esplosione conosciuto.
    Specificare true per consentire l'invio di notifiche per l'host di base.

    Nota:

    Il codice Terraform in questa soluzione configura le notifiche per l'host di base solo quando si usa l'immagine Oracle Autonomous Linux predefinita.
    bastion_notification_endpoint L'indirizzo di posta elettronica a cui inviare le notifiche. Questa variabile è obbligatoria se si imposta bastion_notification_enabled su true.
    bastion_notification_protocol Impostare questa variabile su EMAIL.
    bastion_notification_topic Il nome dell'argomento di notifica da creare. Questa variabile è obbligatoria se si imposta bastion_notification_enabled su true.
    bastion_package_upgrade Specificare true se si desidera che i package di sicurezza dell'host di base vengano aggiornati al primo avvio dell'host.

    Quando questa variabile è impostata su true, dopo il provisioning dell'host bastion non sarà disponibile per un breve periodo durante l'aggiornamento dei package di sicurezza. Tuttavia, l'abilitazione di questo aggiornamento riduce al minimo le vulnerabilità dell'host di base.

    bastion_shape La forma di computazione che si desidera utilizzare per l'host di base.
    bastion_timezone Il fuso orario da configurare per l'host di base nel formato del fuso orario IANA (ad esempio, America/Los_Angeles).
    admin_enabled Specificare true per creare un host di amministrazione.
    admin_image_id L'OCID dell'immagine da usare per creare l'host di base.

    Se si lascia questa variabile con il valore predefinito NONE, viene utilizzata un'immagine Linux fornita da Oracle.

    admin_instance_principal Specificare true se si desidera consentire all'host di amministrazione di gestire tutte le risorse del compartimento specificato.
    Usare questa funzione se si desidera eseguire i comandi CLI o effettuare chiamate API dall'host di amministrazione per gestire le risorse nella topologia.

    Nota:

    Qualsiasi utente in grado di connettersi a un'istanza di computazione mediante SSH eredita i privilegi di contesto dell'istanza concessi all'istanza. Indicare se si desidera designare l'host di amministrazione come principal di istanza. È possibile disattivare o attivare questa funzione in qualsiasi momento senza alcun impatto sull'host di amministrazione.

    Se si imposta questa variabile su true, l'host di amministrazione viene reso membro di un gruppo dinamico e viene creata un'istruzione di criterio per consentire al gruppo dinamico di gestire tutte le risorse nel compartimento.

    admin_notification_enabled

    admin_notification_endpoint

    admin_notification_protocol

    admin_notification_topic

    Lasciare queste variabili ai valori predefiniti. L'abilitazione delle notifiche per l'host di amministrazione non è attualmente supportata in questo codice Terraform.
    admin_package_upgrade Specificare true se si desidera che i package di sicurezza dell'host di amministrazione vengano aggiornati al primo avvio dell'host.

    Tenere presente che quando questa variabile è impostata su true, dopo il provisioning dell'host di amministrazione non sarà disponibile per un breve periodo di aggiornamento dei package di sicurezza. L'abilitazione di questo aggiornamento riduce tuttavia le vulnerabilità dell'host di amministrazione.

    admin_shape La forma di computazione che si desidera usare per l'host di amministrazione.
    admin_timezone Il fuso orario da configurare per l'host di amministrazione nel formato del fuso orario IANA (ad esempio, America/Los_Angeles).
    availability_domains Il dominio di disponibilità in cui si desidera eseguire il provisioning degli host di amministrazione e di base.

    Ad esempio, per eseguire il provisioning dell'host di base nel secondo dominio di disponibilità, impostare bastion = 2.

    Se l'area specificata contiene un solo dominio di disponibilità, lasciare questa variabile nel relativo valore predefinito 1.

    tagging Specificare le tag che si desidera assegnare alle risorse di calcolo e di rete.
    allow_node_port_access Specificare true se si desidera consentire il traffico TCP ai nodi dei lavoratori di Kubernetes quando vengono distribuiti in modalità pubblica.
    allow_worker_ssh_access Specificare true se si desidera consentire le connessioni SSH ai nodi dei lavoratori di Kubernetes tramite l'host di base.

    Si noti che anche se i nodi dei lavoratori vengono distribuiti in modalità pubblica, le connessioni SSH devono passare attraverso l'host di base.

    Se si imposta questa variabile su true, è necessario impostare anche bastion_enabled = true.

    cluster_name Un nome per il cluster Kubernetes.
    dashboard_enabled Specificare true se si desidera creare il dashboard Kubernetes predefinito.
    kubernetes_version Versione di Kubernetes da utilizzare per i nodi dei lavoratori.

    Se si lascia questa variabile con il valore predefinito LATEST, verrà selezionata l'ultima versione supportata. Per utilizzare una versione specifica, specificare tale versione.

    node_pools Il numero di pool di nodi da creare, la dimensione di ogni pool e la forma di computazione da utilizzare per i nodi dei lavoratori nel seguente formato:
    node_pools = {
      "np1" = ["computeShape", numberOfNodes]
      "np2" = ["computeShape", numberOfNodes]
      "np3" = ["computeShape", numberOfNodes]
      ...
    }
    • np1, np2 e np3 sono nomi arbitrari che rappresentano singoli pool di nodi.
    • computeShape è la forma di calcolo da utilizzare per i nodi dei lavoratori nel pool.
    • numberOfNodes è il numero di nodi di lavoro di Kubernetes da creare nel pool. In ogni pool vengono creati almeno tre nodi, anche se si specifica un valore inferiore.
    L'esempio seguente riguarda un cluster costituito da due pool, ciascuno che utilizza una forma di computazione diversa e contenente un numero differente di nodi di lavoro Kubernetes:
    node_pools = {
      "np1" = ["VM.Standard2.1", 3]
      "np2" = ["VM.Standard2.2", 5]
    }
    node_pool_name_prefix Il prefisso del nome per i pool di nodi.

    I nomi dei pool di nodi vengono generati concatenando i valori di label_prefix, node_pool_name_prefix e il numero del pool di nodi. Ad esempio, se si specifica label_prefix = "prod" e node_pool_name_prefix = "np", i nomi generati dei pool di nodi saranno prod-np-1, prod-np-2, prod-np-3 e così via.

    node_pool_image_id L'OCID dell'immagine da usare per i nodi di lavoro di Kubernetes.

    Se si lascia questa variabile al valore predefinito NONE, verrà utilizzata un'immagine corrispondente ai valori specificati per node_pool_os e node_pool_os_version.

    node_pool_os Il sistema operativo da utilizzare per i nodi di lavoro di Kubernetes, ad esempio "Oracle Linux".

    Questa impostazione viene considerata solo se si imposta node_pool_image_id = "NONE".

    node_pool_os_version La versione del sistema operativo da utilizzare per i nodi dei lavoratori di Kubernetes, ad esempio "7.7".

    Questa impostazione viene considerata solo se si imposta node_pool_image_id = "NONE".

    pods_cidr Blocco CIDR IPv4 di tua scelta per i pod Kubernetes.

    Assicurarsi che il blocco CIDR specificato qui non si sovrapponga al blocco CIDR specificato per la VCN (vcn_cidr).

    services_cidr Blocco CIDR IPv4 di tua scelta per i pod Kubernetes.

    Assicurarsi che il blocco CIDR specificato qui non si sovrapponga al blocco CIDR specificato per la VCN (vcn_cidr).

    worker_mode Specificare public se i nodi dei lavoratori devono essere accessibili tramite la rete Internet pubblica. In caso contrario, impostare questa variabile su private.

    Se si imposta worker_mode = "private", impostare nat_gateway_enabled = true

    lb_subnet_type e preferred_lb_subnets I valori specificati per lb_subnet_type e preferred_lb_subnets determinano il tipo di subnet che devono essere utilizzati per qualsiasi nodo del load balancer distribuito utilizzando il servizio Kubernetes di tipo LoadBalancer.

    I load balancer pubblici hanno indirizzi IP pubblici. I load balancer interni dispongono solo di indirizzi IP privati e non sono accessibili da Internet pubblico.

    • Se si intende utilizzare load balancer pubblici, impostare preferred_lb_subnet = "public" e subnet_type su "both" o "public"
    • Se si intende utilizzare load balancer interni, impostare preferred_lb_subnet = "internal" e subnet_type su "both" o "internal"

      Anche se si impostano le subnet del load balancer in modo che siano interne, è necessario impostare le annotazioni appropriate, ad esempio service.beta.kubernetes.io/oci-load-balancer-internal: "true", quando si creano i servizi del load balancer interno. L'impostazione dell'unione delle subnet in modo che siano private non è sufficiente.

      Per informazioni sulla creazione di load balancer interni, vedere la documentazione di Oracle Cloud Infrastructure.

    secret_id L'ID del segreto nel servizio di Oracle Cloud Infrastructure Vault in cui è memorizzato il token di autenticazione da utilizzare per l'estrazione delle immagini applicazione da Oracle Cloud Infrastructure Registry.
    È necessario impostare anche quanto segue:
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    email_address L'indirizzo di posta elettronica da utilizzare quando si genera il segreto Docker. L'indirizzo e-mail è obbligatorio, ma non è importante per quello specificato.

    Questa variabile è obbligatoria se si specifica secret_id.

    tenancy_name Lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure della tenancy che contiene il registro dal quale devono essere estratte le immagini per le distribuzioni nel cluster Kubernetes.

    Questa variabile è obbligatoria se si specifica secret_id.

    username Il nome utente per il quale è stato generato il token di autenticazione memorizzato in secret_id.

    Questa variabile è obbligatoria se si specifica secret_id.

    install_helm Specificare true se si desidera che Helm venga installato.

    Helm è un Package Manager per Kubernetes.

    Per installare Helm, è necessario impostare anche admin_instance_principal = true.

    helm_version La versione del client Helm da installare.

    Tiller (la controparte lato server di Helm) viene aggiornato automaticamente.

    install_calico Specificare true se si desidera installare Calico.

    È possibile usare Calico per implementare i criteri di rete per i carichi di lavoro contenitori distribuiti nei cluster Kubernetes.

    Se si imposta install_calico = true, è inoltre necessario impostare quanto segue:
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    calico_version La versione di Calico da installare.
    install_metricserver Specificare true se si desidera installare il server delle metriche Kubernetes.

    Per impostazione predefinita, la versione più recente viene installata nello spazio di nomi kube-system. Kubernetes Metrics Server aggrega i dati sull'uso delle risorse in un cluster.

    Se si imposta install_metricserver = true, è inoltre necessario impostare quanto segue:
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    use_encryption Se si desidera utilizzare il servizio di Oracle Cloud Infrastructure Vault per cifrare i segreti Kubernetes, impostare la variabile su true.
    Se si imposta use_encryption = true, è inoltre necessario impostare quanto segue:
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    existing_key_id L'OCID di una chiave esistente creata nel servizio Oracle Cloud Infrastructure Vault.

    Questa variabile è obbligatoria se si imposta use_encryption su true.

    create_service_account Se si desidera che i processi e gli strumenti esterni, ad esempio una pipeline CI/CD, possano accedere al cluster, impostare questa variabile su true. Un account di servizio viene creato con il proprio token di autenticazione.
    Se si imposta create_service_account = true, è inoltre necessario impostare quanto segue:
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    service_account_name Il nome dell'account di servizio da creare.
    service_account_namespace Spazio di nomi Kubernetes in cui deve essere creato l'account.
    service_account_cluster_role_binding Il nome dell'associazione del ruolo cluster per l'account di servizio.

    Di seguito è riportato un esempio di file terraform.tfvars completato.

    # Identity and access parameters
    
    api_fingerprint = "d4:dc:...(truncated)"
    
    api_private_key_path = "/home/joe/.oci/oci_api_key.pem"
    
    compartment_id = "ocid1.compartment.oc1..aaaaaaaaxxx... (truncated)"
    
    tenancy_id = "ocid1.tenancy.oc1..aaaaaaaaxxx... (truncated)"
    
    user_id = "ocid1.user.oc1..aaaaaaaaxxx... (truncated)"
    
    ssh_private_key_path = "/home/joe/.ssh/id_rsa"
    
    ssh_public_key_path = "/home/joe/.ssh/id_rsa.pub"
    
    # general oci parameters
    label_prefix = "prod"
    
    region = "us-phoenix-1"
    
    # networking
    
    nat_gateway_enabled = true
    
    netnum = {
      admin   = 33
      bastion = 32
      int_lb  = 16
      pub_lb  = 17
      workers = 1
    }
    
    newbits = {
      admin   = 13
      bastion = 13
      lb      = 11
      workers = 2
    }
    
    service_gateway_enabled = true
    
    vcn_cidr = "10.0.0.0/16"
    
    vcn_dns_label = "oke"
    
    vcn_name = "oke vcn"
    
    # bastion
    
    bastion_access = "ANYWHERE"
    
    bastion_enabled = true
    
    bastion_image_id = "NONE"
    
    bastion_notification_enabled = true
    
    bastion_notification_endpoint = "joe@example.com"
    
    bastion_notification_protocol = "EMAIL"
    
    bastion_notification_topic = "bastion_server_notification"
    
    bastion_package_upgrade = true
    
    bastion_shape = "VM.Standard.E2.1"
    
    bastion_timezone = "America/Los_Angeles"
    
    admin_enabled = true
    
    admin_image_id = "NONE"
    
    admin_instance_principal = true
    
    admin_notification_enabled = false
    
    admin_notification_endpoint = "joe@example.com"
    
    admin_notification_protocol = "EMAIL"
    
    admin_notification_topic = "admin_server_notification"
    
    admin_package_upgrade = true
    
    admin_shape = "VM.Standard.E2.1"
    
    admin_timezone = "America/Los_Angeles"
    
    # availability_domains
    
    availability_domains = {
      bastion = 1
      admin   = 1
    }
    
    tagging = {
      computetag = {"Environment" = "dev" }
      networktag = { "Name" = "network" }
    }
    
    # oke
    
    allow_node_port_access = false
    
    allow_worker_ssh_access = false
    
    cluster_name = "oke"
    
    dashboard_enabled = true
    
    kubernetes_version = "LATEST"
    
    node_pools = {
      np1 = ["VM.Standard2.1", 3]
      #np2 = ["VM.Standard2.8", 4]
      #np3 = ["VM.Standard1.4", 5]
    }
    
    node_pool_name_prefix = "np"
    
    node_pool_image_id = "NONE"
    
    node_pool_os = "Oracle Linux"
    
    node_pool_os_version = "7.7"
    
    pods_cidr = "10.244.0.0/16"
    
    services_cidr = "10.96.0.0/16"
    
    worker_mode = "private"
    
    # oke load balancers
    
    lb_subnet_type = "public"
    
    preferred_lb_subnets = "public"
    
    # ocir
    
    secret_ocid = "ocid1.key.oc1..aaaaaaaaxxx... (truncated)"
    
    email_address = "joe@example.com"
    
    tenancy_name = "mytenancy"
    
    username = "joe_k8s_admin"
    
    # helm
    
    helm_version = "3.0.0"
    
    install_helm = false
    
    # calico
    
    calico_version = "3.9"
    
    install_calico = false
    
    # metrics server
    
    install_metricserver = false
    
    use_encryption = false
    
    existing_key_id = ""
    
    # service accountcreate_service_account = true
    service_account_name = "kubeconfigsa"
    service_account_namespace = "kube-system"
    service_account_cluster_role_binding = "myapps-manage-binding"
  5. Salvare e chiudere terraform.tfvars.