预配,配置和删除资源

使用 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 环境变量设置日志级别。支持的日志级别包括 TRACEDEBUGINFOWARNERRORTRACE 级别最为详细。
    • 使用 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.