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

基于Terraform管理阿里云Elasticsearch最佳實(shí)踐

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。

通過(guò)Terraform,您可以使用代碼配置實(shí)現(xiàn)物理機(jī)等資源的分配。也就是說(shuō)通過(guò)Terraform,寫(xiě)一個(gè)配置文件,就可以幫助您購(gòu)買(mǎi)一臺(tái)云服務(wù)器,或者申請(qǐng)到阿里云Elasticsearch、OSS等云資源。本文介紹通過(guò)Terraform管理阿里云Elasticsearch的方法,包括創(chuàng)建、更新、查看、刪除實(shí)例等操作。

背景信息

您可以通過(guò)以下兩種方式安裝并配置Terraform環(huán)境:

安裝并配置Terraform

  1. 前往Terraform官網(wǎng),下載適用于您的操作系統(tǒng)的程序包。

    本文以L(fǎng)inux系統(tǒng)為例。如果您還沒(méi)有Linux環(huán)境,可購(gòu)買(mǎi)阿里云ECS實(shí)例,詳情請(qǐng)參見(jiàn)步驟一:創(chuàng)建ECS實(shí)例

  2. 將程序包解壓到/usr/local/bin目錄。

    如果您需要將可執(zhí)行文件解壓到其他目錄,請(qǐng)按照以下方法為其定義全局路徑:

  3. 執(zhí)行terraform命令驗(yàn)證路徑配置。

    執(zhí)行成功后,返回如下結(jié)果。運(yùn)行terraform

  4. 創(chuàng)建RAM用戶(hù),并為其授權(quán)。

    為提高權(quán)限管理的靈活性和安全性,建議您創(chuàng)建RAM用戶(hù),并為其授權(quán)。

    1. 登錄RAM控制臺(tái)

    2. 創(chuàng)建名為T(mén)erraform的RAM用戶(hù),并為該用戶(hù)創(chuàng)建AccessKey。

      具體操作方法請(qǐng)參見(jiàn)創(chuàng)建RAM用戶(hù)

      重要

      請(qǐng)不要使用阿里云賬號(hào)的AccessKey配置Terraform工具。

    3. 為RAM用戶(hù)授權(quán)。

      本示例為用戶(hù)Terraform授予AliyunElasticsearchFullAccessAliyunVPCFullAccess權(quán)限,具體操作方法請(qǐng)參見(jiàn)為RAM用戶(hù)授權(quán)

  5. 創(chuàng)建測(cè)試目錄。

    因?yàn)槊總€(gè)Terraform項(xiàng)目都需要?jiǎng)?chuàng)建一個(gè)獨(dú)立的執(zhí)行目錄,所以需要先創(chuàng)建一個(gè)測(cè)試目錄。以下創(chuàng)建一個(gè)名為terraform-test的測(cè)試目錄。

    mkdir terraform-test
  6. 進(jìn)入terraform-test目錄。

    cd terraform-test
  7. 創(chuàng)建配置文件,并配置身份認(rèn)證信息。

    Terraform在運(yùn)行時(shí),會(huì)讀取該目錄下所有的*.tf*.tfvars文件。請(qǐng)按照實(shí)際需求,將配置信息寫(xiě)入到不同的文件中。以下列出幾個(gè)常用的配置文件。

    配置文件

    說(shuō)明

    provider.tf

    provider配置。

    terraform.tfvars

    配置provider要用到的變量。

    varable.tf

    通用變量。

    resource.tf

    資源定義。

    data.tf

    包文件定義。

    output.tf

    輸出文件定義。

    例如創(chuàng)建provider.tf文件時(shí),使用vim provider.tf打開(kāi)文件,并按照以下格式配置您的身份認(rèn)證信息。

    provider "alicloud" {
        region      = "cn-hangzhou"
        access_key  = "LTA**********NO2"
        secret_key   = "MOk8x0*********************wwff"
        }

    更多配置信息請(qǐng)參見(jiàn)alicloud_elasticsearch_instance

  8. 使用mkdir -p plugh命令,在當(dāng)前目錄下創(chuàng)建plugh目錄,下載provider插件并解壓到plugh目錄下。

  9. 初始化工作目錄,使用-plugin-dir指定provider所在的路徑,完成配置。

    terraform init -plugin-dir=./plugh/

    返回Terraform has been successfully initialized表示初始化成功。

    重要

    每個(gè)Terraform項(xiàng)目在新建Terraform工作目錄并創(chuàng)建配置文件后,都需要初始化工作目錄。

通過(guò)Terraform創(chuàng)建阿里云Elasticsearch實(shí)例

  1. 在測(cè)試目錄下,創(chuàng)建一個(gè)elastic.tf配置文件。

  2. 參考以下腳本配置elastic.tf文件,創(chuàng)建一個(gè)跨可用區(qū)的通用商業(yè)版6.7版本的阿里云Elasticsearch實(shí)例。

    resource "alicloud_elasticsearch_instance" "instance" {
      description          = "testInstanceName"
      instance_charge_type = "PostPaid"
      data_node_amount     = "2"
      data_node_spec       = "elasticsearch.sn2ne.large"
      data_node_disk_size  = "20"
      data_node_disk_type  = "cloud_ssd"
      vswitch_id           = "vsw-bp1f7r0ma00pf9h2l****"
      password             = "es_password"
      version              = "6.7_with_X-Pack"
      master_node_spec     = "elasticsearch.sn2ne.large"
      zone_count           = "1"
    }

    provider插件支持的所有參數(shù)說(shuō)明如下。

    參數(shù)

    是否必選

    描述

    description

    實(shí)例自定義名稱(chēng)的描述。

    instance_charge_type

    計(jì)費(fèi)模式。可選值:

    • PostPaid(默認(rèn)):按量付費(fèi)

    • PrePaid:包年包月

    period

    購(gòu)買(mǎi)時(shí)長(zhǎng)(單位:月),當(dāng)instance_charge_typePrePaid時(shí)有效。可選值:1~9、12、24、36,默認(rèn)是1個(gè)月。

    data_node_amount

    ES集群的數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù)。可選值:2~50。

    data_node_spec

    數(shù)據(jù)節(jié)點(diǎn)實(shí)例規(guī)格。

    data_node_disk_size

    指定磁盤(pán)空間。不同類(lèi)型的磁盤(pán),支持的最大存儲(chǔ)空間大小不同:

    • cloud_ssd:SSD云盤(pán),支持最大存儲(chǔ)2048 GB(2 TB)。

    • cloud_efficiency:高效云盤(pán),支持最大5 TB的存儲(chǔ)空間,提供較為低廉的存儲(chǔ)能力,適合大規(guī)模數(shù)據(jù)量的日志及分析場(chǎng)景。高效云盤(pán)超過(guò)2048 GB時(shí),只能取:2560、3072、3584、4096、4608、5120。

    data_node_disk_type

    存儲(chǔ)類(lèi)型。可選值:

    • cloud_ssd:SSD云盤(pán)。

    • cloud_efficiency:高效云盤(pán)。

    vswitch_id

    虛擬交換機(jī)的實(shí)例ID。

    password

    實(shí)例密碼,支持大小寫(xiě)字母、數(shù)字、特殊字符,長(zhǎng)度為8~32位字符。特殊字符包括!@#$%^&*()_+-=

    kms_encrypted_password

    KMS加密密碼。如果配置了password,該字段將被忽略。passwordkms_encrypted_password必須配置一個(gè)。

    kms_encryption_context

    KMS加密上下文。只有設(shè)置了kms_encrypted_password時(shí)才有效。用于對(duì)使用kms_encrypted_password加密創(chuàng)建或更新的實(shí)例進(jìn)行解密,詳情請(qǐng)參見(jiàn)encryption context

    version

    Elasticsearch版本。可選值:

    • 5.5.3_with_X-Pack:5.5.3版本。

    • 6.3_with_X-Pack:6.3.0版本。

    • 6.7_with_X-Pack:6.7.0版本。

    說(shuō)明

    Terraform不支持云原生架構(gòu)實(shí)例版本。

    private_whitelist

    設(shè)置實(shí)例的專(zhuān)有網(wǎng)絡(luò)VPC(Virtual Private Cloud)網(wǎng)絡(luò)白名單。

    kibana_whitelist

    設(shè)置Kibana訪(fǎng)問(wèn)白名單。

    master_node_spec

    Master節(jié)點(diǎn)規(guī)格。

    advancedDedicateMaster

    用于表示是否創(chuàng)建專(zhuān)有主節(jié)點(diǎn),取值含義如下:

    • true:創(chuàng)建專(zhuān)有主節(jié)點(diǎn)。如果部署多可用區(qū)并且啟用專(zhuān)有主節(jié)點(diǎn),則需要將該參數(shù)設(shè)置為true。

    • false(默認(rèn)值):不創(chuàng)建專(zhuān)有主節(jié)點(diǎn)。

    zone_count

    可用區(qū)數(shù)量。取值為1~3,data_node_amount必須是該值的整數(shù)倍。

    更多參數(shù)詳情請(qǐng)參見(jiàn)alicloud_elasticsearch_instance

    重要
    • kms_encrypted_passwordkms_encryption_context參數(shù)要求provider插件版本在1.57.1及以上;zone_count參數(shù)要求provider插件版本在1.44.0及以上。

    • 如果需要購(gòu)買(mǎi)除數(shù)據(jù)節(jié)點(diǎn)外的其他屬性節(jié)點(diǎn),請(qǐng)參見(jiàn)createInstance參數(shù)開(kāi)啟其他節(jié)點(diǎn)屬性。例如,購(gòu)買(mǎi)多可用區(qū)專(zhuān)有主節(jié)點(diǎn),腳本中需要加入advancedDedicateMaster="true"

  3. 執(zhí)行terraform plan命令,查看將會(huì)執(zhí)行的操作。

    執(zhí)行成功后,返回如下結(jié)果。

    Refreshing Terraform state in-memory prior to plan...
    The refreshed state will be used to calculate this plan, but will not be
    persisted to local or remote state storage.
    ------------------------------------------------------------------------
    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
      # alicloud_elasticsearch_instance.instance will be created
      + resource "alicloud_elasticsearch_instance" "instance" {
          + description          = "testInstanceName"
          + data_node_amount     = 2
          + data_node_disk_size  = 20
          + data_node_disk_type  = "cloud_ssd"
          + data_node_spec       = "elasticsearch.sn2ne.large"
          + domain               = (known after apply)
          + id                   = (known after apply)
          + instance_charge_type = "PostPaid"
          + kibana_domain        = (known after apply)
          + kibana_port          = (known after apply)
          + kibana_whitelist     = (known after apply)
          + master_node_spec     = "elasticsearch.sn2ne.large"
          + password             = (sensitive value)
          + port                 = (known after apply)
          + private_whitelist    = (known after apply)
          + public_whitelist     = (known after apply)
          + status               = (known after apply)
          + version              = "6.7_with_X-Pack"
          + vswitch_id           = "vsw-bp1f7r0ma00pf9h2l****"
          + zone_count           = 1
        }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    ------------------------------------------------------------------------
    Note: You didn't specify an "-out" parameter to save this plan, so Terraform
    can't guarantee that exactly these actions will be performed if
    "terraform apply" is subsequently run.
  4. 執(zhí)行terraform apply命令,運(yùn)行工作目錄中的配置文件,輸入yes

    執(zhí)行成功后,返回如下結(jié)果。

    Plan: 1 to add, 0 to change, 0 to destroy.
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
      Enter a value: yes
     alicloud_elasticsearch_instance.instance: Creating...
     alicloud_elasticsearch_instance.instance: Still creating... [10s elapsed]
    alicloud_elasticsearch_instance.instance: Still creating... [20s elapsed]
     ...............
     Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
  5. 登錄阿里云Elasticsearch控制臺(tái),查看創(chuàng)建成功的Elasticsearch集群。

    創(chuàng)建成功的ES集群

通過(guò)Terraform更新Elasticsearch資源配置

  1. 進(jìn)入測(cè)試目錄,修改elastic.tf配置文件。

    例如修改data_node_disk_size50

    resource "alicloud_elasticsearch_instance" "instance" {
      instance_charge_type = "PostPaid"
      data_node_amount     = "2"
      data_node_spec       = "elasticsearch.sn2ne.large"
      data_node_disk_size  = "50"
      data_node_disk_type  = "cloud_ssd"
      vswitch_id           = "vsw-bp1f7r0ma00pf9h2l****"
      password             = "es_password"
      version              = "6.7_with_X-Pack"
      master_node_spec     = "elasticsearch.sn2ne.large"
      zone_count           = "1"
    }
    重要
    • 實(shí)例創(chuàng)建成功后,version無(wú)法修改。

    • 每次請(qǐng)求,只支持修改一項(xiàng)配置。例如同時(shí)修改data_node_specdata_node_disk_size,系統(tǒng)將會(huì)出現(xiàn)錯(cuò)誤響應(yīng)。

  2. 執(zhí)行terraform plan查看資源配置信息。

  3. 執(zhí)行terraform apply等待資源升配結(jié)束。

將Elasticsearch資源導(dǎo)入Terraform

如果阿里云Elasticsearch實(shí)例不是通過(guò)Terraform創(chuàng)建的,可通過(guò)命令,將阿里云Elasticsearch導(dǎo)入到Terraform的state目錄下進(jìn)行管理。

  1. 在測(cè)試目錄下,創(chuàng)建一個(gè)main.tf文件。

    vim main.tf
  2. 進(jìn)行資源聲明,指定所要導(dǎo)入的資源在state中的存放路徑。

    resource "alicloud_elasticsearch_instance" "test" {}
  3. 開(kāi)始資源導(dǎo)入操作。

    terraform import alicloud_elasticsearch_instance.test  es-cn-0pp1f1y5g000h****

    執(zhí)行成功后,返回如下結(jié)果。

    alicloud_elasticsearch_instance.test: Importing from ID "es-cn-0pp1f1y5g000h****"...
    alicloud_elasticsearch_instance.test: Import prepared!
      Prepared alicloud_elasticsearch_instance for import
    alicloud_elasticsearch_instance.test: Refreshing state... [id=es-cn-0pp1f1y5g000h****]
    
    Import successful!
    
    The resources that were imported are shown above. These resources are now in
    your Terraform state and will henceforth be managed by Terraform.
    說(shuō)明

    有關(guān)import如何實(shí)現(xiàn)存量資源的管理,請(qǐng)參見(jiàn)一文揭秘存量云資源的管理難題

查看Terraform管理的所有Elasticsearch資源

使用terraform show命令,查看當(dāng)前state中所有被管理的資源及其所有屬性值。

# alicloud_elasticsearch_instance.instance:
resource "alicloud_elasticsearch_instance" "instance" {
    data_node_amount     = 2
    data_node_disk_size  = 20
    data_node_disk_type  = "cloud_ssd"
    data_node_spec       = "elasticsearch.sn2ne.large"
    domain               = "es-cn-dssf9op81lz4q****.elasticsearch.aliyuncs.com"
    id                   = "es-cn-dssf9op81lz4q****"
    instance_charge_type = "PostPaid"
    kibana_domain        = "es-cn-dssf9op81lz4q****.kibana.elasticsearch.aliyuncs.com"
    kibana_port          = 5601
    kibana_whitelist     = []
    master_node_spec     = "elasticsearch.sn2ne.large"
    password             = (sensitive value)
    port                 = 9200
    private_whitelist    = []
    public_whitelist     = []
    status               = "active"
    version              = "6.7.0_with_X-Pack"
    vswitch_id           = "vsw-bp1f7r0ma00pf9h2l****"
    zone_count           = 1
}

# alicloud_elasticsearch_instance.test:
resource "alicloud_elasticsearch_instance" "test" {
    data_node_amount     = 3
    data_node_disk_size  = 51
    data_node_disk_type  = "cloud_ssd"
    data_node_spec       = "elasticsearch.r5.large"
    domain               = "es-cn-0pp1f1y5g000h****.elasticsearch.aliyuncs.com"
    id                   = "es-cn-0pp1f1y5g000h****"
    instance_charge_type = "PostPaid"
    kibana_domain        = "es-cn-0pp1f1y5g000h****.kibana.elasticsearch.aliyuncs.com"
    kibana_port          = 5601
    kibana_whitelist     = []
    port                 = 9200
    private_whitelist    = []
    public_whitelist     = []
    status               = "active"
    version              = "6.7.0_with_X-Pack"
    vswitch_id           = "vsw-bp1f7r0ma00pf9h2l****"
    zone_count           = 1

    timeouts {}
}

通過(guò)Terraform刪除Elasticsearch實(shí)例

警告

實(shí)例刪除后將不可恢復(fù),實(shí)例中的所有數(shù)據(jù)將被清空。

進(jìn)入測(cè)試目錄,執(zhí)行terraform destroy命令,輸入yes,即可刪除該實(shí)例。

# terraform destroy
alicloud_elasticsearch_instance.instance: Refreshing state... [id=es-cn-v3x49h5397fau****]

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  # alicloud_elasticsearch_instance.instance will be destroyed
  - resource "alicloud_elasticsearch_instance" "instance" {
      - data_node_amount     = 2 -> null
      - data_node_disk_size  = 20 -> null
      - data_node_disk_type  = "cloud_ssd" -> null
      - data_node_spec       = "elasticsearch.sn2ne.large" -> null
      - domain               = "es-cn-v3x49h5397fau****.elasticsearch.aliyuncs.com" -> null
      - id                   = "es-cn-v3x49h5397fau****" -> null
      - instance_charge_type = "PostPaid" -> null
      - kibana_domain        = "es-cn-v3x49h5397fau****.kibana.elasticsearch.aliyuncs.com" -> null
      - kibana_port          = 5601 -> null
      - kibana_whitelist     = [] -> null
      - master_node_spec     = "elasticsearch.sn2ne.large" -> null
      - password             = (sensitive value)
      - port                 = 9200 -> null
      - private_whitelist    = [] -> null
      - public_whitelist     = [] -> null
      - status               = "active" -> null
      - version              = "6.7.0_with_X-Pack" -> null
      - vswitch_id           = "vsw-bp1f7r0ma00pf9h2l****" -> null
      - zone_count           = 1 -> null
    }

Plan: 0 to add, 0 to change, 1 to destroy.

Do you really want to destroy all resources?
  Terraform will destroy all your managed infrastructure, as shown above.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value: yes

alicloud_elasticsearch_instance.instance: Destroying... [id=es-cn-v3x49h5397fau****]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 10s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 20s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 30s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 40s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 50s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m0s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m10s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m20s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m30s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m40s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 1m50s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 2m0s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 2m10s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 2m20s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 2m30s elapsed]
alicloud_elasticsearch_instance.instance: Still destroying... [id=es-cn-v3x49h5397fau****, 2m40s elapsed]
alicloud_elasticsearch_instance.instance: Destruction complete after 10m2s

Destroy complete! Resources: 1 destroyed.