Configurer Activity Tracker Event Routing dans le compte en utilisant Terraform
Terraform sur IBM Cloud® permet une mise à disposition prévisible et cohérente des services IBM Cloud de sorte que vous puissiez générer rapidement des environnements de cloud complexes et multiniveaux qui suivent les principes de l'infrastructure en tant que code (IaC). Comme pour l'utilisation de la CLI ou de l'API et des SDK de IBM Cloud, vous pouvez automatiser la création, la mise à jour et la suppression de vos ressources Activity Tracker Event Routing en utilisant le langage de configuration HashiCorp (HCL).
Vous pouvez également utiliser des modules Terraform IBM (TIM) préconstruits, open-source et prêts pour l'entreprise pour IBM Cloud Activity Tracker Event Routing pour configurer les cibles, les itinéraires et les paramètres de compte. Ce module simplifie la création et la gestion des cibles et des routes en suivant les meilleures pratiques.
Vous recherchez un Terraform géré sur une solution IBM Cloud ? Essayez IBM Cloud® Schematics. Avec Schematics, vous pouvez utiliser le langage de script Terraform que vous connaissez, mais vous n'avez pas à vous inquiéter de la configuration et de la maintenance de la ligne de commande Terraform et du plug-in IBM Cloud Provider. Schematics fournit également des modèles Terraform prédéfinis que vous pouvez installer à partir du catalogue IBM Cloud.
Avant de commencer, assurez-vous de disposer de l'accès requis pour créer et utiliser des ressources Activity Tracker Event Routing. Vous avez également besoin de droits pour gérer les ressources cible.
Etape 1. Installation de l'interface de ligne de commande Terraform
Pour installer l'interface de ligne de commande Terraform, procédez comme suit :
-
Créez un dossier terraform sur votre machine locale et accédez à votre dossier Terraform.
mkdir terraform && cd terraform -
Téléchargez la version souhaitée de Terraform. Par exemple, vous pouvez télécharger
terraform_0.15.5_darwin_amd64.zippour Mac OS.Le plug-in IBM Cloud Provider pour Terraform ne prend actuellement en charge que les versions 0.12.x, 0.13.x et 0.14.x de Terraform. Veillez à sélectionner une version de Terraform prise en charge.
-
Extrayez le fichier zip Terraform et copiez les fichiers dans votre répertoire Terraform.
-
Réglez la variable d'environnement PATH sur vos fichiers Terraform.
export PATH=$PATH:<terraform-directory>/terraform -
Vérifiez que l'installation a abouti en utilisant une commande terraform.
./terraform
Étape 2. Configurez le plug-inProvider IBM Cloud
Une fois l'installation de l'interface de ligne de commande Terraform terminée, vous devez installer le plug-in IBM Cloud Provider pour Terraform pour pouvoir commencer à utiliser les ressources et les services dans IBM Cloud. Pour une liste des versions prises en charge, voir les versions du plug-in IBM Cloud Provider.
L'installation du plug-in IBM Cloud Provider varie en fonction de la version de l'interface de ligne de commande Terraform que vous allez utiliser. Pour exécuter vos fichiers de configuration Terraform avec Terraform version 0.13.x ou ultérieure, il n'est pas nécessaire d'installer le plug-in IBM Cloud Provider pour Terraform. Pour plus d'informations, voir Terraform v0.13.x and higher.
Par exemple, pour exécuter vos fichiers de configuration Terraform avec Terraform version 0.13.x ou ultérieure, procédez comme suit :
-
Créez un fichier
versions.tfet indiquez la version du plug-in IBM Cloud Provider que vous souhaitez utiliser à l'aide du paramètreversion.terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" version = "<provider version>" } } }Exemple :
terraform { required_version = ">= 0.15" required_providers { ibm = { source = "ibm-cloud/ibm" version = "1.48.0-beta0" } } } -
Stockez le fichier
versions.tfdans votre référentiel Git ou dans le dossier d'installation de Terraform.
Si vous utilisez des modules Terraform on IBM Cloud, vous devez ajouter un fichier versions.tf à tous les dossiers de module. Vous pouvez référencer le bloc fournisseur Terraform à partir du registre des fournisseurs. Pour les configurations Activity Tracker Event Routing, vous pouvez utiliser les modules Terraform IBM pour IBM Cloud Activity Tracker Event Routing qui fournissent des modules pré-construits et testés pour les configurations IBM Cloud Activity Tracker Event Routing les plus courantes.
Étape 3. Configurez le plug-in Provider IBM Cloud
Une fois l'installation terminée, vous devez configurer le plug-in IBM Cloud Provider.
Avant de commencer à utiliser Terraform on IBM Cloud, vous devez extraire les données d'identification et les paramètres obligatoires pour une source de données ou une ressource Terraform et les spécifier dans la configuration du provider.
Le plug-in IBM Cloud Provider utilise cette configuration pour s'authentifier auprès de la plateforme IBM Cloud et afficher, créer, mettre à jour ou supprimer des ressources et des services IBM Cloud.
Le tableau ci-dessous répertorie les paramètres d'entrée que vous pouvez définir dans le bloc provider de votre fichier de configuration Terraform on IBM Cloud :
| Paramètre d'entrée | Obligatoire / Facultatif | Description |
|---|---|---|
ibmcloud_api_key |
Obligatoire | Clé d'API IBM Cloud utilisée pour procéder à l'authentification auprès de la plateforme IBM Cloud. Pour plus d'informations sur la création d'une clé d'API, voir Création d'une clé d'API.
Vous pouvez spécifier la clé d'API dans le bloc provider ou extraire la valeur des variables d'environnement IC_API_KEY ou IBMCLOUD_API_KEY. Si les deux variables d'environnement sont définies,
IC_API_KEY prévaut. |
ibmcloud_timeout |
Facultatif | Nombre de secondes à attendre avant que l'API IBM Cloud ne soit considérée comme indisponible. La valeur par défaut est 60. Vous pouvez spécifier le délai d'attente dans le bloc provider ou extraire la valeur
des variables d'environnement |
IC_TIMEOUT ou IBMCLOUD_TIMEOUT. Si les deux variables sont définies, IC_TIMEOUT prévaut. |
||
region |
Facultatif | Région IBM Cloud où vous voulez créer vos ressources. Si cette valeur n'est pas indiquée, us-south est utilisé par défaut. Vous pouvez spécifier la région dans le bloc provider ou extraire la valeur des variables
d'environnement IBMCLOUD_REGION ou IC_REGION. Si les deux variables d'environnement sont définies, IC_REGION prévaut. |
Pour plus d'informations sur l'utilisation des variables d'environnement, voir Using environment variables.
Vous pouvez ajouter plusieurs configurations de fournisseur dans le même fichier de configuration Terraform on IBM Cloud pour créer vos ressources IBM Cloud avec différents paramètres de fournisseur. Par exemple, vous pouvez ajouter plusieurs fournisseurs afin d'utiliser des paramètres d'entrée différents, par exemple des régions, des zones, des générations d'infrastructure ou encore des comptes, et finalement créer les ressources IBM Cloud dans votre fichier de configuration Terraform on IBM Cloud. Pour plus d'informations, voir la référence du bloc fournisseur.
Option 1. Création d'un fichier provider.tf statique
Vous pouvez déclarer les paramètres d'entrée directement dans le bloc provider.
Le bloc provider comportant des informations sensibles, ne le placez pas dans un référentiel source public. Pour ajouter le contrôle des versions à votre configuration de provider, utilisez un fichier terraform.tfvars local.
Procédez comme suit :
-
Créez un fichier
provider.tfet spécifiez les paramètres d'entrée requis pour votre ressource ou votre source de données.provider "ibm" { ibmcloud_api_key = "<api_key>" region = "<region>" }
Option 2. Référencez des données d'identification à partir d'un fichier tfvars Terraform
Vous pouvez stocker des informations sensibles, telles que des données d'identification, dans un fichier terraform.tfvars local et faire référence à ces données d'identification dans votre bloc provider.
Ne placez pas le fichier terraform.tfvars dans un référentiel source public. Ce fichier est censé être stocké sur votre machine locale uniquement.
-
Créez un fichier
terraform.tfvarssur votre machine locale et ajoutez les paramètres d'entrée requis pour votre ressource ou votre source de données.ibmcloud_api_key = "<ibmcloud_api_key>" region = "region" -
Créez un fichier
provider.tfet utilisez la syntaxe d'interpolation Terraform pour faire référence aux variables à partir deterraform.tfvars.variable "ibmcloud_api_key" {} variable "region" {} provider "ibm" { ibmcloud_api_key = var.ibmcloud_api_key region = var.region }
Étape 4. Initialisez l'interface de ligne de commande de Terraform.
Initialisez ensuite l'interface de ligne de commande Terraform. Exécutez la commande suivante :
./terraform init
Le message suivant devrait s'afficher : Terraform has been successfully initialized!.
Étape 5. Créez un fichier de variables
Créez un fichier de variables nommé variables.tf afin d'inclure des valeurs codées en dur.
L'exemple suivant répertorie les variables que vous définissez :
// 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" } ]
}
Pour afficher la liste des régions valides, voir Emplacements.
Étape 6. Créez un fichier de configuration Terraform
Créez ensuite un fichier de configuration Terraform nommé main.tf. Dans ce fichier, vous configurez Activity Tracker Event Routing en utilisant le langage de configuration HashiCorp (HCL). Pour plus d'informations, voir la documentation de Terraform.
Utiliser directement les ressources du fournisseur IBM Cloud
Le code suivant présente un exemple de fichier de configuration pour définir la configuration des paramètres de compte:
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
}
}
Le code suivant présente des exemples de configuration pour définir une cible :
# 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"
}
Le code suivant sont des exemples de configuration pour définir une 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"]
}
}
Utilisation de Terraform IBM Modules
Vous pouvez également utiliser les modules Terraform IBM pour IBM Cloud Activity Tracker Event Routing, qui fournissent des configurations prédéfinies conformes aux meilleures pratiques de 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]
}]
}
Etape 7. Ressources d'approvisionnement
Procédez comme suit :
-
Initialisez l'interface de ligne de commande de Terraform.
./terraform init -
Créez un plan d'exécution Terraform. Le plan d'exécution Terraform récapitule toutes les actions à exécuter pour créer l'instance Activity Tracker, la clé de ressource et la règle d'accès IAM dans votre compte.
./terraform plan -
Créez les ressources.
./terraform applyPour supprimer des ressources, exécutez
./terraform destroy.
Étape suivante ?
Vérifiez que les ressources ont été créées.
Explorez tous les modules disponibles dans le registre Terraform IBM Modules(TIM).