Konfiguration von Activity Tracker Event Routing im Konto unter Verwendung von Terraform
Terraform on IBM Cloud® ermöglicht die vorhersehbare und konsistente Bereitstellung von IBM Cloud-Services, damit Sie schnell komplexe, mehrschichtige Cloudumgebungen erstellen können, die den IaC-Prinzipien (Infrastructure as Code-Code) folgen. Ähnlich wie bei der Verwendung der IBM Cloud CLI oder API und SDKs können Sie die Erstellung, Aktualisierung und Löschung Ihrer Activity Tracker Event Routing Ressourcen mit der HashiCorp Configuration Language (HCL) automatisieren.
Alternativ können Sie vorgefertigte, quelloffene und unternehmenstaugliche Terraform IBM Module (TIM) für IBM Cloud Activity Tracker Event Routing verwenden, um Ziele, Routen und Kontoeinstellungen zu konfigurieren. Dieses Modul vereinfacht die Erstellung und Verwaltung von Zielen und Routen gemäß den bewährten Verfahren.
Sie suchen eine verwaltete Terraform on IBM Cloud-Lösung? Probieren Sie IBM Cloud® Schematics aus. Mit Schematics können Sie die Terraform-Skriptsprache verwenden, mit der Sie vertraut sind, müssen sich jedoch nicht um die Einrichtung und Verwaltung der Terraform-Befehlszeile und des IBM Cloud-Provider-Plug-ins kümmern. Schematics stellt auch vordefinierte Terraform-Vorlagen bereit, die Sie über den IBM Cloud-Katalog installieren können.
Bevor Sie beginnen, müssen Sie sicherstellen, dass sie die erforderlichen Zugriffsrechte zum Erstellen und Arbeiten mit Activity Tracker Event Routing Ressourcen besitzen. Außerdem benötigen Sie Berechtigungen für die Verwaltung der Zielressourcen.
Schritt 1. Terraform-CLI (Befehlszeilenschnittstelle installieren
Führen Sie die folgenden Schritte aus, um die Terraform-CLI zu installieren:
-
Erstellen Sie auf Ihrer lokalen Maschine einen Ordner names Terraform und navigieren Sie zu Ihrem Ordner terraform.
mkdir terraform && cd terraform -
Laden Sie die von Ihnen gewünschte Terraformversion herunter. Sie können zum Beispiel
terraform_0.15.5_darwin_amd64.zipfür MacOS herunterladen.Das IBM Cloud-Provider-Plug-in für Terraform unterstützt derzeit nur die Terraform-Versionen 0.12.x, 0.13.x und 0.14.x. Stellen Sie sicher, dass Sie eine unterstützte Terraform-Version auswählen.
-
Extrahieren Sie die komprimierte Terraform-Datei und kopieren Sie die Dateien in das Verzeichnis terraform.
-
Setzen Sie die Umgebungsvariable PATH auf Ihre Terraform-Dateien.
export PATH=$PATH:<terraform-directory>/terraform -
Überprüfen Sie mit dem Befehl terraform, ob die Installation erfolgreich war.
./terraform
Schritt 2. IBM Cloud Provider-Plug-in einrichten
Nachdem die Installation der Terraform-CLI abgeschlossen ist, müssen Sie das IBM Cloud Provider-Plug-in für Terraform so konfigurieren, dass Sie mit der Arbeit mit Ressourcen und Services in IBM Cloud beginnen können. Eine Liste der unterstützten Versionen finden Sie unter IBM Cloud Provider plug-in releases.
Die Konfiguration des IBM Cloud Provider-Plug-ins hängt von der Terraform-CLI-Version ab, die Sie verwenden möchten. Um Ihre Terraform-Konfigurationsdateien mit Terraform-Version 0.13.x oder höher ausführen zu können, ist die Installation des IBM Cloud Provider-Plug-ins für Terraform nicht erforderlich. Weitere Informationen finden Sie unter Terraform v0.13.x und höher.
Führen Sie zum Beispiel die folgenden Schritte aus, um Ihre Terraform-Konfigurationsdateien mit Terraform-Version 0.13.x oder höher auszuführen:
-
Erstellen Sie eine Datei namens
versions.tfund geben Sie die IBM Cloud Provider-Plug-in-Version an, die Sie mit dem Parameterversionverwenden möchten.terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" version = "<provider version>" } } }Zum Beispiel:
terraform { required_version = ">= 0.15" required_providers { ibm = { source = "ibm-cloud/ibm" version = "1.48.0-beta0" } } } -
Speichern Sie die Datei
versions.tfin Ihrem Git-Repository oder in dem Ordner, in dem Terraform eingerichtet ist.
Wenn Sie Terraform auf IBM Cloud Modulen verwenden, müssen Sie eine Datei versions.tf zu allen Modulordnern hinzufügen. Sie können den Terraform-Provider-Block aus der Provider-Registrierung beziehen. Für Activity Tracker Event Routing Konfigurationen können Sie die Terraform IBM Module für IBM Cloud Activity Tracker Event Routing verwenden, die vorgefertigte, getestete Module für gängige IBM Cloud Activity Tracker Event Routing Konfigurationen bereitstellen.
Schritt 3. IBM Cloud-Provider-Plug-in konfigurieren
Nachdem Sie die Konfiguration abgeschlossen haben, müssen Sie das IBM Cloud-Provider-Plug-in konfigurieren.
Bevor Sie mit der Arbeit mit Terraform unter IBM Cloud beginnen können, müssen Sie die Berechtigungsnachweise und Parameter abrufen, die für eine Terraform-Ressource oder Datenquelle erforderlich sind und sie in der Konfiguration des provider angeben. Diese Konfiguration wird vom IBM Cloud-Provider-Plug-in für die Authentifizierung mit der IBM Cloud-Plattform und zum Anzeigen, Erstellen, Aktualisieren oder Löschen von IBM Cloud-Ressourcen und Services verwendet.
In der folgenden Tabelle werden Eingabeparameter aufgelistet, die Sie im Block provider Ihres Terraforms in der IBM Cloud-Konfigurationsdatei festlegen können:
| Eingabeparameter | Erforderlich/Optional | Beschreibung |
|---|---|---|
ibmcloud_api_key |
Erforderlich | Der IBM Cloud-API-Schlüssel für die Authentifizierung mit der IBM Cloud-Plattform. Weitere Informationen zum Erstellen eines API-Schlüssels finden Sie unter API-Schlüssel erstellen.
Sie können den API-Schlüssel im Block provider angeben oder den Wert aus den Umgebungsvariablen IC_API_KEY oder IBMCLOUD_API_KEY abrufen. Wenn beide Umgebungsvariablen definiert sind, hat IC_API_KEY Vorrang. |
ibmcloud_timeout |
Optionale | Die Anzahl der Sekunden, die gewartet werden soll, bis die IBM Cloud-API als nicht verfügbar angesehen wird. Der Standardwert ist 60. Sie können das Zeitlimit im Block provider angeben oder den Wert aus den Umgebungsvariablen
IC_TIMEOUT oder IBMCLOUD_TIMEOUT abrufen. Wenn beide Variablen angegeben werden, hat IC_TIMEOUT Vorrang. |
region |
Optionale | Die IBM Cloud-Region, in der Sie Ihre Ressourcen erstellen möchten. Wenn dieser Wert nicht angegeben ist, wird standardmäßig us-south verwendet. Sie können die Region im Block provider angeben oder den Wert aus
den Umgebungsvariablen IBMCLOUD_REGION oder IC_REGION abrufen. Wenn beide Umgebungsvariablen angegeben werden, hat IC_REGION Vorrang. |
Weitere Informationen zur Verwendung von Umgebungsvariablen finden Sie unter Umgebungsvariablen verwenden.
Sie können mehrere Providerkonfigurationen in derselben Terraform in der IBM Cloud-Konfigurationsdatei hinzufügen, um Ihre IBM Cloud-Ressourcen mit unterschiedlichen Providerparametern zu erstellen. Sie können z. B. mehrere Provider verwenden, damit Sie verschiedene Eingabeparameter, wie z. B. verschiedene Regionen, Zonen, Infrastrukturgenerationen oder Konten, verwenden können, um die IBM Cloud-Ressourcen in Ihrem Terraform in der IBM Cloud-Konfigurationsdatei zu erstellen. Weitere Informationen finden Sie in der Referenz des Anbieterblocks.
Option 1. Statische provider.tf-Datei erstellen
Sie können die Eingabeparameter direkt im Block provider deklarieren.
Da der provider-Block sensible Informationen enthält, müssen Sie diese Datei nicht in ein öffentliches Quellenrepository übertragen. Um die Versionskontrolle zu Ihrer Anbieterkonfiguration hinzuzufügen, verwenden Sie eine lokale
terraform.tfvars Datei.
Führen Sie die folgenden Schritte aus:
-
Erstellen Sie eine Datei
provider.tfund geben Sie die Eingabeparameter an, die für Ihre Ressource oder Datenquelle erforderlich sind.provider "ibm" { ibmcloud_api_key = "<api_key>" region = "<region>" }
Option 2. Berechtigungsnachweise aus einer Terraform-tfvars-Datei referenzieren
Sie können sensible Informationen, wie z. B. Berechtigungsnachweise, in einer lokalen Datei terraform.tfvars speichern und diese Berechtigungsnachweise in Ihrem provider-Block referenzieren.
Binden Sie die Datei terraform.tfvars nicht in ein öffentliches Quellenrepository ein. Diese Datei sollte nur auf Ihrem lokalen Rechner gespeichert werden.
-
Erstellen Sie eine Datei mit dem Namen
terraform.tfvarsauf Ihrem lokalen Rechner und fügen Sie die Eingabeparameter hinzu, die für Ihre Ressource oder Datenquelle erforderlich sind.ibmcloud_api_key = "<ibmcloud_api_key>" region = "region" -
Erstellen Sie eine Datei
provider.tfund verwenden Sie die Interpolationssyntax für Terraform, um auf die Variablen aus denterraform.tfvarszu verweisen.variable "ibmcloud_api_key" {} variable "region" {} provider "ibm" { ibmcloud_api_key = var.ibmcloud_api_key region = var.region }
Schritt 4. Terraform-Befehlszeilenschnittstelle initialisieren.
Initialisieren Sie die Terraform-CLI. Führen Sie den folgenden Befehl aus:
./terraform init
Die folgende Nachricht sollte angezeigt werden: Terraform has been successfully initialized!.
Schritt 5. Variablendatei erstellen
Erstellen Sie eine Variablendatei mit dem Namen variables.tf, um fest codierte Werte einzuschließen.
Im folgenden Beispiel werden Variablen aufgelistet, die Sie definieren:
// 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" } ]
}
Eine Liste der gültigen Regionen finden Sie unter Standorte.
Schritt 6. Terraform-Konfigurationsdatei erstellen
Erstellen Sie eine Terraform-Konfigurationsdatei, die den Namen main.tf hat. In dieser Datei konfigurieren Sie Activity Tracker Event Routing mit Hilfe der HashiCorp Configuration Language (HCL). Weitere Informationen finden Sie
in der Terraform-Dokumentation.
Direkte Nutzung der Ressourcen von IBM Cloud Provider
Der folgende Code zeigt eine Beispielkonfigurationsdatei zum Definieren der Konfiguration der Kontoeinstellungen:
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
}
}
Der folgende Code zeigt Beispielkonfigurationen zum Definieren eines Ziels:
# 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"
}
Der folgende Code zeigt Beispielkonfigurationen zum Definieren einer Route:
## 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"]
}
}
Verwendung von Terraform IBM Modulen
Alternativ können Sie auch die Terraform IBM Module für IBM Cloud Activity Tracker Event Routing verwenden, die vorgefertigte Konfigurationen gemäß IBM Cloud Best Practices bereitstellen.
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]
}]
}
Schritt 7. Ressourcen bereitstellen
Führen Sie die folgenden Schritte aus:
-
Terraform-Befehlszeilenschnittstelle initialisieren.
./terraform init -
Erstellen Sie einen Terraform-Ausführungsplan. Der Terraform-Ausführungsplan fasst alle Aktionen zusammen, die ausgeführt werden müssen, um den Activity Tracker-Namespace und die IAM-Zugriffsrichtlinie in Ihrem Konto zu erstellen.
./terraform plan -
Erstellen Sie die Ressourcen.
./terraform applyUm Ressourcen zu löschen, führen Sie
./terraform destroyaus.
Weitere Schritte
Stellen Sie sicher, dass die Ressourcen erstellt werden.
Erkunden Sie alle verfügbaren Module in der Terraform IBM Modules(TIM)Registry.