{"id":49113,"date":"2023-01-12T19:43:15","date_gmt":"2023-10-22T10:38:45","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/"},"modified":"2024-04-29T09:38:06","modified_gmt":"2024-04-29T01:38:06","slug":"%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/","title":{"rendered":"\u4f7f\u7528\u5730\u56fe\u7b80\u5316 Terraform \u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f"},"content":{"rendered":"<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8925913a08637a6c5222\/0-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2018-01-19 0.51.28.png\" \/><\/div>\n<h1>\u76ee\u5f55\u7ed3\u6784<\/h1>\n<p>\u6211\u5c06terraform\/provider\/aws\/env\/stg\u8bbe\u4e3a\u5982\u4e0b\u3002<br \/>\n\u5c06variables.tf\u4f5c\u4e3a\u53d8\u91cf\u6587\u4ef6\u548c\u6267\u884cec2.tf\u7684\u4e3b\u8981\u5904\u7406\u6587\u4ef6\u90fd\u653e\u5728\u540c\u4e00\u4e2a\u76ee\u5f55\u4e0b\u3002<\/p>\n<p>\u5728\u6bcf\u4e2a\u73af\u5883\u4e2d\u5b8c\u5168\u5206\u79bb\u6587\u4ef6\u7684\u6982\u5ff5\u4e2d\uff0ctfstate\u6587\u4ef6\u4e5f\u4f1a\u5206\u522b\u653e\u5728\u6bcf\u4e2a\u73af\u5883\u4e2d\u3002\uff08\u5b58\u50a8\u4f4d\u7f6e\u662fS3\uff09<br \/>\n\u65e0\u9700\u8fdb\u884c\u6a21\u5757\u5316\u3002<\/p>\n<pre class=\"post-pre\"><code> %tree \r\n.\r\n\u2514\u2500\u2500 provider\r\n    \u2514\u2500\u2500 aws\r\n        \u2514\u2500\u2500 env\r\n            \u2514\u2500\u2500 stg\r\n                \u251c\u2500\u2500 backend.tf\r\n                \u251c\u2500\u2500 ec2.tf\r\n                \u2514\u2500\u2500 variables.tf\r\n<\/code><\/pre>\n<h1>\u58f0\u660e\u3002<\/h1>\n<h2>\u4e4b\u524d<\/h2>\n<p>\u5230\u76ee\u524d\u4e3a\u6b62\uff0c\u6211\u4e00\u76f4\u662f\u8fd9\u6837\u5199Terraform\u53d8\u91cf\u6587\u4ef6\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"ami\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"ami-4af5022c\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"instance_type\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"t2.micro\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"instance_key\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"id_rsa\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u5b9e\u9645\u4e0a\uff0cEC2\u53c2\u6570\u4e0d\u4ec5\u4ec5\u662f\u8fd9\u4e9b\u3002\u5982\u679c\u8fd8\u8003\u8651\u5230AWS\u7684\u5176\u4ed6\u8d44\u6e90\uff0c\u53d8\u91cf\u6587\u4ef6\u5c06\u4f1a\u975e\u5e38\u957f\u3002<\/p>\n<p>\u4f5c\u4e3a\u7279\u70b9\uff0c\u53d8\u91cf\u6bcf\u6b21\u90fd\u4f1a\u6392\u5217\u5728\u4e00\u8d77\uff0c\u5bfc\u81f4\u884c\u6570\u589e\u52a0\uff0c\u8bfb\u8d77\u6765\u56f0\u96be\uff0c\u770b\u8d77\u6765\u4e5f\u4e0d\u5bb9\u6613\uff0c\u4e0d\u6613\u627e\u5230\u3002<\/p>\n<p>\u6211\u7528map\u89e3\u51b3\u4e86\u8fd9\u4e2a\u95ee\u9898\u3002<\/p>\n<blockquote><p>\u4e00\u4e2a\u6620\u5c04\u503c\u662f\u4e00\u4e2a\u4ece\u5b57\u7b26\u4e32\u952e\u5230\u5b57\u7b26\u4e32\u503c\u7684\u67e5\u627e\u8868\u3002\u8fd9\u5bf9\u4e8e\u6839\u636e\u5176\u4ed6\u63d0\u4f9b\u7684\u503c\u9009\u62e9\u4e00\u4e2a\u503c\u975e\u5e38\u6709\u7528\u3002<br \/>\n\u6620\u5c04\u7684\u4e00\u4e2a\u5e38\u89c1\u7528\u9014\u662f\u6839\u636e\u533a\u57df\u521b\u5efa\u4e00\u5f20\u673a\u5668\u955c\u50cf\u8868\uff0c\u5982\u4e0b\u6240\u793a\uff1a<\/p><\/blockquote>\n<pre class=\"post-pre\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"images\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">type<\/span>    <span class=\"p\">=<\/span> <span class=\"s2\">\"map\"<\/span>\r\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"s2\">\"us-east-1\"<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"image-1234\"<\/span>\r\n    <span class=\"s2\">\"us-west-2\"<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"image-4567\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u5b8c\u6210<\/h2>\n<p>\u53ef\u4ee5\u5c06\u8d44\u6e90\u7684\u503c\u6c47\u603b\u5230\u4e00\u4e2a\u53d8\u91cf\u4e2d\u3002<br \/>\n\u58f0\u660e\u6620\u5c04\u7c7b\u578b\u53ef\u4ee5\u7701\u7565\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"ec2_config\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"map\"<\/span> <span class=\"c1\">#\u7701\u7565\u5316<\/span>\r\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">ami<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"ami-4af5022c\"<\/span> \r\n    <span class=\"nx\">instance_type<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"t2.micro\"<\/span> \r\n    <span class=\"nx\">instance_key<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"id_rsa\"<\/span> \r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u8fd9\u6837\u505a\uff0c\u6bcf\u4e2a\u8d44\u6e90\u7684\u503c\u90fd\u88ab\u6574\u5408\u5728\u4e00\u8d77\uff0c\u4f7f\u5f97\u9605\u8bfb\u66f4\u52a0\u7b80\u4fbf\u3002<br \/>\n\u73b0\u5728\u8ba9\u6211\u4eec\u6765\u67e5\u770b\u6267\u884c\u4e3b\u8981\u5904\u7406\u7684 ec2.tf \u6587\u4ef6\u3002<\/p>\n<h1>ec2.tf\u6587\u4ef6\u4e2dmap\u7c7b\u578b\u7684\u5199\u6cd5\u5982\u4e0b\u3002<\/h1>\n<h2>\u5728\u4e4b\u524d<\/h2>\n<p>\u8fd9\u662f\u81f3\u4eca\u8d44\u6e90\u5b9a\u4e49\u7684\u5199\u6cd5\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_instance\"<\/span> <span class=\"s2\">\"vtryo-web01\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">ami<\/span>              <span class=\"p\">=<\/span> <span class=\"s2\">\"${var.ami}\"<\/span>\r\n  <span class=\"nx\">instance_type<\/span>    <span class=\"p\">=<\/span> <span class=\"s2\">\"${var.instance_type}\"<\/span>\r\n  <span class=\"nx\">instance_key<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"${var.instance_key}\"<\/span>\r\n\r\n<span class=\"err\">\u3000\u3000\u3000\u3000<\/span><span class=\"nx\">tags<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"vtryo-web01\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u8fd9\u662f\u5bf9\u5e94\u4e8eafter\u7248\u672c\u7684variable\u7684\u8d44\u6e90\u5b9a\u4e49\u65b9\u5f0f\u3002<br \/>\n\u7531\u4e8e\u4f7f\u7528\u4e86map\u7c7b\u578b\u6765\u5b58\u50a8\u53d8\u91cf,\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528lookup\u51fd\u6570\u6765\u5f15\u7528\u503c\u3002<\/p>\n<p>\u5c3d\u7ba1\u770b\u8d77\u6765\u6bd4\u4ee5\u524d\u7a0d\u5fae\u53d8\u957f\u4e86\u4e00\u70b9\uff0c\u4f46\u53ea\u8981\u8bb0\u4f4f\u89c4\u5219\uff08\u540e\u8ff0\uff09\uff0c\u5b83\u5e76\u4e0d\u90a3\u4e48\u590d\u6742\uff0c\u800c\u4e14\u66f4\u52a0\u7075\u6d3b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_instance\"<\/span> <span class=\"s2\">\"vtryo-web\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">ami<\/span>              <span class=\"p\">=<\/span> <span class=\"s2\">\"${lookup(var.ec2_config, \"<\/span><span class=\"nx\">ami<\/span><span class=\"s2\">\")}\"<\/span> \r\n  <span class=\"nx\">instance_type<\/span>    <span class=\"p\">=<\/span> <span class=\"s2\">\"${lookup(var.ec2_config, \"<\/span><span class=\"nx\">instance_type<\/span><span class=\"s2\">\")}\"<\/span> \r\n  <span class=\"nx\">key_name<\/span>         <span class=\"p\">=<\/span> <span class=\"s2\">\"${lookup(var.ec2_config, \"<\/span><span class=\"nx\">instance_key<\/span><span class=\"s2\">\")}\"<\/span> \r\n\r\n  <span class=\"nx\">tags<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"vtryo-${format(\"<\/span><span class=\"nx\">web<\/span><span class=\"err\">%<\/span><span class=\"mi\">02<\/span><span class=\"nx\">d<\/span><span class=\"s2\">\", count.index + 1)}\"<\/span> \r\n  <span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u8bf7\u6ce8\u610f<\/h2>\n<p>\u5728\u8d44\u6e90\u5b9a\u4e49\u4e2d\uff0cami\u3001instance_type\u548ckey_name\u5728terraform\u4e2d\u5177\u6709\u56fa\u5b9a\u7684\u540d\u79f0\u3002\u5728variables.tf\u6587\u4ef6\u4e2d\uff0c\u53d8\u91cf\u540d\u662f\u4efb\u610f\u7684\uff0c\u4f46\u8fd9\u91cc\u4e0d\u80fd\u968f\u610f\u51b3\u5b9a\uff0c\u6240\u4ee5\u8bf7\u6ce8\u610f\u3002<\/p>\n<h3>\u67e5\u8be2<\/h3>\n<p>\u4ee5\u4e0b\u662f\u4e00\u79cd\u4f7f\u7528lookup\u51fd\u6570\u76f4\u63a5\u6307\u5b9a\u952e\u7684\u65b9\u6cd5\u3002<br \/>\n\u6211\u6b63\u5728\u53c2\u8003\u8fd9\u4e2a\u3002<br \/>\n\u4f7f\u7528Terraform\u7684output\u6765\u4f7f\u7528map\u7684\u65b9\u6cd5\u3002<\/p>\n<p>\u4f8b\u5982\uff0c\u5982\u679c\u6211\u4eec\u8003\u8651\u4ee5\u4e0b\u60c5\u51b5\uff1a<br \/>\nami = &#8220;${lookup(var.ec2_config, &#8220;ami&#8221;)}&#8221;<\/p>\n<p>\u5047\u8bbe\u662f\u8fd9\u6837\u7684\u8bdd<\/p>\n<p>\u8fd9\u53e5\u8bdd\u7684\u610f\u601d\u662f\u8981\u5f15\u7528 variables.tf \u6587\u4ef6\u4e2d ec2_config \u5bf9\u5e94\u7684 ami \u503c\u3002<\/p>\n<h2>\u8bf7\u5c06\u4ee5\u4e0b\u5185\u5bb9\u7528\u4e2d\u6587\u8fdb\u884c\u540c\u4e49\u8f6c\u8ff0\uff0c\u53ea\u9700\u63d0\u4f9b\u4e00\u79cd\u9009\u9879\uff1a<\/h2>\n<p>\u683c\u5f0f<\/p>\n<p>\u5173\u4e8e\u6700\u7ec8\u884c\u7684&#8221;vtryo-${format(&#8220;web%02d&#8221;, count.index + 1)}&#8221;\uff0c\u53d8\u91cf\u5b58\u50a8\u540e\u7684\u503c\u5c06\u662fvtryo-web01\u3002<br \/>\n\u987a\u4fbf\u63d0\u4e00\u4e0b\uff0c\u5982\u679c\u5c06&#8221;web%02d&#8221;\u6539\u4e3a&#8221;web%01d&#8221;\uff0c\u5219\u4f1a\u53d8\u6210vtryo-web1\uff0c\u6240\u4ee5\u8981\u6ce8\u610f\u3002<\/p>\n<h1>\u8fdb\u884c Terraform \u521d\u59cb\u5316<\/h1>\n<p>\u597d\uff0c\u73b0\u5728\u662f\u884c\u52a8\u7684\u65f6\u95f4\u3002<\/p>\n<pre class=\"post-pre\"><code>% terraform init\r\n\r\nInitializing provider plugins...\r\n- Checking for available provider plugins on https:\/\/releases.hashicorp.com...\r\n- Downloading plugin for provider \"aws\" (1.7.0)...\r\n\r\nThe following providers do not have any version constraints in configuration,\r\nso the latest version was installed.\r\n\r\nTo prevent automatic upgrades to new major versions that may contain breaking\r\nchanges, it is recommended to add version = \"...\" constraints to the\r\ncorresponding provider blocks in configuration, with the constraint strings\r\nsuggested below.\r\n\r\n* provider.aws: version = \"~&gt; 1.7\"\r\n\r\nTerraform has been successfully initialized!\r\n\r\nYou may now begin working with Terraform. Try running \"terraform plan\" to see\r\nany changes that are required for your infrastructure. All Terraform commands\r\nshould now work.\r\n\r\nIf you ever set or change modules or backend configuration for Terraform,\r\nrerun this command to reinitialize your working directory. If you forget, other\r\ncommands will detect it and remind you to do so if necessary.\r\n<\/code><\/pre>\n<h1>\u89c4\u5212 Terraform<\/h1>\n<pre class=\"post-pre\"><code> % terraform plan\r\nRefreshing Terraform state in-memory prior to plan...\r\nThe refreshed state will be used to calculate this plan, but will not be\r\npersisted to local or remote state storage.\r\n\r\n\r\n------------------------------------------------------------------------\r\n\r\nAn execution plan has been generated and is shown below.\r\nResource actions are indicated with the following symbols:\r\n  + create\r\n\r\nTerraform will perform the following actions:\r\n\r\n  + aws_instance.vtryo-web\r\n      id:                           &lt;computed&gt;\r\n      ami:                          \"ami-4af5022c\"\r\n      associate_public_ip_address:  &lt;computed&gt;\r\n      availability_zone:            &lt;computed&gt;\r\n      ebs_block_device.#:           &lt;computed&gt;\r\n      ephemeral_block_device.#:     &lt;computed&gt;\r\n      instance_state:               &lt;computed&gt;\r\n      instance_type:                \"t2.micro\"\r\n      ipv6_address_count:           &lt;computed&gt;\r\n      ipv6_addresses.#:             &lt;computed&gt;\r\n      key_name:                     \"id_rsa\"\r\n      network_interface.#:          &lt;computed&gt;\r\n      network_interface_id:         &lt;computed&gt;\r\n      placement_group:              &lt;computed&gt;\r\n      primary_network_interface_id: &lt;computed&gt;\r\n      private_dns:                  &lt;computed&gt;\r\n      private_ip:                   &lt;computed&gt;\r\n      public_dns:                   &lt;computed&gt;\r\n      public_ip:                    &lt;computed&gt;\r\n      root_block_device.#:          &lt;computed&gt;\r\n      security_groups.#:            &lt;computed&gt;\r\n      source_dest_check:            \"true\"\r\n      subnet_id:                    &lt;computed&gt;\r\n      tags.%:                       \"1\"\r\n      tags.Name:                    \"vtryo-web01\"\r\n      tenancy:                      &lt;computed&gt;\r\n      volume_tags.%:                &lt;computed&gt;\r\n      vpc_security_group_ids.#:     &lt;computed&gt;\r\n\r\n\r\nPlan: 1 to add, 0 to change, 0 to destroy.\r\n\r\n------------------------------------------------------------------------\r\n\r\nNote: You didn't specify an \"-out\" parameter to save this plan, so Terraform\r\ncan't guarantee that exactly these actions will be performed if\r\n\"terraform apply\" is subsequently run.\r\n\r\n<\/code><\/pre>\n<p>\u53d8\u91cf\u5df2\u5b58\u50a8\uff01<\/p>\n<h1>\u7a0d\u5fae\u5e94\u7528\u4e00\u4e0b<\/h1>\n<p>\u5728\u4e4b\u524d\u7684ec2.tf\u6587\u4ef6\u4e2d\uff0c\u6211\u5728Name\u5b57\u6bb5\u4e2d\u5199\u5165\u4e86&#8221;vtryo-${format(&#8220;web%02d&#8221;, count.index + 1)}&#8221;\u3002\u8f93\u51fa\u7ed3\u679c\u4e3avtryo-web01\u3002\u6211\u5c06\u5728\u4e0b\u9762\u5199\u4e0b\u4e00\u79cd\u65b9\u6cd5\uff0c\u5c06\u73af\u5883\u653e\u5728\u5f00\u5934\uff0c\u5f62\u6210stg-vtryo-web01\u3002<\/p>\n<h2>\u53d8\u91cf &#8220;env&#8221;\u3002<\/h2>\n<p>\u5728variables.tf\u6587\u4ef6\u4e2d\u6dfb\u52a0\u53d8\u91cf&#8221;env { }&#8221;\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"env\"<\/span> <span class=\"p\">{<\/span> <span class=\"p\">}<\/span>\r\n\r\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"ec2_config\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">ami<\/span>           <span class=\"p\">=<\/span> <span class=\"s2\">\"ami-4af5022c\"<\/span>\r\n    <span class=\"nx\">instance_type<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"t2.micro\"<\/span>\r\n    <span class=\"nx\">instance_key<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"id_rsa\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u5728 { } \u4e2d\u52a0\u5165\u9ed8\u8ba4\u503c\u3002\u5982\u679c\u8fd9\u6837\u505a\uff0c\u5199\u6cd5\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"env\"<\/span> <span class=\"p\">{<\/span> \r\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"text message...\"<\/span>\r\n <span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h2>${var.env}\u7684\u4e2d\u6587\u91ca\u4e49\u662f\u4ec0\u4e48\uff1f<\/h2>\n<p>\u5728ec2.tf\u6587\u4ef6\u4e2d\uff0c\u53ef\u4ee5\u5199\u4e0b\u4ee5\u4e0b\u5185\u5bb9\u3002<\/p>\n<pre class=\"post-pre\"><code>resource \"aws_instance\" \"vtryo-web\" {\r\n  ami                      = \"${lookup(var.ec2_config, \"ami\")}\"\r\n  instance_type            = \"${lookup(var.ec2_config, \"instance_type\")}\"\r\n  key_name                 = \"${lookup(var.ec2_config, \"instance_key\")}\"\r\n  tags {\r\n    Name = \"${var.env}-vtryo-${format(\"web%02d\", count.index + 1)}\"\r\n  }\r\n}\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u6dfb\u52a0 ${var.env} \uff0c\u60a8\u5728\u8fdb\u884c terraform plan \u65f6\u5c06\u88ab\u8981\u6c42\u8f93\u5165\u3002<br \/>\n\u8f93\u5165\u7684\u5185\u5bb9\u5c06\u5b58\u50a8\u5728 ${var.env} \u53d8\u91cf\u4e2d\u3002<\/p>\n<h2>terraform \u8ba1\u5212<\/h2>\n<p>\u56e0\u4e3a\u9700\u8981\u6c42\u4e00\u4e2a\u503c\uff0c\u6240\u4ee5\u6211\u9009\u62e9\u4e86\u8f93\u5165\u4e00\u4e2a\u503c\u3002<br \/>\n\u8fd9\u6837\uff0c\u5b57\u7b26\u4e32&#8221;stg&#8221;\u5c06\u4f1a\u88ab\u5b58\u50a8\u3002<\/p>\n<pre class=\"post-pre\"><code>% terraform plan\r\nvar.env\r\n  Enter a value: stg\r\n\r\nRefreshing Terraform state in-memory prior to plan...\r\nThe refreshed state will be used to calculate this plan, but will not be\r\npersisted to local or remote state storage.\r\n\r\n\r\n------------------------------------------------------------------------\r\n\r\nAn execution plan has been generated and is shown below.\r\nResource actions are indicated with the following symbols:\r\n  + create\r\n\r\nTerraform will perform the following actions:\r\n\r\n  + aws_instance.vtryo-web\r\n      id:                           &lt;computed&gt;\r\n      ami:                          \"ami-4af5022c\"\r\n      associate_public_ip_address:  &lt;computed&gt;\r\n      availability_zone:            &lt;computed&gt;\r\n      ebs_block_device.#:           &lt;computed&gt;\r\n      ephemeral_block_device.#:     &lt;computed&gt;\r\n      instance_state:               &lt;computed&gt;\r\n      instance_type:                \"t2.micro\"\r\n      ipv6_address_count:           &lt;computed&gt;\r\n      ipv6_addresses.#:             &lt;computed&gt;\r\n      key_name:                     \"id_rsa\"\r\n      network_interface.#:          &lt;computed&gt;\r\n      network_interface_id:         &lt;computed&gt;\r\n      placement_group:              &lt;computed&gt;\r\n      primary_network_interface_id: &lt;computed&gt;\r\n      private_dns:                  &lt;computed&gt;\r\n      private_ip:                   &lt;computed&gt;\r\n      public_dns:                   &lt;computed&gt;\r\n      public_ip:                    &lt;computed&gt;\r\n      root_block_device.#:          &lt;computed&gt;\r\n      security_groups.#:            &lt;computed&gt;\r\n      source_dest_check:            \"true\"\r\n      subnet_id:                    &lt;computed&gt;\r\n      tags.%:                       \"1\"\r\n      tags.Name:                    \"stg-vtryo-web01\"\r\n      tenancy:                      &lt;computed&gt;\r\n      volume_tags.%:                &lt;computed&gt;\r\n      vpc_security_group_ids.#:     &lt;computed&gt;\r\n\r\n\r\nPlan: 1 to add, 0 to change, 0 to destroy.\r\n\r\n------------------------------------------------------------------------\r\n\r\nNote: You didn't specify an \"-out\" parameter to save this plan, so Terraform\r\ncan't guarantee that exactly these actions will be performed if\r\n\"terraform apply\" is subsequently run.\r\n<\/code><\/pre>\n<p>\u987a\u4fbf\u8bf4\u4e00\u4e0b\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528 &#8220;terraform plan -var&#8221;env=stg&#8221; &#8221; \u6765\u5b9e\u73b0\u65e0\u9700\u8f93\u5165\u5373\u53ef\u5b58\u50a8\u3002<\/p>\n<h1>\u8fd9\u6b21\u7684\u8865\u5145\u6216\u8005\u8bf4\u662f\u95f2\u8c08<\/h1>\n<p>\u300cTerraform\u7684\u6700\u4f73\u5b9e\u8df5\uff0c\u4f60\u89c9\u5f97\u96be\u61c2\u5417\uff1f\u300d<\/p>\n<p>\u6211\u77e5\u9053\u5f00\u53d1\u8005\u63a8\u8350\u7684\u914d\u7f6e\u662f\u6700\u4f73\u5b9e\u8df5\uff0c\u4f46\u6211\u6709\u8fd9\u6837\u7684\u76f4\u89c9\u3002\u6211\u5f53\u7136\u4e5f\u8bfb\u4e86\u5728Qiita\u4e0a\u53d1\u5e03\u7684\u6587\u7ae0\u300a2017\u5e74\u7684Terraform\u6700\u4f73\u5b9e\u8df5\u300b\u3002<\/p>\n<p>\u6587\u4ef6\u4e2d\u9700\u8981\u591a\u6b21\u58f0\u660e\uff0c\u8ba9\u4eba\u611f\u89c9\u9605\u8bfb\u56f0\u96be\u3002\u6b64\u5916\uff0c\u636e\u5b98\u65b9\u8bf4\u6cd5\uff0c\u201c\u901a\u8fc7Environment\u8fdb\u884c\u73af\u5883\u5206\u79bb\u201d\u7684\u7ed3\u6784\u3002<\/p>\n<blockquote><p>\u5de5\u4f5c\u7a7a\u95f4\u53ef\u4ee5\u7528\u6765\u7ba1\u7406\u5f00\u53d1\u3001\u6682\u5b58\u548c\u751f\u4ea7\u4e4b\u95f4\u7684\u5c0f\u5dee\u5f02\uff0c\u4f46\u4e0d\u5e94\u5c06\u5176\u89c6\u4e3a\u552f\u4e00\u7684\u9694\u79bb\u673a\u5236\u3002<\/p><\/blockquote>\n<p>\u6839\u636e\u6211\u4eec\u7684Google\u7ffb\u8bd1\uff0c\u5b83\u7684\u610f\u601d\u662f\u8fd9\u6837\u7684\u3002<\/p>\n<blockquote><p>\u5de5\u4f5c\u533a\u53ef\u4ee5\u7528\u65bc\u7ba1\u7406\u5f00\u53d1\u3001\u6682\u5b58\u548c\u751f\u4ea7\u4e4b\u95f4\u7684\u5c0f\u5dee\u5f02\uff0c\u4f46\u4e0d\u5e94\u5c06\u5176\u89c6\u4e3a\u552f\u4e00\u7684\u5206\u79bb\u673a\u5236\u3002<\/p><\/blockquote>\n<p>\u8fd9\u662f\u4e00\u4e2a\u9700\u8981\u7ecf\u9a8c\u548c\u6280\u5de7\u624d\u80fd\u521d\u6b21\u89e3\u8bfb\u7684\u5185\u5bb9\u3002\u6216\u8bb8\u53ea\u6709\u591a\u6b21\u4f7f\u7528terraform\u624d\u80fd\u7406\u89e3\u5427\u3002<br \/>\n\u55ef\uff0c\u53ef\u80fd\u66f4\u6709\u53ef\u80fd\u7684\u662f\u6211\u7684\u6280\u672f\u529b\u8fd8\u8ddf\u4e0d\u4e0a\uff08\u7206\uff09\u3002<\/p>\n<p>\u7136\u800c\uff0c\u5e76\u4e0d\u662f\u6bcf\u4e2a\u4eba\u90fd\u62e5\u6709\u9ad8\u8d85\u7684Terraform\u6280\u672f\u80fd\u529b\uff0c\u56e0\u6b64\u6211\u8ba4\u4e3a\u5199\u4f5c\u66f4\u6613\u8bfb\u3001\u66f4\u6613\u7ef4\u62a4\u662f\u53ef\u4ee5\u7684\u3002<\/p>\n<p>\u8003\u8651\u5230\u4e00\u65e6\u51fa\u9519\uff0cterraform\u53ef\u80fd\u4f1a\u610f\u5916\u5220\u9664\u57fa\u7840\u8bbe\u65bd\uff0c\u56e0\u6b64\u611f\u5230\u6700\u597d\u8fd8\u662f\u786e\u4fdd\u5b89\u5168\u7684\u5fc3\u60c5\u3002<\/p>\n<p>\u56e0\u4e3a\u5728\u8fd9\u6b21\u7684\u60c5\u51b5\u4e0b\uff0cQiita\u7684\u6587\u7ae0\u7ed9\u4e86\u6211\u5f88\u5927\u7684\u5e2e\u52a9\uff0c\u6240\u4ee5\u6211\u51b3\u5b9a\u5728Qiita\u4e0a\u5199\u3002<\/p>\n<h2>\u6211\u60f3\u7b80\u5355\u5730\u8868\u8fbe\u6211\u7684\u6b32\u671b\u3002<\/h2>\n<p>\u6211\u8ba4\u4e3aTerraform\u5177\u6709\u53ef\u4ee5\u8fdb\u884c\u6a21\u5757\u5316\u7684\u529f\u80fd\uff0c\u8fd9\u589e\u52a0\u4e86\u4e00\u4e9b\u96be\u5ea6\u3002<\/p>\n<p>\u5c3d\u7ba1\u5c06\u53d8\u91cf\u8fdb\u884c\u6a21\u5757\u5316\u6709\u5176\u4f18\u70b9\uff0c\u4f46\u82e5\u65e0\u6cd5\u4f7f\u7528\uff0c\u5219\u6beb\u65e0\u610f\u4e49\u3002Terraform\u63d0\u4f9b\u4e86\u6a21\u5757\u6ce8\u518c\u8868\uff0c\u4f46\u82e5\u4e0d\u7406\u89e3\u5176\u673a\u5236\uff0c\u4f7f\u7528\u4ecd\u7136\u4f1a\u5f88\u56f0\u96be\u3002<\/p>\n<p>\u5982\u679c\u5b66\u4e60\u6210\u672c\u592a\u9ad8\uff0c\u5012\u4e0d\u5982\u5e72\u8106\u4e0d\u7528\uff0c\u7b80\u5355\u5730\u7f16\u5199\u4ee3\u7801\u6765\u89e3\u51b3\u95ee\u9898\u3002<\/p>\n<h2>\u4e0d\u6267\u7740\u4e8e\u6700\u4f73\u5b9e\u8df5<\/h2>\n<p>\u6211\u8ba4\u4e3a\u91cd\u8981\u7684\u662f\u53ef\u8bfb\u6027\u548c\u6613\u4e8e\u4e0a\u624b\uff0c\u6240\u4ee5\u6211\u6545\u610f\u4e0d\u56fa\u6267\u5730\u6784\u5efa\u4e86\u76ee\u5f55\u7ed3\u6784\uff0c\u8003\u8651\u4e86\u5982\u4f55\u66f4\u5bb9\u6613\u5730\u7f16\u5199terraform\u3002<br \/>\n\u5e0c\u671b\u5bf9\u4ed6\u4eba\u6709\u6240\u5e2e\u52a9\u3002<\/p>\n<h1>\u8bf7\u63d0\u4f9b\u66f4\u591a\u7684\u4e0a\u4e0b\u6587\uff0c\u4ee5\u4fbf\u6211\u53ef\u4ee5\u4e3a\u60a8\u63d0\u4f9b\u4e2d\u6587\u7684\u9002\u5f53\u89e3\u91ca\u3002<\/h1>\n<p>\u5229\u7528Map\u5728Terraform\u7684output\u4e2d\u7684\u65b9\u6cd5 &#8211; Qiita<br \/>\n2017\u5e74Terraform\u6700\u4f73\u5b9e\u8df5 &#8211; Qiita<br \/>\n\u5206\u5272Terraform\u4e2d\u7684AWS\u73af\u5883\u8bbe\u7f6e &#8211; Qiita<br \/>\n\u66f4\u8fdb\u4e00\u6b65\u4eab\u53d7Terraform\u7684\u4e50\u8da3\u3002\u4f7f\u7528\u6a21\u5757\u7b80\u5316IAM\u7528\u6237\u548c\u7b56\u7565\u7ba1\u7406\u3002<br \/>\n\u672c\u6587\u662f\u6b64\u5904\u7684\u514b\u9686\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u76ee\u5f55\u7ed3\u6784 \u6211\u5c06terraform\/provider\/aws\/env\/stg\u8bbe\u4e3a\u5982\u4e0b\u3002 \u5c06variables.t [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-49113","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528\u5730\u56fe\u7b80\u5316 Terraform \u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528\u5730\u56fe\u7b80\u5316-terraform-\u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528\u5730\u56fe\u7b80\u5316 Terraform \u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f\" \/>\n<meta property=\"og:description\" content=\"\u76ee\u5f55\u7ed3\u6784 \u6211\u5c06terraform\/provider\/aws\/env\/stg\u8bbe\u4e3a\u5982\u4e0b\u3002 \u5c06variables.t [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528\u5730\u56fe\u7b80\u5316-terraform-\u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-22T10:38:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T01:38:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8925913a08637a6c5222\/0-0.png\" \/>\n<meta name=\"author\" content=\"\u65b0, \u97f5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u65b0, \u97f5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/\",\"name\":\"\u4f7f\u7528\u5730\u56fe\u7b80\u5316 Terraform \u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-10-22T10:38:45+00:00\",\"dateModified\":\"2024-04-29T01:38:06+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528\u5730\u56fe\u7b80\u5316 Terraform \u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\",\"name\":\"\u65b0, \u97f5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"caption\":\"\u65b0, \u97f5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528\u5730\u56fe\u7b80\u5316 Terraform \u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528\u5730\u56fe\u7b80\u5316-terraform-\u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528\u5730\u56fe\u7b80\u5316 Terraform \u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f","og_description":"\u76ee\u5f55\u7ed3\u6784 \u6211\u5c06terraform\/provider\/aws\/env\/stg\u8bbe\u4e3a\u5982\u4e0b\u3002 \u5c06variables.t [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528\u5730\u56fe\u7b80\u5316-terraform-\u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-10-22T10:38:45+00:00","article_modified_time":"2024-04-29T01:38:06+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8925913a08637a6c5222\/0-0.png"}],"author":"\u65b0, \u97f5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u65b0, \u97f5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/","name":"\u4f7f\u7528\u5730\u56fe\u7b80\u5316 Terraform \u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-10-22T10:38:45+00:00","dateModified":"2024-04-29T01:38:06+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528\u5730\u56fe\u7b80\u5316 Terraform \u53d8\u91cf\u7684\u7f16\u5199\u65b9\u5f0f"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9","name":"\u65b0, \u97f5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","caption":"\u65b0, \u97f5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8%e5%9c%b0%e5%9b%be%e7%ae%80%e5%8c%96-terraform-%e5%8f%98%e9%87%8f%e7%9a%84%e7%bc%96%e5%86%99%e6%96%b9%e5%bc%8f\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=49113"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49113\/revisions"}],"predecessor-version":[{"id":84489,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49113\/revisions\/84489"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=49113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=49113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=49113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}