预配,配置和删除资源

使用 Terraform 在云中有效地部署、更改和删除您的资源。

关于 Terraform 状态文件

Terraform 存储用于跟踪托管基础结构资源的状态信息,将已部署的资源映射到您的配置,跟踪元数据,并改善大型基础结构部署的性能。

默认情况下,terraform.tfstate 文件存储在本地主机上。在 IT 环境中,此默认行为并非最佳,在这种情况下,多个用户需要创建和销毁在给定配置中定义的资源。要控制在多用户环境中部署和管理资源,请将 Terraform 状态文件存储在 Oracle Cloud Infrastructure 对象存储中,并在所有用户之间共享状态文件和锁定文件。

请参阅使用 Terraform 状态文件的对象存储。

创建资源

在 terraform.tfvars 文件中设置变量之后,使用 Terraform CLI 部署 Terraform 配置中定义的资源。

在开始之前,确保本地计算机具有 Internet 访问权限。如果本地计算机位于防火墙后面,请使用适当的代理来允许 Terraform 访问 Internet。
  1. 在安装了 Terraform 的计算机上,转至包含 terraform.tfvars 文件的目录。
  2. 通过运行以下命令初始化 Terraform:
    terraform init
    此命令下载 oci 提供程序插件并设置 Terraform 使用的目录。
  3. 请确保配置的语法没有错误:
    terraform validate
  4. 如果存在语法错误,请修复该错误,并重复上一步。
    要调试问题,您可以配置事件记录:
    • 使用 TF_LOG 环境变量设置日志级别。支持的日志级别包括 TRACE、DEBUG、INFO、WARN 或 ERROR。TRACE 级别最为详细。
    • 使用 TF_LOG_PATH 环境变量设置日志文件路径。
  5. 复查在配置中定义的资源。
    terraform plan
    输出显示在应用此配置时所执行的所有操作的详细信息,以及概要,如以下示例所示。
    Plan: 8 to add, 0 to change, 0 to destroy.

    注:

    消息中的数字 8 就是一个示例。实际数字取决于您在 Terraform 配置中定义的设置。
  6. 如果要进行任何更改,请编辑配置,对其进行验证,然后复查修订的计划。
  7. 创建资源:
    terraform apply
  8. 在提示 Do you want to perform these actions? 上,输入是
    当 Terraform 创建每个资源时,它会显示操作的状态。

    创建所有资源后,将显示消息 Apply complete 以及添加、更改和销毁的资源数,如以下示例所示。

Apply complete! Resources: 33 added, 0 changed, 0 destroyed.

Outputs:

admin_private_ip = 10.0.1.10
bastion_public_ip = 203.0.113.101
kubeconfig = export KUBECONFIG=generated/kubeconfig
ocirtoken = <sensitive>
ssh_to_admin = ssh -i /home/joe/.ssh/id_rsa -J opc@203.0.113.101 opc@10.0.1.10
ssh_to_bastion = ssh -i /home/joe/.ssh/id_rsa opc@203.0.113.101
  • kubeconfig 输出显示可用于在本地主机上设置 KUBECONFIG 环境变量的命令。如果要使用本地主机中的 kubectl CLI 管理 Kubernetes 群集,请运行此命令。该命令将 KUBECONFIG 设置为文件 generated/kubeconfig,该文件在应用配置时 Terraform 会创建该文件。
  • ssh_to_admin 输出显示可用于连接管理主机的 ssh 命令。
  • ssh_to_bastion 输出显示可用于连接到基础主机的 ssh 命令。

注:

通过运行命令 terraform output,可以随时查看此 Terraform 输出
Oracle Cloud 中的 Kubernetes 拓扑已准备就绪。您现在可以部署容器化应用程序。

允许管理主机管理资源

要允许管理主机管理区间中的资源,可以将其指定为实例主用户。如果您打算运行 CLI 命令或从管理主机调用 API 来管理拓扑中的资源,请使用此功能。

指定为实例主体的计算实例将获得自己的唯一标识。它可以使用自动创建并分配给实例的证书进行验证。证书将定期滚动。您不需要向管理主机分发身份证明或者旋转身份证明。

注:

任何可以使用 SSH 连接到计算实例的用户都会继承授予实例的实例委派权限。决定是否将管理主机指定为实例主用户时,请考虑这一点。可以随时关闭或打开此功能,而不会对管理主机造成任何影响。
  • 要将管理主机指定为实例主用户,请在 terraform.tfvars 中设置以下内容,然后运行 terraform apply。

    admin_instance_principal = true

    管理主机将成为动态组的成员,并且会创建一个策略语句以允许动态组管理区间中的所有资源。

  • 要从管理主机撤销实例主用户权限,请在 terraform.tfvars 中设置以下内容,然后运行 terraform apply。

    admin_instance_principal = false

启用或禁用基本主机的通知

应用更新或 Oracle Ksplice 检测到已知的 exploit 尝试时,您可以使用 Oracle Cloud Infrastructure Notification 服务从 bastion 主机接收状态消息。

注:

此解决方案中的 Terraform 代码仅在使用默认 Oracle Autonomous Linux 映像时配置通知。
  • 要为基础主机启用通知,请在 terraform.tfvars 中设置以下变量:

    bastion_notification_enabled = true
    bastion_notification_endpoint = "email_address"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "topic_name"

    下面是 terraform.tfvars 的一个示例以及定义的与通知相关的变量。

    bastion_notification_enabled = true
    bastion_notification_endpoint = "joe@example.com"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "bastion"
  • 如果已创建基础主机并且要立即启用通知,请设置这些变量,然后再次运行 terraform apply。
    • 所需的策略是为了允许基础主机发布通知而定义的。
    • 此时将创建通知主题,指定的电子邮件地址将订阅该主题。
    • Bastion 主机已配置为发送通知。

    创建资源后,您将收到一封电子邮件,提示您确认订阅。

  • 要禁用通知,请在 terraform.tfvars 中设置以下信息,然后运行 terraform apply。

    bastion_notification_enabled = false
    admin_notification_enabled = false

删除所有资源

  1. 在安装了 Terraform 的计算机上,转至包含 terraform.tfvars 文件的目录。
  2. 输入以下命令:
    terraform destroy
    Terraform 显示将销毁的资源的详细信息,如以下示例所示:
    Plan: 0 to add, 0 to change, 12 to destroy.
  3. 在提示 Do you really want to destroy all resources? 上,输入是
    当 Terraform 删除每个资源时,它会显示操作的状态。
    删除所有资源后,将显示消息 Destroy complete 以及销毁的资源数,如以下示例中所示:
    Destroy complete! Resources: 12 destroyed.