日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

在Linux中使用Terraform

更新時間:

本文為您介紹在Linux中,如何快速使用Terraform創(chuàng)建阿里云資源。

使用Terraform進(jìn)行基礎(chǔ)設(shè)施即代碼(IaC)管理,包含以下幾個主要步驟。

  1. 安裝Terraform。確保您的系統(tǒng)能夠識別并執(zhí)行Terraform命令。

  2. 配置Terraform。使用統(tǒng)一的方式管理Terraform身份認(rèn)證信息。

  3. 編寫Terraform配置文件。配置文件是Terraform的核心,用于描述資源的創(chuàng)建、配置和依賴關(guān)系,如創(chuàng)建VPC、ECS、OSS等。

  4. 初始化與創(chuàng)建資源。將基礎(chǔ)設(shè)施設(shè)計變?yōu)楝F(xiàn)實(shí)的關(guān)鍵步驟。

  5. 查看和管理資源。在部署后,您也能輕松地管理和維護(hù)您的基礎(chǔ)設(shè)施環(huán)境,確保其符合最新的需求和設(shè)計。

  6. 資源銷毀。當(dāng)不再需要所創(chuàng)建的資源時,可以銷毀相應(yīng)目錄下已創(chuàng)建資源。

1. 安裝Terraform

Terraform是一款基礎(chǔ)設(shè)施即代碼(IaC)工具,通過執(zhí)行Terraform命令來創(chuàng)建、管理和版本控制云資源。只有在完成安裝后,才能執(zhí)行Terraform命令,從而實(shí)現(xiàn)基礎(chǔ)設(shè)施部署的自動化。具體安裝步驟,請參見Terraform 安裝

2. 配置Terraform

Terraform身份認(rèn)證是指在通過Terraform操作阿里云基礎(chǔ)設(shè)施之前,對阿里云Terraform Provider進(jìn)行身份驗(yàn)證。只有在身份認(rèn)證成功后,才能與阿里云API進(jìn)行通信,并創(chuàng)建和管理阿里云的基礎(chǔ)設(shè)施資源。阿里云Terraform Provider提供多種身份認(rèn)證方式,有關(guān)更多身份認(rèn)證信息,請參見相關(guān)文檔Terraform 身份認(rèn)證

本文以在環(huán)境變量中使用RAM用戶AccessKey配置身份認(rèn)證為例:

export ALICLOUD_ACCESS_KEY="LTAIUrZCw3********"
export ALICLOUD_SECRET_KEY="zfwwWAMWIAiooj14GQ2*************"
export ALICLOUD_REGION="cn-beijing"

3. 編寫Terraform配置文件

配置文件是Terraform的核心,用于定義在云端或本地部署的基礎(chǔ)設(shè)施資源,如RAM、ECS、OSS等。

  1. 創(chuàng)建一個新的文件夾,例如命名為ram,并在該文件夾下創(chuàng)建一個Terraform配置文件,例如配置文件名稱為main.tf

    # 創(chuàng)建執(zhí)行目錄并進(jìn)入到執(zhí)行目錄
    mkdir ram && cd ram
    # 創(chuàng)建配置文件并編輯
    touch main.tf && vim main.tf
    

    為每個Terraform項(xiàng)目創(chuàng)建獨(dú)立執(zhí)行目錄可以確保資源組織清晰,避免狀態(tài)文件混淆,便于版本控制和團(tuán)隊協(xié)作,同時有利于實(shí)現(xiàn)環(huán)境隔離和模塊化管理,提高配置管理的可維護(hù)性和安全性。

  2. 編寫Terraform配置文件。本文以創(chuàng)建一個RAM用戶,并為該用戶賦予管理ECS的權(quán)限,為您介紹如何編寫配置文件。

    所需要的資源如下:

    重要

    建議RAM用戶避免同時支持登錄控制臺操作和使用AccessKey操作,以確保每個RAM用戶的職責(zé)明確,防止混用。

    Resource

    說明

    alicloud_ram_user

    創(chuàng)建RAM用戶

    alicloud_ram_login_profile

    允許RAM用戶登錄控制臺操作

    alicloud_ram_access_key

    為RAM用戶創(chuàng)建一個AccessKey

    alicloud_ram_policy

    創(chuàng)建一個權(quán)限策略

    alicloud_ram_user_policy_attachment

    為RAM用戶增加權(quán)限

    復(fù)制以下示例到main.tf中,然后按Esc鍵退出插入模式,輸入:wq按回車保存文件。

    variable "user_name" {
      default = "terraform_user_test"
    }
    
    variable "user_password" {
      default = "!Test@123456"
    }
    
    variable "user_display_name" {
      default = "TestAccount"
    }
    
    variable "user_mobile" {
      default = "86-18688888888"
    }
    
    variable "user_email" {
      default = "example@example.com"
    }
    
    resource "alicloud_ram_user" "user" {
      name         = var.user_name
      display_name = var.user_display_name
      mobile       = var.user_mobile
      email        = var.user_email
      comments     = "Terraform create"
      force        = true                   
    }
    
    resource "alicloud_ram_login_profile" "profile" {
      user_name = alicloud_ram_user.user.name
      password  = var.user_password
    }
    
    resource "alicloud_ram_access_key" "ak" {
      user_name   = alicloud_ram_user.user.name
      secret_file = "accesskey.txt"
    }
    
    resource "alicloud_ram_policy" "policy" {
      policy_name     = "tf-example-policy"
      policy_document = <<EOF
      {
        "Statement": [
          {
            "Action": "ecs:*",
            "Effect": "Allow",
            "Resource":"*"
          }
        ],
          "Version": "1"
      }
      EOF
      description     = "this is a policy test"
    }
    
    resource "alicloud_ram_user_policy_attachment" "attach" {
      policy_name = alicloud_ram_policy.policy.policy_name
      policy_type = alicloud_ram_policy.policy.type
      user_name   = alicloud_ram_user.user.name
    }

4. 初始化與創(chuàng)建資源

Terraform配置文件編寫完成后,需要先初始化工作目錄,然后再創(chuàng)建資源。

4.1 Terraform初始化

在當(dāng)前終端中運(yùn)行terraform init命令進(jìn)行初始化。terraform init命令是使用任何Terraform配置文件之前必須執(zhí)行的第一個命令,主要目的是初始化一個Terraform工作目錄,包括下載必要的阿里云提供商插件以及各種其他記錄文件。

說明

當(dāng)您因網(wǎng)絡(luò)延遲等原因?qū)е聇erraform init超時,無法正常下載Provider等情況時,可通過配置阿里云鏡像站解決,具體操作步驟,請參見Terraform Init 加速方案配置

4.2 創(chuàng)建資源

  1. 運(yùn)行terraform plan創(chuàng)建一個執(zhí)行計劃,并詳細(xì)展示了在執(zhí)行terraform apply時將創(chuàng)建、修改或銷毀的所有資源信息。

    image

  2. 運(yùn)行terraform apply時,將根據(jù)terraform plan生成的執(zhí)行計劃來創(chuàng)建資源。在創(chuàng)建過程中,需要按照提示輸入yes,以繼續(xù)創(chuàng)建資源。關(guān)于變量如何傳值,請參見Variable 介紹中的變量設(shè)置方式。image

5. 查看和管理資源

在部署后,您也能輕松地管理和維護(hù)您的基礎(chǔ)設(shè)施環(huán)境,確保其符合最新的需求和設(shè)計。

5.1 查看資源

  1. 通過terraform show命令查看資源的詳細(xì)信息。

    image

  2. 通過terraform state list命令列出所有已創(chuàng)建的資源。

    image

  3. 通過terraform state show <資源類型>.<資源名稱>查看某個資源的詳細(xì)信息。

    image

  4. 通過阿里云控制臺查看已創(chuàng)建資源信息。

5.2 管理資源

Terraform在完成資源的創(chuàng)建和修改后,會將資源的狀態(tài)和屬性信息保存在terraform.tfstate文件中。我們可以使用terraform state相關(guān)命令對state進(jìn)行管理。更多信息,請參見Terraform State 介紹

5.3 資源變更

  1. 修改配置文件(如main.tf)中需要變更的資源定義,例如您希望收縮RAM用戶的權(quán)限,只允許用戶具有云服務(wù)器ECS查詢權(quán)限。

    1. 運(yùn)行命令vim main.tf,然后按i鍵進(jìn)入編輯狀態(tài)。

    2. 復(fù)制以下代碼,并將其替換到main.tf文件中對應(yīng)的alicloud_ram_policy部分。

      resource "alicloud_ram_policy" "policy" {
        policy_name     = "tf-example-policy"
        policy_document = <<EOF
        {
          "Statement": [
            {
              "Action": [
                "ecs:Get*",
                "ecs:List*",
                "ecs:Describe*"
              ],
              "Effect": "Allow",
              "Resource":"*"
            }
          ],
            "Version": "1"
        }
        EOF
        description     = "this is a policy test"
      }
    3. 按下Esc,輸入:wq保存。

  2. 運(yùn)行terraform plan命令預(yù)覽所做的變更。

    image

  3. 如果變更符合預(yù)期,運(yùn)行terraform apply命令,以將這些變更應(yīng)用于您的基礎(chǔ)設(shè)施。運(yùn)行此命令時,Terraform會要求您確認(rèn)是否確實(shí)要進(jìn)行這些變更,輸入 yes 并回車后,變更會被應(yīng)用。image

6. 資源銷毀

當(dāng)不再需要所創(chuàng)建的資源時,可以通過terraform destroy命令銷毀所有已創(chuàng)建的資源。

重要

針對創(chuàng)建的權(quán)限策略進(jìn)行資源銷毀時,當(dāng)權(quán)限策略存在多個版本時,Terraform destroy無法直接銷毀資源。您可以在alicloud_ram_policy中添加force參數(shù),并將其值設(shè)置為true,以表示強(qiáng)制刪除所有版本的權(quán)限。若該權(quán)限被其他RAM用戶或RAM角色引用,會自動解除關(guān)聯(lián)關(guān)系后執(zhí)行刪除,請謹(jǐn)慎使用force屬性。

image

完整示例

為了便于您快速體驗(yàn) Terraform,本文提供了完整的 Terraform 代碼,您可以一鍵復(fù)制后直接運(yùn)行。

variable "user_name" {
  default = "terraform_user_test"
}

variable "user_password" {
  default = "!Test@123456"
}

variable "user_display_name" {
  default = "TestAccount"
}

variable "user_mobile" {
  default = "86-18688888888"
}

variable "user_email" {
  default = "example@example.com"
}

resource "alicloud_ram_user" "user" {
  name         = var.user_name
  display_name = var.user_display_name
  mobile       = var.user_mobile
  email        = var.user_email
  comments     = "Terraform create"
  force        = true                   
}

resource "alicloud_ram_login_profile" "profile" {
  user_name = alicloud_ram_user.user.name
  password  = var.user_password
}

resource "alicloud_ram_access_key" "ak" {
  user_name   = alicloud_ram_user.user.name
  secret_file = "accesskey.txt"
}

resource "alicloud_ram_policy" "policy" {
  policy_name     = "tf-example-policy"
  policy_document = <<EOF
  {
    "Statement": [
      {
        "Action": "ecs:*",
        "Effect": "Allow",
        "Resource":"*"
      }
    ],
      "Version": "1"
  }
  EOF
  description     = "this is a policy test"
}

resource "alicloud_ram_user_policy_attachment" "attach" {
  policy_name = alicloud_ram_policy.policy.policy_name
  policy_type = alicloud_ram_policy.policy.type
  user_name   = alicloud_ram_user.user.name
}

相關(guān)文檔