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

Terraform常用命令

更新時間:

Terraform是一個管理IT資源的客戶端工具,您可以使用Terraform提供的命令來實現(xiàn)對所有資源的管理。本文將主要圍繞資源管理和狀態(tài)管理兩個方面為您介紹涉及到的常用命令。

資源管理常用命令

Terraform對資源的管理主要是對資源生命周期的管理,即通過命令實現(xiàn)對Terraform模板中所定義資源的創(chuàng)建,修改,查看和刪除。

  • terraform plan:資源的預(yù)覽

    plan命令用于對模板中所定義資源的預(yù)覽,主要用于以下幾個場景:

    • 預(yù)覽當(dāng)前模板中定義的資源是否符合管理預(yù)期,和Markdown的預(yù)覽功能類似。

    • 如果當(dāng)前模板已經(jīng)存在對應(yīng)的state文件,那么plan命令將會展示模板定義與state文件內(nèi)容的diff結(jié)果,如果有變更,會將結(jié)果在下方顯示出來。

    • 對DataSource而言,執(zhí)行plan命令,即可直接獲取并輸出所要查詢的資源及其屬性。

  • terraform apply:資源的新建和變更

    apply命令用于實際資源的新建和變更操作,為了安全起見,在命令運行過程中增加了人工交互的過程,即需要手動確認(rèn)是否繼續(xù),當(dāng)然也可以通過--auto-approve參數(shù)來跳過人工確認(rèn)的過程。

    apply命令適用于以下幾種場景:

    • 創(chuàng)建新的資源。

    • 通過修改模板參數(shù)來修改資源的屬性。

    • 如果從當(dāng)前模板中刪除某個資源的定義,apply命令會將該資源徹底刪除。可以理解為“資源的移除也是一種變更”。

  • terraform show:資源的展示

    show命令用于展示當(dāng)前state中所有被管理的資源及其所有屬性值。

  • terraform destroy:資源的釋放

    destroy命令用于對資源的釋放操作,為了安全起見,在命令執(zhí)行過程中,也增加了人工交互的過程,如果想要跳過手動確認(rèn)操作,可以通過--force參數(shù)來跳過。

    terraform destroy默認(rèn)會釋放當(dāng)前模板中定義的所有資源,如果只想釋放其中某個特定的資源,可以通過參數(shù)-target=<資源類型>.<資源名稱>來指定。

  • terraform import:資源的導(dǎo)入

    import命令用于將存量的云資源導(dǎo)入到terraform state中,進(jìn)而加入到Terraform的管理體系中,適用的場景包含但不限于以下幾種:

    • 從來沒有使用Terraform管控過任何資源,當(dāng)前所有的存量云資源都是通過控制臺,阿里云CLI,ROS或者直接調(diào)用API創(chuàng)建和管理的,現(xiàn)在想要切換為Terraform管理。

    • 在不影響資源正常使用的前提下,重構(gòu)資源模板中的資源定義。

    • 阿里云的Provider進(jìn)行了兼容性升級,新版Provider對原有模板中所定義的資源支持了更多的參數(shù),需要把最新的參數(shù)同步進(jìn)來。

    說明

    有關(guān)import如何實現(xiàn)存量資源的管理,請參見如何解決存量云資源的管理難題

  • terraform taint:標(biāo)記資源為被污染

    taint命令用于把某個資源標(biāo)記為被污染狀態(tài),當(dāng)再次執(zhí)行apply命令時,這個被污染的資源將會被先釋放,然后再創(chuàng)建一個新的,相當(dāng)于對這個特定資源做了先刪除后新建的操作。

    命令的詳細(xì)格式為: terraform taint <資源類型>.<資源名稱> ,如:

    $ terraform taint alicloud_vswitch.this
    Resource instance alicloud_vswitch.this has been marked as tainted.
  • terraform untaint:取消被污染標(biāo)記

    untaint命令是taint的逆向操作,用于取消被污染標(biāo)記,使其恢復(fù)到正常的狀態(tài)。命令的詳細(xì)格式和taint類似為:terraform untaint <資源類型>.<資源名稱> ,如:

    $ terraform untaint alicloud_vswitch.this
    Resource instance alicloud_vswitch.this has been successfully untainted.
  • terraform output:打印出參及其值

    如果在模板中顯示定義了output參數(shù),那么這個output的值將在apply命令之后展示,但plan命令并不會展示,如果想隨時隨地快速查看output的值,可以直接運行命令 terraform output :

    $ terraform output
    vswitchId = vsw-gw8gl31wz********

狀態(tài)管理常用命令

Terraform對資源狀態(tài)的管理,實際上是對State文件中數(shù)據(jù)的管理。State文件保存了當(dāng)前Terraform管理的所有資源及其屬性,內(nèi)容都是由Terraform自動存儲的,為了保證數(shù)據(jù)的完整性,不建議手動修改State內(nèi)容。對State數(shù)據(jù)的操作可以通過terraform state命令來完成。

  • terraform state list:列出當(dāng)前state中的所有資源

    state list命令會按照 <資源類型>.<資源名稱> 的格式列出當(dāng)前state中存在的所有資源(包括datasource),例如:

    $ terraform state list
    data.alicloud_slbs.default
    alicloud_vpc.default
    alicloud_vswitch.this
  • terraform state show:展示某一個資源的屬性

    state show命令按照Key-Value的格式展示出特定資源的所有屬性及其值,命令的完整格式為 terraform state show <資源類型>.<資源名稱> ,例如:

    $ terraform state show alicloud_vswitch.this
    # alicloud_vswitch.this:
    resource "alicloud_vswitch" "this" {
        availability_zone = "eu-central-1a"
     cidr_block = "172.16.0.0/24"
     id = "vsw-gw8gl31wz******"
     vpc_id = "vpc-gw8calnzt*******"
    }
  • terraform state pull:獲取當(dāng)前state內(nèi)容并展示

    state pull命令用于原樣展示當(dāng)前state文件數(shù)據(jù),類似于Shell下的cat命令,例如:

    $ terraform state pull
    {
        "version": 4,
        "terraform_version": "0.12.8",
        "serial": 615,
        "lineage": "39aeeee2-b3bd-8130-c897-2cb8595cf8ec",
        "outputs": {
         ***
     }
     },
    "resources": [
     {
            "mode": "data",
            "type": "alicloud_slbs",
            "name": "default",
            "provider": "provider.alicloud",
         ***
     },
     {
            "mode": "managed",
            "type": "alicloud_vpc",
            "name": "default",
            "provider": "provider.alicloud",
         ***
     }
     ]
    }
  • terraform state rm:移除特定的資源

    state rm命令用于將state中的某個資源移除,但是實際上并不會真正刪除這個資源,命令格式為:terraform state rm <資源類型>.<資源名稱> ,例如:

    $terraform state rm alicloud_vswitch.this
    Removed alicloud_vswitch.this
    Successfully removed 1 resource instance(s).

    移除后,如果模板內(nèi)容不變并且再次執(zhí)行apply命令,將會新增一個同樣的資源。移除后的資源可以再次通過import命令再次加入。

  • terraform state mv:變更特定資源的存放地址

    如果想調(diào)整某個資源所在的state文件,可以通過state mv命令來完成,類似于Shell下的mv命令,這個命令的使用有多種選項,可以通過命令 terraform state mv --help 來詳細(xì)了解。本文只介紹最常用的一種:terraform state mv --state=./terraform.tfstate --state-out=<target path>/terraform-target.tfstate <資源類型>.<資源名稱A> <資源類型>.<資源名稱B> ,如:

    $ terraform state mv --state-out=../tf.tfstate alicloud_vswitch.this alicloud_vswitch.default
    Move "alicloud_vswitch.this" to "alicloud_vswitch.default"
    Successfully moved 1 object(s)

    如上命令省略了默認(rèn)的--state=./terraform.tfstate選項,命令最終的結(jié)果是將當(dāng)前State中的vSwitch資源移動到了上層目錄下名為 tf.tfstate 的State中,并且將vSwitch的資源名稱由“this”改為了“default”。

  • terraform refresh:刷新當(dāng)前state

    refresh命令可以用來刷新當(dāng)前State的內(nèi)容,即再次調(diào)用API并拉取最新的數(shù)據(jù)寫入到state文件中。

其他常用命令

除了資源和狀態(tài)的管理命令外,還有一些常用的應(yīng)用在模板,Provider等多種場景下的命令。

  • terraform init:初始化加載模塊

    init用來初始化加載所需的模塊,包括Provider,Provisioner,Module等。

  • terraform graph:輸出當(dāng)前模板定義的資源關(guān)系圖

    每個模板定義的資源之間都存在不同程度的關(guān)系,如果想看資源關(guān)系圖,可以使用命令terraform graph:

    $ terraform graph
    digraph {
     compound = "true"
     newrank = "true"
     subgraph "root" {
     "[root] alicloud_vpc.default" [label = "alicloud_vpc.default", shape = "box"]
     "[root] alicloud_vswitch.this" [label = "alicloud_vswitch.this", shape = "box"]
                    ******
     "[root] output.vswitchId" -> "[root] alicloud_vswitch.this"
     "[root] provider.alicloud (close)" -> "[root] alicloud_vswitch.this"
    ******
     "[root] root" -> "[root] provider.alicloud (close)"
     }
    }                 

    該命令的結(jié)果還可以通過命令terraform graph | dot -Tsvg > graph.svg直接導(dǎo)出為一張圖片(需要提前安裝graphviz: brew install graphviz ):graph_img

  • terraform validate:驗證模板語法是否正確

    Terraform模板的編寫需要遵循其自身定義的一套簡單的語法規(guī)范,編寫完成后,如果想要檢查模板是否存在語法錯誤或者在運行planapply命令的時候報語法錯誤,可以通過執(zhí)行命令terraform validate來檢查和定位錯誤出現(xiàn)的詳細(xì)位置和原因。