Terraform

更新时间:
复制 MD 格式

Terraform is an open-source tool for previewing, configuring, and managing cloud infrastructure. This topic describes Terraform basics and how to use Terraform with ApsaraMQ for Kafka.

Overview

Basic features

Terraform automates IT infrastructure orchestration through code-based resource management. For more information, see What is Alibaba Cloud Terraform?

  • Terraform provides a CLI to deploy and version configuration files across Alibaba Cloud and third-party services. You define infrastructure resources such as VMs, storage accounts, and network interfaces in configuration files.

  • Terraform integrates with the Alibaba Cloud provider, enabling you to define, preview, and deploy cloud infrastructure by using templates.

  • Terraform supports creating, modifying, and deleting resources across Alibaba Cloud services, including ECS, VPC, ApsaraDB RDS, and SLB.

To integrate Terraform with Alibaba Cloud, configure the Alibaba Cloud Provider.

Common commands

Terraform manages resource lifecycles through CLI commands for creating, modifying, viewing, and deleting resources. For common Terraform commands, see Common commands.

Benefits

General benefits:

  • Multi-cloud infrastructure deployment

    Deploy similar infrastructure across Alibaba Cloud, other providers, and on-premises data centers using identical tools and configuration files.

  • Automated infrastructure management

    Define, provision, and configure ECS resources repeatably, reducing deployment errors. Reuse templates to create identical development, testing, and production environments.

  • Infrastructure as code

    Manage and maintain resources as code. Terraform tracks infrastructure state, enabling change tracking and configuration sharing across teams.

  • Reduced development costs

    Create development and deployment environments on demand and evaluate changes before applying them to production.

Benefits for ApsaraMQ for Kafka:

  • Declarative infrastructure as code (IaC)

    • Terraform centers on applications, allowing you to create and deploy instances, configure IP address whitelists, and create access control lists (ACLs) declaratively.

    • Write infrastructure code without learning the ApsaraMQ for Kafka API.

    • Integrate with CI/CD pipelines, improving the performance of ApsaraMQ for Kafka on automatic application delivery.

  • Terraform ecosystem

    • LiveDiff previews changes before applying them, ensuring safe resource management.

    • Deploy resources to the desired state reliably.

    • Orchestrate ApsaraMQ for Kafka and its dependencies in a single deployment.

Resource categories

  • Resources

    A resource defines an infrastructure component to create and manage. See Resources in the Terraform documentation.

    The following example creates an ApsaraMQ for Kafka instance:

    resource "alicloud_alikafka_instance" "default" {
      name           = var.instance_name
      partition_num  = 50
      disk_type      = 1
      disk_size      = 500
      deploy_type    = 5
      io_max         = 20
      vswitch_id     = alicloud_vswitch.default.id
      security_group = alicloud_security_group.default.id
    }
  • Data sources

    A data source queries existing resources and their attributes. See Data Sources in the Terraform documentation.

    The following example queries all ApsaraMQ for Kafka instances in an Alibaba Cloud account:

    data "alicloud_alikafka_instances" "instances_ds" {
      name_regex  = "alikafkaInstanceName"
      output_file = "instances.txt"
    }
    
    output "first_instance_name" {
      value = data.alicloud_alikafka_instances.instances_ds.instances.0.name
    }

Use Terraform to manage ApsaraMQ for Kafka resources

Terraform supports the following ApsaraMQ for Kafka resources.

Table 1. Resources

Resource type

Description

alicloud_alikafka_instance

Manage ApsaraMQ for Kafka instances. For more information, see Use Terraform to manage instances.

alicloud_alikafka_instance_allowed_ip_attachment

Manage IP address whitelists of ApsaraMQ for Kafka instances. For more information, see Manage IP whitelists with Terraform.

alicloud_alikafka_consumer_group

Manage ApsaraMQ for Kafka consumer groups. For more information, see Manage Kafka consumer groups with Terraform.

alicloud_alikafka_topic

Manage ApsaraMQ for Kafka topics. For more information, see Manage Kafka topics with Terraform.

alicloud_alikafka_sasl_acl

Manage ApsaraMQ for Kafka ACLs. For more information, see Use Terraform to grant permissions to SASL users.

alicloud_alikafka_sasl_user

Manage ApsaraMQ for Kafka SASL users. For more information, see Use Terraform to manage SASL users.

Table 2. Data sources

Resource type

Description

alicloud_alikakfa_consumer_groups

Query ApsaraMQ for Kafka consumer groups. For more information, see Manage Kafka consumer groups with Terraform.

alicloud_alikakfa_instances

Query ApsaraMQ for Kafka instances. For more information, see Use Terraform to manage instances.

alicloud_alikafka_sasl_acls

Query ApsaraMQ for Kafka ACLs. For more information, see Use Terraform to grant permissions to SASL users.

alicloud_alikafka_sasl_users

Query ApsaraMQ for Kafka SASL users. For more information, see Use Terraform to manage SASL users.

alicloud_alikafka_topics

Query ApsaraMQ for Kafka topics. For more information, see Manage Kafka topics with Terraform.