Configurazione di Activity Tracker Event Routing nell'account utilizzando Terraform
Terraform su IBM Cloud® consente un provisioning prevedibile e coerente dei servizi IBM Cloud in modo da poter costruire rapidamente ambienti cloud complessi e multitier che seguono i principi di Infrastructure as Code ( IaC ). Analogamente all'uso della CLI o delle API e degli SDK di IBM Cloud, è possibile automatizzare la creazione, l'aggiornamento e l'eliminazione delle risorse di Activity Tracker Event Routing utilizzando HashiCorp Configuration Language (HCL).
In alternativa, è possibile utilizzare i moduli Terraform IBM (TIM) precostituiti, open-source e pronti per l'impresa per IBM Cloud Activity Tracker Event Routing per configurare target, rotte e impostazioni dell'account. Questo modulo semplifica la creazione e la gestione di target e rotte secondo le migliori pratiche.
Cercate una soluzione Terraform gestita su IBM Cloud? Prova IBM Cloud® Schematics. Con Schematics, puoi utilizzare il linguaggio di script Terraform che ti è familiare, ma non devi preoccuparti di configurare e mantenere la riga di comando Terraform e il plug-in del provider IBM Cloud. Schematics fornisce anche i template Terraform predefiniti che puoi installare dal catalogo IBM Cloud.
Prima di iniziare, assicurarsi di avere l'accesso richiesto per creare e lavorare con le risorse di Activity Tracker Event Routing. Sono necessarie anche le autorizzazioni per gestire le risorse di destinazione.
Passo 1. Installa la CLI Terraform
Completare i seguenti passaggi per installare la CLI di Terraform:
-
Crea una cartella terraform sulla tua macchina locale e passa alla tua cartella terraform.
mkdir terraform && cd terraform -
Scarica la versione di Terraform che desideri. Ad esempio, puoi scaricare
terraform_0.15.5_darwin_amd64.zipper un MacOS.Il plug-in del provider IBM Cloud per Terraform attualmente supporta solo Terraform versione 0.12.x, 0.13.xe 0.14.x. Assicurarsi di selezionare una versione Terraform supportata.
-
Estrarre il file zip Terraform e copiare i file nella directory terraform.
-
Imposta la variabile di ambiente PATH sui file Terraform.
export PATH=$PATH:<terraform-directory>/terraform -
Verifica che l'installazione sia stata eseguita correttamente utilizzando un comando terraform.
./terraform
Passo 2. Configura il plug-in del provider IBM Cloud
Dopo che l'installazione della CLI Terraform è stata completata, devi configurare il plug-in del provider IBM Cloud per Terraform in modo da poter iniziare a lavorare con risorse e servizi in IBM Cloud. Per un elenco delle versioni supportate, consulta IBM Cloud Provider plug-in releases.
La configurazione del plugin del provider IBM Cloud varia a seconda della versione della CLI Terraform che vuoi utilizzare. Per eseguire i tuoi file di configurazione Terraform con Terraform versione 0.13.x o superiore, non è richiesta l'installazione del plug-in del provider IBM Cloud per Terraform. Per ulteriori informazioni, vedi Terraform v0.13.x e versioni successive.
Ad esempio, per eseguire i file di configurazione Terraform con Terraform versione 0.13.x o superiore, completa la seguente procedura:
-
Crea un file di
versions.tfe specifica la versione del plug-in del provider IBM Cloud che vuoi utilizzare con il parametroversion.terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" version = "<provider version>" } } }Ad esempio:
terraform { required_version = ">= 0.15" required_providers { ibm = { source = "ibm-cloud/ibm" version = "1.48.0-beta0" } } } -
Archivia il file
versions.tfnel tuo repository Git o nella cartella in cui è configurato Terraform.
Se si usa Terraform sui moduli IBM Cloud, è necessario aggiungere un file versions.tf a tutte le cartelle dei moduli. Puoi fare riferimento al blocco del provider Terraform dal registro provider. Per le configurazioni di Activity Tracker Event Routing, si può usare Terraform IBM Moduli per IBM Cloud Activity Tracker Event Routing che fornisce moduli precostituiti e testati per le più comuni configurazioni di IBM Cloud Activity Tracker Event Routing.
Passo 3. Configura il plug-in del provider IBM Cloud
Una volta completata la configurazione, è necessario configurare il plug-in IBM Cloud Provider.
Prima di iniziare a utilizzare Terraform su IBM Cloud, devi richiamare le credenziali e i parametri richiesti per un'origine dati o una risorsa Terraform e specificarli nella configurazione provider. Questa configurazione è utilizzata
dalla piattaforma del provider IBM Cloud per l'autenticazione con la piattaforma IBM Cloud e per visualizzare, creare, aggiornare o eliminare le risorse e i servizi IBM Cloud.
La seguente tabella elenca i parametri di immissione che puoi impostare nel blocco provider del tuo file di configurazione Terraform su IBM Cloud:
| Parametro di input | Obbligatorio / facoltativo | Descrizione |
|---|---|---|
ibmcloud_api_key |
Obbligatorio | La chiave API IBM Cloud per l'autenticazione con la piattaforma IBM Cloud. Per ulteriori informazioni, su come creare una chiave API, vedi Creazione di una chiave API.
Puoi specificare la chiave API nel blocco provider o richiamare il valore dalle variabili di ambiente IC_API_KEY o IBMCLOUD_API_KEY. Se sono definite entrambe le variabili di ambiente, IC_API_KEY ha la precedenza. |
ibmcloud_timeout |
Facoltativo | Il numero di secondi che vuoi attendere prima che l'API IBM Cloud venga considerata non disponibile. Il valore predefinito è 60. È possibile specificare il valore di timeout nel blocco provider o richiamare il
valore dalle variabili di ambiente IC_TIMEOUT o IBMCLOUD_TIMEOUT. Se vengono specificate entrambe le variabili, IC_TIMEOUT ha la precedenza. |
region |
Facoltativo | La regione IBM Cloud in cui vuoi creare le tue risorse. Se questo valore non viene specificato, per impostazione predefinita viene utilizzato us-south. Puoi specificare la regione nel blocco provider o richiamare
il valore dalle variabili di ambiente IBMCLOUD_REGION o IC_REGION. Se vengono specificate entrambe le variabili di ambiente, IC_REGION ha la precedenza. |
Per ulteriori informazioni su come utilizzare le variabili di ambiente, vedi Utilizzo delle variabili di ambiente.
Puoi aggiungere più configurazioni del provider all'interno dello stesso Terraform nel IBM Cloud per creare le tue risorse IBM Cloud con parametri del provider diversi. Ad esempio, puoi utilizzare più provider in modo da poter utilizzare parametri di input diversi, come regioni, zone, generazioni di infrastrutture o account diversi per creare le risorse IBM Cloud nel tuo file di configurazione Terraform su IBM Cloud. Per ulteriori informazioni, vedere il riferimento al blocco provider.
Opzione 1. Creazione di un file provider.tf statico
È possibile dichiarare i parametri di input direttamente nel blocco provider.
Poiché il blocco provider include informazioni sensibili, non eseguire il commit di tale file in un repository origine pubblico. Per aggiungere il controllo versione alla configurazione del provider, utilizzare un file terraform.tfvars locale.
Completa i seguenti passi:
-
Creare un file
provider.tfe specificare i parametri di input richiesti per la propria risorsa o origine dati.provider "ibm" { ibmcloud_api_key = "<api_key>" region = "<region>" }
Opzione 2. Riferimento alle credenziali da un file tfvars Terraform
Puoi memorizzare le informazioni sensibili, come le credenziali, in un file terraform.tfvars locale e fare riferimento a queste credenziali nel blocco provider.
Non eseguire il commit di terraform.tfvars in un repository di origine pubblico. Questo file deve essere memorizzato solo nella macchina locale.
-
Creare un file
terraform.tfvarssulla macchina locale e aggiungere i parametri di input richiesti per la risorsa o l'origine dati.ibmcloud_api_key = "<ibmcloud_api_key>" region = "region" -
Creare un file
provider.tfe utilizzare la sintassi di interpolazione Terraform per fare riferimento alle variabili daterraform.tfvars.variable "ibmcloud_api_key" {} variable "region" {} provider "ibm" { ibmcloud_api_key = var.ibmcloud_api_key region = var.region }
Passo 4. Inizializza la CLI Terraform.
Successivamente, inizializza la CLI Terraform. Esegui il seguente comando:
./terraform init
Viene visualizzato il seguente messaggio: Terraform has been successfully initialized!.
Passo 5. Crea un file di variabili
Creare un file di variabili denominato variables.tf per includere valori codificati.
Il seguente esempio elenca le variabili definite:
// Data source arguments for atracker settings
variable "atracker_metadata_region_primary" {
description = "Location where the metadata configuration is stored"
type = string
default = "Enter a supported location"
}
variable "atracker_metadata_region_backup" {
description = "Location where the metadata configuration is stored"
type = string
default = "Enter a supported location"
}
// Data source arguments for atracker_targets
variable "target_type" {
description = "Type of resource that can be defined as a target. Valid values are cloud_object_storage, cloud_logs and event_streams"
type = string
}
variable "atracker_target_name" {
description = "The name of the target. Must be 256 characters or less."
type = string
default = "Enter a default target name"
}
// Data source arguments for target of type cloud_object_storage
variable "cos_bucket_name" {
description = "Name of the Cloud Object Storage bucket"
type = string
}
variable "cos_target_crn" {
description = "CRN of the Cloud Object Storage bucket"
type = string
}
variable "cos_endpoint" {
description = "Private endpoint of the Cloud Object Storage bucket"
type = string
}
// Resource arguments for atracker_route
variable "atracker_route_name" {
description = "The name of the route. Must be 180 characters or less and cannot include any special characters other than `(space) - . _ :`."
type = string
default = "Enter a default target name"
}
variable "atracker_route_receive_global_events" {
description = "Whether or not all global events should be forwarded to this region."
type = bool
default = false
}
variable "atracker_route_rules" {
description = "Routing rules that will be evaluated in their order of the array."
type = list(object({ example=string }))
default = [ { example: "object" } ]
}
Per visualizzare l'elenco delle regioni valide, vedere Ubicazioni.
Passo 6. Creare un file di configurazione di Terraform
Successivamente, crea un file di configurazione Terraform denominato main.tf. In questo file, configuri Activity Tracker Event Routing utilizzando HCL ( HashiCorp Configuration Language). Per ulteriori informazioni, vedi la documentazione Terraform.
Utilizzo diretto delle risorse del provider IBM Cloud
Il seguente codice mostra un file di configurazione di esempio per definire la configurazione dell'impostazione account:
resource "ibm_atracker_settings" "atracker_settings" {
metadata_region_primary = var.atracker_metadata_region_primary
metadata_region_backup = var.atracker_metadata_region_backup
default_targets = ["comma-separated-list-of-target-ids"]
permitted_target_regions = ["comma-separated-list-of-locations"]
private_api_endpoint_only = false
# Optional but recommended lifecycle flag
lifecycle {
create_before_destroy = true
}
}
Il codice riportato di seguito mostra le configurazioni di esempio per definire una destinazione:
# Target type: cloud-object-storage
# Using service to service authorization
resource "ibm_atracker_target" "atracker_target" {
cos_endpoint {
endpoint = var.cos_endpoint
target_crn = var.cos_target_crn
bucket = var.cos_bucket_name
service_to_service_enabled = true
}
name = "<Target-Name>"
target_type = "cloud_object_storage"
region = "us-south"
}
# Target type: cloud-object-storage
# Using a service ID Api key
resource "ibm_atracker_target" "atracker_target" {
cos_endpoint {
endpoint = var.cos_endpoint
target_crn = var.cos_target_crn
bucket = var.cos_bucket_name
api_key = "api_key"
}
name = "<Target-Name>"
target_type = "cloud_object_storage"
region = "us-south"
}
# Target type: cloud_logs
# Using a service ID API key
resource "ibm_atracker_target" "atracker_cloudlogs_target" {
cloudlogs_endpoint {
target_crn = "crn:v1:bluemix:public:logs:eu-es:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::"
}
name = "<Target-Name>"
target_type = "cloud_logs"
region = "us-south"
}
# Target type: event-streams
# Using a service ID API key
resource "ibm_atracker_target" "atracker_eventstreams_target" {
eventstreams_endpoint {
target_crn = "crn:v1:bluemix:public:logs:us-south:a/11111111111111111111111111111111:22222222-2222-2222-2222-222222222222::"
brokers = ["xxxxx.cloud.ibm.com:9093","yyyyy.cloud.ibm.com:9093"]
topic = "my-topic"
api_key = "api-key"
}
name = "<Target-Name>"
target_type = "event_streams"
region = "us-south"
}
Il seguente codice mostra le configurazioni di esempio per definire un instradamento:
## Create a route to route auditing events from Frankfurt
resource "ibm_atracker_route" "atracker_route_instance" {
lifecycle {
create_before_destroy = true
}
name = "<Route-Name>"
rules {
target_ids = [ibm_atracker_target.atracker_target.id]
locations = ["eu-de"]
}
}
## Create a route to route auditing events from 2 regions and also global events.
resource "ibm_atracker_route" "atracker_route_instance-global" {
name = var.route_name-global
rules {
target_ids = [ibm_atracker_target.atracker_target-global.id]
locations = ["global", "us-south", "eu-de"]
}
}
## Create a route that includes multiple rules.
resource "ibm_atracker_route" "atracker_route_instance-global" {
name = var.route_name-global
rules {
target_ids = [ibm_atracker_target.atracker_target-global.id]
locations = ["eu-gb", "eu-de"]
}
rules {
target_ids = [ibm_atracker_target.atracker_eventstreams_target.id]
locations = ["us-south", "global"]
}
}
Utilizzo dei moduli Terraform IBM
In alternativa, si possono usare i moduli Terraform IBM per IBM Cloud Activity Tracker Event Routing, che forniscono configurazioni precostituite secondo le migliori pratiche di IBM Cloud.
module "activity_tracker" {
source = "terraform-ibm-modules/activity-tracker/ibm"
version = "X.Y.Z" # Replace with a specific release version
cos_targets = [{
bucket_name = var.cos_bucket_name
endpoint = var.cos_endpoint
instance_id = var.cos_target_crn
target_region = "us-south"
target_name = "<Target-Name>"
}]
activity_tracker_routes = [{
route_name = "<Route-Name>"
locations = ["eu-de"]
target_ids = [module.activity_tracker.activity_tracker_targets[var.cos_bucket_name].id]
}]
}
Passo 7. Esegui provisioning delle risorse
Completa i seguenti passi:
-
Inizializza la CLI Terraform.
./terraform init -
Creare un piano di esecuzione Terraform. Il piano di esecuzione Terraform riepiloga tutte le azioni che devono essere eseguite per creare l'istanza Activity Tracker, la chiave della risorsa e la politica di accesso IAM nel tuo account.
./terraform plan -
Creare le risorse.
./terraform applyPer eliminare le risorse, eseguire
./terraform destroy.
Operazioni successive
Verificare che le risorse siano state create.
Esplora tutti i moduli disponibili nel registro Terraform IBM Modules(TIM).