如何使用 Terraform 在 Vultr 上配置云基础设施

简介

Terraform 是一种声明式语言,允许创建、更新和删除基础架构资源。Terraform 允许你在一个文件中直接定义资源,而不是编写创建资源的步骤说明。如果资源尚不存在,Terraform 会创建新资源。如果资源已经存在,但可用状态与预期状态不符,Terraform 会对其进行修改。这样就能有效管理基础架构资源,尤其是当基础架构庞大而复杂时。

Terraform 由核心和提供者两个主要组件组成:

  • 核心组件读取配置文件,存储资源状态,创建执行计划并应用。
  • 提供者组件创建与各种平台交互的方法,使用它们的应用程序接口,如身份验证和授权、检索或操作资源。每个平台都有一个提供程序。

本文介绍如何使用 Terraform 配置 Vultr 云基础设施。您将使用 Vultr 账户 API 密钥调配云实例、Kubernetes 集群和数据库等多种资源。

前提条件

开始之前

  • 部署一个Ubuntu 服务器作为管理机
  • Vultr 客户门户设置页面激活并复制你的 Vultr API 密钥

    启用后,将管理机器 IP 添加到允许的 IP 子网列表中

  • 使用SSH 访问服务器
  • 创建为非 root sudo 用户
  • 切换到新的 sudo 用户账户
    # su sysadmin
    

    本文使用sysadmin 用户作为示例,请将用户名替换为实际的系统用户账户。

  • 要使用本文中的curl命令,请导出你的 Vultr API 密钥作为系统环境变量,以便使用本文中的curl命令
    导出 VULTR_API_KEY="your-vultr-api-key"
    

安装 Terraform

  1. 将 Terraform GPG 密钥添加到服务器
    $ curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
    
  2. 将 Terraform 官方软件源添加到 APT 源中
    $ sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com focal main"
    
  3. 更新服务器软件包
    $ sudo apt update
    
  4. 在服务器上安装 Terraform
    $ sudo apt install terraform
    

安装 Vultr Terraform 提供程序

Vultr Terraform 提供程序允许你使用 Vultr 账户的 API 密钥创建基础设施资源。请按照以下步骤使用正确信息安装提供程序。

  1. 导航至用户主目录
    $ cd
    
  2. 创建 Terraform 工作区以存储资源文件
    mkdir vultr-terraform
    
  3. 切换到新目录
    cd vultr-terraform
    
  4. 使用Nano 等文本编辑器创建新文件provider.tf,存储 Vultr 提供商信息
    $ nano provider.tf
    
  5. 在文件中添加以下内容
    terraform {
        required_providers {
            vultr = {
                源 = "vultr/vultr"
                版本 = "2.15.1"
            }
        }
    }
    提供者 "vultr" {
        api_key = var.VULTR_API_KEY
    }
    变量 "VULTR_API_KEY" {}
    

    保存并关闭文件。

    上述配置指示 Terraform 使用 Vultr 作为提供程序,其标识符值为vultr/vultr,版本为2.15.1。要查找最新版本,请访问Vultr 提供程序 GitHub 代码库

  6. 创建一个名为terraform.tfvars的新文件,定义你的 Vultr API 密钥
    $ nano terraform.tfvars
    
  7. 在文件中添加以下指令。将your_vultr_api_key替换为你的实际值 Vultr API 密钥
    VULTR_API_KEY = "your_vultr_api_key"
    

    保存并关闭文件。

  8. 初始化 Terraform 以安装 Vultr Terraform 提供商
    $ terraform init
    

    成功后,输出结果应如下所示:

    Terraform 已成功初始化!
    现在可以开始使用 Terraform 了。尝试运行 "terraform plan",查看
    基础设施所需的任何更改。所有 Terraform 命令
    现在应该可以运行了。
    

你已经激活并验证了 Terraform,使其与你的 Vultr 账户协同工作。你可以定义资源并将它们部署到你的账户,就像通过图形化的 Vultr 客户门户网站一样。

部署 Vultr 云实例

要使用 Terraform 部署 Vultr 云实例,请选择所需的服务器名称、规格和区域。然后,定义 Terraform 实例详细信息,并将更改应用到你的 Vultr 账户,如下所述。

  1. 创建新的 Terraform 资源文件vultr_instance.tf
    $ nano vultr_instance.tf
    
  2. 在文件中添加以下内容
    resource "vultr_instance" "my_instance" {
        label = "sample-server
        计划 = "vc2-1c-1gb"
        region = "sgp"
        os_id = "387"
        enable_ipv6 = true
    }
    

    保存并关闭文件。

    以下是上述模块文件的定义:

    • vultr_instance:设置你打算部署的 Vultr 资源类型,vultr_instance声明一个服务器实例。用你想要的别名替换example_ubuntu_instance的值,以区分实例。
    • label标签):指定实例标签。用你想要的实例名称替换sample-server,以便在你的 Vultr 账户中唯一标识该资源。
    • planvc2-1c-1gb计划匹配vc2 类型、1 个 vCPU 内核和 1 GB 内存的 Vultr 实例。要查看所有可用计划的完整列表,请访问Vultr 计划文档
    • 区域:指定部署实例所需的 Vultr 区域。sgp会将实例部署到新加坡的 Vultr 位置。要查看所有可用地区的列表,请访问Vultr 数据中心位置页面,并使用位置的简称。例如,NJ表示新泽西州。使用以下命令按 ID 列出可用地点:
      $ curl "https://api.vultr.com/v2/regions" \
        -X GET \
        -H "Authorization:Bearer ${VULTR_API_KEY}"
      
    • os_id:通过 ID 设置实例操作系统 (OS)。值387代表 Ubuntu 20.04。要查看所有可用操作系统代码的列表,请运行以下命令:
      $ curl "https://api.vultr.com/v2/plans" \
        -X GET \
        -H "Authorization:Bearer ${VULTR_API_KEY}"
      
    • enable_ipv6: 在 Vultr 实例上启用公共 IPV6 地址
  3. 预览即将应用的更改
    $ terraform plan
    

    输出:

    Terraform 使用所选提供程序生成了以下执行计划。资源操作用以下符号表示:
      创建
    Terraform 将执行以下操作:
    # 将创建 vultr_instance.example_instance
      资源 "vultr_instance" "example_instance" {
          allowed_bandwidth = (应用后已知)
          app_id = (应用后已知)
          备份 = "禁用"
          date_created = (应用后已知)
          ddos_protection = false
          默认密码 = (敏感值)
          磁盘 = (应用后已知)
    
  4. 创建 Vultr 实例
    $ terraform apply
    

    出现提示时,输入 ""确认要应用更改

    是否要执行这些操作?
    Terraform 将执行上述操作。
    只接受 "是 "来批准。
    输入值: 
    

    成功后,输出结果应如下所示:

    vultr_instance.example_instance:创建...
    vultr_instance.example_instance:仍在创建...[10 秒已过] ...
    ...
    vultr_instance.example_instance:1m22s 后创建完成 [id=e8914416-4900-42bc-a5d0-80772240a29a] ...
    应用完成!资源:1 已添加,0 已更改,0 已销毁。
    

您已在新加坡 Vultr 区域部署了一个 Ubuntu 20.04 实例,该实例有 1 个 vCPU 和 1 GB 内存。要查看实例详情,请访问 Vultr 账户仪表板,或使用 Vultr CLI 在终端会话中显示登录信息和使用统计信息。

A Vultr Instance Deployed using Terraform

部署 Kubernetes 集群

  1. 创建一个新的 Kubernetes 资源文件kubernetes_cluster.tf
    $ nano kubernetes_cluster.tf
    
  2. 在文件中添加以下内容
    resource "vultr_kubernetes" "first_kubernetes_cluster" {
        region = "sgp"
        标签 = "我的群集"
        版本 = "v1.27.2 1"
        节点池 {
            节点数量 = 3
            plan = "vc2-2c-4gb"
            label = "my-app-nodes"
            auto_scaler = true
            min_nodes = 1
            max_nodes = 4
        }
    }
    

    保存并关闭文件。

    以下是上述文件中的资源定义:

    • vultr_kubernetes:将 Vultr Kubernetes 引擎(VKE)设为资源类型。first_kubernetes_cluster是区分 Terraform 资源的模块别名,请用你想要的值替换它
    • 区域:定义目标 Vultr 数据中心区域。sgp会在 Vultr 新加坡区域部署 VKE 集群
    • label标签):设置 Kubernetes 集群标签。用描述集群的理想标签替换my-cluster
    • 版本:指定目标 Kubernetes 版本。要查看可用的 VKE 版本,请运行以下命令:
      $ curl https://api.vultr.com/v2/kubernetes/versions
      

      可用版本应如下所示显示在输出中:

      {"版本":["v1.27.2 1", "v1.26.5 1", "v1.25.10 1"]}
      
    • 节点池:定义 VKE 节点规格
    • 节点数量:设置要添加到群集中的 VKE 节点数量
    • planvc2-2c-4gb定义了具有 2 个 vCPU 内核和 4 GB 内存的常规计算节点。查看Vultr 计划列表,设置所需的 VKE 节点规格。
    • 标签:定义 VKE 节点的描述性标签。将my-app-nodes替换为所需的节点标签
    • auto-scalertrue可启用 VKE 节点上的自动缩放,false则禁用自动缩放。
    • min_nodes:设置池中的最小节点数
    • max_nodes设置节点池中的最大节点数

    要创建 VKE 群集,请确认节点池中至少有1 个已定义的节点。上述模块文件创建了一个 3 节点的 VKE 群集

  3. 查看即将应用的 Terraform 更改
    $ terraform 计划
    
  4. 创建 Kubernetes 集群
    terraform 应用
    

    出现提示时,输入 "",应用更改以创建 VKE 群集。等待集群创建完成并显示以下输出,并记下生成的集群 ID:

    vultr_kubernetes.first_kubernetes_cluster:仍在创建中...[已过 2 分钟 40 秒]
    vultr_kubernetes.first_kubernetes_cluster:仍在创建...[2m50s 已过]
    vultr_kubernetes.first_kubernetes_cluster:仍在创建...[3m0s 已过]
    vultr_kubernetes.first_kubernetes_cluster:3m6s后创建完成 [id=e565d8a5-480b-47f0-930e-a974d2767fef]
    应用完成!资源:1 已添加,0 已更改,0 已销毁。
    

您创建了一个 3 节点的 Vultr Kubernetes 引擎集群,可自动扩展至最多 4 个节点。要查看集群信息,请访问你的 Vultr 账户仪表板,或使用 Vultr CLI 查看集群统计数据的详细输出。

Deployed Vultr Kubernetes Engine Cluster

向 Vultr Kubernetes 引擎(VKE)集群添加节点池

要添加新节点池并扩展 VKE 群集,请编辑群集 terraform 资源文件,并按下文所述定义新节点。

  1. 编辑kubernetes_cluster.tf文件
    $ nano kubernetes_cluster.tf
    
  2. 在文件末尾添加以下配置。用群集创建输出中显示的 ID 替换vke_cluster_id
    资源 "vultr_kubernetes_node_pools" "additional_node_pools" {
        cluster_id = "${vultr_kubernetes.first_kubernetes_cluster.id}" node_quantity = 1
        节点数量 = 1
        plan = "vc2-4c-8gb"
        label = "additional-node-pool"
        tag = "additional-node-pool"
        auto_scaler = true
        min_nodes = 1
        max_nodes = 2
    }
    

    保存并关闭文件。

    下面是节点资源定义的内容:

    • vultr_kubernetes_node_pools:定义 Vultr Kubernetes 节点池资源类型
    • additional-node-pools:为 Terraform 资源名称设置别名
    • cluster_id:设置目标 VKE 集群,以便使用额外节点进行扩展。${vultr_kubernetes.first_kubernetes_cluster.id}代表别名为first_kubernetes_cluster的集群。
    • 节点数量:定义额外节点的总数
    • planvc2-4c-8GB:定义具有 4 个 vCPU 内核和 8 GB 内存的节点。
    • label:标签:定义自定义描述性节点标签
    • 标签:用于标识节点池的可选标签
    • auto_scaler:激活或关闭群集节点的自动缩放功能
    • min_nodes:设置最小节点数
    • max_nodes设置最大节点数
  3. 创建额外的节点池,并将其附加到现有的 Kubernetes 集群上
    $ terraform apply
    

    输出结果应如下所示

    vultr_kubernetes_node_pools.additional-node-pools:仍在创建中...[1m10s 已过]
    vultr_kubernetes_node_pools.additional-node-pools:仍在创建...[1m20s 已过]
    vultr_kubernetes_node_pools.additional-node-pools:仍在创建...[1m30s 已过]
    vultr_kubernetes_node_pools.additional-node-pools:1m37s 已过 [id=5567557a-7165-5153-524c-4b78483847] 创建完成
    应用完成!资源:1 已添加,0 已更改,0 已销毁。
    

您已经扩展了 Kubernetes 集群,加入了新的额外节点。要验证更改,请访问集群仪表板或使用 Vultr CLI 查看连接到 VKE 集群的节点。

Additional Terraform VKE Nodes

部署对象和块存储卷

您可以在 Vultr 实例上部署与 S3 兼容的 Vultr 对象存储卷或附加块存储卷。根据你选择的存储卷,定义 Terraform 模块配置,以便在你的 Vultr 账户上部署存储,具体步骤如下。

部署 Vultr 对象存储

  1. 创建一个新的object_storage.tf文件
    $ nano object_storage.tf
    
  2. 在文件中添加以下内容
    资源 "vultr_object_storage" "example_object_storage" {
        cluster_id = 4
        标签 = "对象存储示例
    }
    

    保存并关闭文件

    上述配置通过以下声明将 Vultr Object Storage 部署到新加坡 Vultr 区域:

    • cluster_id:设置 Vultr Object Storage 部署区域。值4会将对象存储部署到 Vultr 新加坡区域。要查看区域 ID,请运行以下命令:
      $ curl "https://api.vultr.com/v2/object-storage/clusters" \
        -X GET \
        -H "Authorization:Bearer ${VULTR_API_KEY}"
      
    • 标签:定义用于识别的描述性 Vultr 对象存储标签
  3. 预览即将应用的 Terraform 对象存储变更
    $ terraform 计划
    

    输出:

    # 将创建 vultr_object_storage.newexample_object_storage
      资源 "vultr_object_storage" "newexample_object_storage" {
        cluster_id = 4
        创建日期 = (应用后已知)
        id = (应用后已知)
        标签 = "示例对象存储
    
  4. 将 Vultr Object Storage 卷应用到您的账户
    $ terraform apply
    

    输出:

    vultr_object_storage.example_object_storage:仍在创建...[已过 50 秒]
    vultr_object_storage.example_object_storage:仍在创建...[1m0s 已过]
    vultr_object_storage.example_object_storage:1m2s 已过 [id=397d9828-1b8b-4b7e-85c2-76b2e2529cc7] 创建完成
    应用完成!资源:1 已添加,1 已更改,0 已销毁。
    

在 Vultr Customer Portal 中,导航到Object Storage面板,查看已部署的 Vultr Object Storage。

Terraform Deployed Vultr Object Storage

要创建存储桶,请在服务器上安装 s3cmd CLI 工具并管理 Vultr 对象存储

部署 Vultr 块存储

  1. 创建新的block_storage.tf文件
    $ nano block_storage.tf
    
  2. 在文件中添加以下内容
    资源 "vultr_block_storage" "example_block_storage" {
    size_gb = 10
    区域 = "sgp"
    label = "新建块存储"
    }
    

    保存并关闭文件

    以下是资源配置所代表的内容:

    • vultr_block_storage:将 Vultr 块存储定义为资源类型
    • example_block_storage:设置资源别名
    • size_gb:定义 Vultr 块存储卷空间。支持的数值范围为10至 40000 GB。
    • 区域:设置目标 Vultr 块存储部署区域
  3. 预览即将应用的 Terraform 块存储变更
    $ terraform 计划
    
  4. 将 Vultr Object Storage 卷应用到您的账户
    $ terraform 应用
    

    输出:

    vultr_block_storage.ubuntu_block_storage:仍在创建...[已过 20 秒]
    vultr_block_storage.ubuntu_block_storage:22秒后创建完成 [id=4c916f24-1e99-415c-9ddb-cf16f67f3f76]
    应用完成!资源:1 已添加,0 已更改,1 已销毁。
    

要验证您的 Vultr Object Storage Volume 部署是否正确,请访问您的 Vultr 账户仪表板或使用 Vultr CLI 获取实例详细信息

Deployed Vultr Block Storage Volume

将块存储附加到 Vultr 云实例

  1. 编辑vultr_instance.tf文件
    $ nano block_storage.tf
    
  2. 更新文件,在attached_to_instance声明中加入 Vultr 实例资源别名 ID
    资源 "vultr_block_storage" "example_block_storage" {
    size_gb = 10
    region = "sgp"
    attached_too_instance = "${vultr_instance.my_instance.id}" }
    }
    

    保存并关闭文件。

    attached_to_instance声明指示 Terraform 将 Vultr 块存储卷附加到目标实例别名 ID。用之前创建的实际 Vultr 服务器实例别名替换my_instance.id 值。

  3. 应用更改,为 Vultr 实例添加块存储
    $ terraform apply
    

    输出:

    vultr_block_storage.example_block_storage:正在修改...[id=168db64d-c2a1-435c-9f01-8af7279a8fcb]
    vultr_block_storage.example_block_storage:仍在修改...[id=168db64d-c2a1-435c-9f01-8af7279a8fcb,10秒已过]
    vultr_block_storage.example_block_storage:修改在 14 秒后完成 [id=168db64d-c2a1-435c-9f01-8af7279a8fcb] Apply complete!
    应用完成!资源:添加 0 个,更改 1 个,销毁 0 个。
    

    在 Vultr Block Storage 面板中,验证卷是否连接到服务器。要在服务器上使用 Vultr Block Storage 卷,请将其挂载到/mnt等服务器目录,以便所有系统用户访问。

View Attached Block Storage Volume

部署托管数据库

在本节中,声明 Terraform 资源定义,以便

  • 创建受管数据库
  • 向托管数据库添加用户
  • 查看已部署的托管数据库

创建 Vultr 受管数据库

  1. 创建新的数据库资源文件database.tf
    $ nano database.tf
    
  2. 在文件中添加以下声明
    资源 "vultr_database" "prod_redis_database" {
        数据库引擎 = "redis
        数据库引擎版本 = "7"
        区域 = "sgp"
        plan = "vultr-dbaas-startup-occ-mo-2-26-16"
        label = "生产数据库"
    }
    

    保存并关闭文件。

    上述 Vultr Managed Database for Redis 资源配置代表以下值:

    • vultr_database:定义 Vultr 受管数据库资源
    • database_engine:设置 Vultr 受管数据库引擎,redis定义 Redis 数据库。支持的值有redismysqlpg
    • 数据库引擎版本:设置 Vultr 受管数据库版本。7部署 Redis 7.0 Vultr 数据库。要查看可用版本,请访问创建数据库 Vultr API 页面
    • 区域:定义 Vultr 受管数据库区域,sgp将数据库部署到新加坡 Vultr 区域
    • 计划:设置 Vultr 托管数据库计划 ID。vultr-dbaas-startup-occ-mo-2-26-16定义了使用 2 个 vCPus 和 16GB 内存的后端服务器的数据库。要查看可用计划列表,请运行以下命令:
      $ curl "https://api.vultr.com/v2/databases/plans" -X GET -H "Authorization:Bearer ${VULTR_API_KEY}" > export.txt
      

      找到所需的计划,并在输出中验证支持的引擎,如下所示:

      {"id":"vultr-dbaas-startup-occ-mo-2-26-16","number_of_nodes":1,"type":"occ_mo","vcpu_count":2,"ram":16384,"disk":42,"monthly_cost":160,"supported_engines":{"mysql":false,"pg":false,"redis":true},
      
    • 标签:为 Vultr 托管数据库定义自定义描述性标签。用你想要的值替换production-database
  3. 预览即将应用的更改
    $ terraform 计划
    

    你应该会在控制台中看到类似的输出

    Terraform 将执行以下操作:
    # 将创建 vultr_database.redis
      资源 "vultr_database" "prod_redis_database" {
          数据库引擎 = "redis
          数据库引擎版本 = "7"
          label = "生产数据库"
          plan = "vultr-dbaas-startup-occ-mo-2-26-16"
          region = "sgp"
        }
    计划:1 表示添加,0 表示更改,0 表示销毁。
    
  4. 应用更改以部署 Vultr 受管数据库
    $ terraform apply
    

    输出:

    vultr_database.redis:正在创建...
    vultr_database.redis: 仍在创建...[10 秒已过]
    vultr_database.redis: 仍在创建...[4m50s 已过]
    vultr_database.redis:4m56s 已过 [id=3339b4b9-55db-4b1e-9ce9-130ea1bc686f] 创建完成
    应用完成!资源:1 已添加,0 已更改,0 已销毁。
    

您已经部署了一个 Vultr 受管数据库,请访问您的 Vultr 账户控制面板或使用 Vultr CLI 查看数据库详细信息。

A Terraform Deployed Vultr Managed Database

创建新的 Vultr 受管数据库用户

  1. 编辑 database.tf文件
    $ nano database.tf
    
  2. 在文件末尾添加以下声明
    资源 "vultr_database_user" "new_redis_database_user" {
        database_id = "${vultr_database.prod_redis_database.id}" 数据库id
        用户名 = "redisUser"
        密码 = "redisPassword"
    }
    

    保存并关闭文件。

    • vultr_database_user:定义新的 Vultr 受管数据库用户资源
    • new_redis_database_user:设置资源别名 ID 名称
    • database_id:设置应用新用户的目标数据库别名资源 ID。prod_redis_database.id 指向先前部署的 Vultr 托管数据库资源。
    • username:定义新的数据库用户名
    • password:设置新的数据库用户密码
  3. 应用更改以创建新的 Vultr 托管数据库用户
    $ terraform apply
    

    输出:

    vultr_database.redis:正在修改...[id=4f87efba-d514-4ed0-876c-669b04ae3e78]
    vultr_database.redis:修改在 6 秒后完成 [id=4f87efba-d514-4ed0-876c-669b04ae3e78]
    vultr_database_user.redis_database_user:创建...
    vultr_database_user.redis_database_user:7秒后创建完成 [id=redisUser]
    应用完成!资源:1 已添加,1 已更改,0 已销毁。
    

您已向 Vultr 受管数据库添加了一个新用户,要验证新用户,请使用您的 Vultr 账户或 Vultr CLI 访问受管数据库控制面板

View the new Vultr Managed Database User

创建 Vultr 虚拟私有云 (VPC)

Vultr 虚拟私有云(VPC)是一个隔离的私有网络,可将多个 Vultr 实例互连到同一子网。Vultr 提供 VPC 和 VPC 2.0 两种产品,用于将 Vultr 实例互连在一起。在本节中,我们将按照下文所述把这两个 VPC 版本部署到你的 Vultr 账户。

部署 Vultr VPC 网络

  1. 创建新的 VPC 资源vpc.tf
    $ nano vpc.tf
    
  2. 在文件中添加以下内容
    资源 "vultr_vpc" "prod_vpc" {
        description = "生产服务器 VPC
        区域 = "sgp"
        v4_subnet = "192.168.0.0"
        v4_subnet_mask = 24
    }
    

    保存并关闭文件。

    以下是上述资源定义所代表的内容:

    • vultr_vpc:定义 Vultr VPC 资源类型
    • prod_vpc:设置用于标识的资源别名
    • description描述):定义 Vultr VPC 的描述性标签
    • 区域:设置部署 VPC 的 Vultr 区域
    • v4_子网定义 Vultr VPC 私有 IP 地址子网。可以使用以下任何允许的 RFC1918 地址类别:
      10.0.0.0 - 10.255.255.255(10/8 前缀)
      172.16.0.0 - 172.31.255.255(172.16/12 前缀)
      192.168.0.0 - 192.168.255.255(192.168/16 前缀)
      
    • v4_subnet_mask:设置专用 IP 地址子网掩码。24为 VPC IP 块设置255.255.255.0子网掩码
  3. 应用更改以创建 Vultr VPC
    $ terraform apply
    

    输出:

    vultr_vpc.prod_vpc:创建...
    vultr_vpc.prod_vpc:7 秒后创建完成 [id=61591879-383c-44fa-a8ee-cbbbe3f500cb] 返回结果
    

您已创建 Vultr VPC 资源。要验证专用网络,请访问你的Vultr 账户VPC 网络页面

View Terraform deployed Vultr VPCs

将 Vultr VPC 附加到 Vultr 云实例

  1. 编辑目标 Vultr 云实例文件
    $ nano vultr_instance.tf
    
  2. 更新文件,在vpc_ids声明中加入部署过程中生成的 Vultr VPC ID
    资源 "vultr_instance" "my_instance" {
    label = "sample-server
    plan = "vc2-1c-1gb"
    region = "sgp"
    os_id = "387"
    enable_ipv6 = true
    vpc_ids = ["61591879-383c-44fa-a8ee-cbbbe3f500cb"])
    }
    

    保存并关闭文件

  3. 将更改应用到 Vultr 账户
    $ terraform apply
    

    输出:

    vultr_instance.mynew_instance:仍在修改...[id=db294f28-e98e-4eb5-9d16-192c6210f528,10 秒已过] vultr_instance.
    vultr_instance.mynew_instance:修改在 18 秒后完成 [id=db294f28-e98e-4eb5-9d16-192c6210f528] Apply complete!
    应用完成!资源:新增 0 个,更改 2 个,销毁 0 个。
    

在 Vultr 客户门户中,访问 Vultr 实例设置页面,验证是否已连接到 Vultr VPC 网络。

Attached Vultr VPC Network on an Instance

销毁 Terraform 基础架构资源

  1. 要销毁 Vultr 账户中已部署的 Terraform 基础架构资源,请使用以下语法定义目标资源
    $ terraform destroy -target=Vultr-resource_type.resource-name
    

    例如,要销毁之前部署的 Vultr 云实例,请运行以下命令

    $ terraform destroy -target=vultr_instance_my_instance
    

    出现提示时,请确认要销毁的资源,输入yes,然后按ENTER 键销毁 Vultr 实例,如以下输出所示:

    # vultr_block_storage.example_block_storage 将被销毁
    - 资源 "vultr_block_storage" "example_block_storage" {
        - attached_too_instance = "db294f28-e98e-4eb5-9d16-192c6210f528" -> null
        - block_type = "high_perf" -> null
      }
    # vultr_instance.mynew_instance 将被销毁
    - 资源 "vultr_instance" "mynew_instance" {
        - allowed_bandwidth = 3 -> null
        - app_id = 0 -> null
    你真的想销毁所有资源吗?
      如上图所示,Terraform 会销毁所有受管基础设施。
      无法撤销。确认时只接受 "是"。
      输入一个值: 
    
  2. 要删除使用 Terraform 部署的所有云基础设施资源,请运行以下命令:
    $ terraform destroy
    

    不建议运行上述命令,使用该命令时,请确认你正在销毁使用 Terraform 部署的正确 Vultr 资源

    确认要销毁的基础架构资源,然后输入yes以销毁所有资源。若要取消,请按CTRLC成功后,输出结果应如下所示:

    计划:0 表示添加,0 表示更改,7 表示销毁。
    真的要销毁所有资源吗?
      如上图所示,Terraform 会销毁所有受管基础架构。
      无法撤销。只接受 "是 "来确认。
      输入值:是
    vultr_vpc.prod_vpc:正在销毁...[id=61591879-383c-44fa-a8ee-cbbbe3f500cb]
    vultr_database_user.new_redis_database_user:销毁...[id=redisUser]
    vultr_object_storage.example_object_storage:正在销毁...[id=397d9828-1b8b-4b7e-85c2-76b2e2529cc7]
    vultr_block_storage.example_block_storage:销毁...[id=168db64d-c2a1-435c-9f01-8af7279a8fcb]
    vultr_object_storage.newexample_object_storage:销毁...[id=638a9869-f66f-47ab-a442-1fd096fd24b4]
    vultr_object_storage.example_object_storage:4秒后销毁完成   
    

Terraform 命令

要正确运行 Terraform 以部署 Vultr 云基础设施资源,请按照以下操作命令初始化、验证并将资源配置应用到 Vultr 帐户。

  • 初始化:初始化 Terraform 工作目录并安装定义的提供程序插件
  • 刷新:读取云基础设施资源的状态,更新 Terraform 状态文件以匹配资源状态
  • 验证:查找 Terraform 资源文件中的任何语法、格式错误或错误配置
  • 计划:列出即将应用到 Vultr 账户的 Terraform 变更
  • 应用:将已定义的 Terraform 资源配置应用到 Vultr 账户
  • 销毁:删除工作项目目录中同步的 Vultr 云基础设施 Terraform 资源

有关 Terraform 命令的更多信息,请访问官方 CLI 文档

结论

您已经安装了 Terraform 和 Vultr Terraform 提供商,可以使用 Vultr API 密钥调配云资源。你可以创建多个项目目录,在多个位置存储不同的资源定义,并使用terraform destroy 等强命令避免覆盖任何更改。有关如何使用 Terraform 的更多信息,请访问Vultr Terraform 注册表

版权声明:
作者:指北针
链接:https://www.vpscue.com/48682.html
来源:主机指北
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
如何使用 Terraform 在 Vultr 上配置云基础设施
简介 Terraform 是一种声明式语言,允许创建、更新和删除基础架构资源。Terraform 允许你在一个文件中直接定义资源,而不是编写创建资源的步骤说明。如果资源……
<<上一篇
下一篇>>