{"id":48578,"date":"2023-10-22T10:11:05","date_gmt":"2023-12-26T01:28:42","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/"},"modified":"2024-05-04T05:28:45","modified_gmt":"2024-05-03T21:28:45","slug":"%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/","title":{"rendered":"\u3010GCP\u548cTerraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528Terraform\u521b\u5efaGCP\u865a\u62df\u673a"},"content":{"rendered":"<h1>Terraform \u662f\u4ec0\u9ebc\uff1f<\/h1>\n<p>\u8bf7\u53c2\u8003\u4ee5\u4e0b\u8d44\u6599\uff0c\u8fd9\u662f\u7531HashiCorp\u7528Go\u8bed\u8a00\u5f00\u53d1\u7684Iac\uff08Infrastructure as Code\uff09\u5de5\u5177\uff0c\u53ef\u4ee5\u901a\u8fc7\u4ee3\u7801\u6765\u6784\u5efa\u4e91\u4e0a\u57fa\u7840\u8bbe\u65bd\u3002<\/p>\n<blockquote><p>\u4ee5\u4e0b\u662f\u4e00\u4e2a\u4e2d\u6587\u672c\u5730\u5316\u7684\u7528\u5fc3\u670d\u52a1\u7684\u94fe\u63a5\u9009\u9879\uff1a<\/p>\n<p>https:\/\/www.lac.co.jp\/lacwatch\/service\/20200903_002270.html<\/p><\/blockquote>\n<p>\u8fd9\u6b21\u6211\u6253\u7b97\u4f7f\u7528 Terraform \u6765\u521b\u5efa Google Cloud \u4e0a\u7684\u865a\u62df\u673a\u3002\u5173\u4e8e GCP \u7684\u57fa\u672c\u64cd\u4f5c\u548c Terraform \u7684\u6982\u5ff5\u89e3\u91ca\u6211\u4f1a\u7701\u7565\u4e0d\u63d0\u3002<\/p>\n<p>\u25a0\u8bae\u7a0b<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u5728GCP\u4e0a\u4f7f\u7528Terraform\u521b\u5efa\u5b9e\u4f8b\u914d\u7f6e\u6587\u4ef6.tf<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u6267\u884c\u793a\u4f8b<\/ol>\n<h1>Terraform\u5728GCP\u4e0a\u7684\u5e94\u7528<\/h1>\n<p>Terraform\u5df2\u9884\u88c5\u5728Cloud Shell\u4e2d\u3002<br \/>\n\u6253\u5f00Cloud Shell\uff0c\u786e\u8ba4Terraform\u53ef\u4ee5\u4f7f\u7528\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform\r\n<\/code><\/pre>\n<p>\u5e2e\u52a9\u6253\u5370<\/p>\n<pre class=\"post-pre\"><code>Usage: terraform [global options] &lt;subcommand&gt; [args]\r\n\r\nThe available commands for execution are listed below.\r\nThe primary workflow commands are given first, followed by\r\nless common or more advanced commands.\r\n\r\nMain commands:\r\n  init          Prepare your working directory for other commands\r\n  validate      Check whether the configuration is valid\r\n  plan          Show changes required by the current configuration\r\n  apply         Create or update infrastructure\r\n  destroy       Destroy previously-created infrastructure\r\n\r\nAll other commands:\r\n  console       Try Terraform expressions at an interactive command prompt\r\n  fmt           Reformat your configuration in the standard style\r\n  force-unlock  Release a stuck lock on the current workspace\r\n  get           Install or upgrade remote Terraform modules\r\n  graph         Generate a Graphviz graph of the steps in an operation\r\n  import        Associate existing infrastructure with a Terraform resource\r\n  login         Obtain and save credentials for a remote host\r\n  logout        Remove locally-stored credentials for a remote host\r\n  output        Show output values from your root module\r\n  providers     Show the providers required for this configuration\r\n  refresh       Update the state to match remote systems\r\n  show          Show the current state or a saved plan\r\n  state         Advanced state management\r\n  taint         Mark a resource instance as not fully functional\r\n  test          Experimental support for module integration testing\r\n  untaint       Remove the 'tainted' state from a resource instance\r\n  version       Show the current Terraform version\r\n  workspace     Workspace management\r\n\r\nGlobal options (use these before the subcommand, if any):\r\n  -chdir=DIR    Switch to a different working directory before executing the\r\n                given subcommand.\r\n  -help         Show this help output, or the help for a specified subcommand.\r\n  -version      An alias for the \"version\" subcommand.\r\n<\/code><\/pre>\n<h1>\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a&#8221;\u69cb\u6210\u6587\u4ef6.tf&#8221;\u7684\u6587\u4ef6\u3002<\/h1>\n<p>\u8ba9\u6211\u4eec\u542f\u52a8\u4e00\u4e2aVM\u5b9e\u4f8b\u3002\u6709\u5173\u914d\u7f6e\u6587\u4ef6\u683c\u5f0f\uff0c\u8bf7\u67e5\u770b\u6b64\u6587\u6863\u3002<\/p>\n<blockquote><p>\u8bf7\u70b9\u51fb\u4ee5\u4e0b\u94fe\u63a5\u8bbf\u95ee terraform.io \u7684\u5b98\u65b9\u7f51\u7ad9\uff0c\u4e86\u89e3\u6709\u5173 Terraform \u8bed\u8a00\u7684\u66f4\u591a\u4fe1\u606f\u3002<\/p><\/blockquote>\n<p>\u914d\u7f6e\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f.tf(.tf.json)\u3002<\/p>\n<p>\u521b\u5efa\u4e00\u4e2a\u540d\u4e3ainstance.tf\u7684\u7a7a\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>touch instance.tf\r\n<\/code><\/pre>\n<p>\u4f7f\u7528\u547d\u4ee4\u6216\u4e91\u7aefShell\u7684\u7f16\u8f91\u5668\u6765\u7f16\u8f91\u5df2\u521b\u5efa\u7684\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>nano instance.tf\r\n<\/code><\/pre>\n<p>\u8bf7\u5c06\u4ee5\u4e0b\u5185\u5bb9\u6dfb\u52a0\u5230\u6587\u4ef6\u4e2d\uff0c\u5e76\u5c06\u5176\u66ff\u6362\u4e3aGoogle Cloud\u9879\u76eeID\u3002<\/p>\n<pre class=\"post-pre\"><code>resource \"google_compute_instance\" \"terraform\" {\r\n  project      = \"&lt;PROJECT_ID&gt;\"\r\n  name         = \"tf-instance\"\r\n  machine_type = \"n1-standard-1\"\r\n  zone         = \"asia-northeast1-c\"\r\n  boot_disk {\r\n    initialize_params {\r\n      image = \"debian-cloud\/debian-9\"\r\n    }\r\n  }\r\n  network_interface {\r\n    network = \"default\"\r\n    access_config {\r\n    }\r\n  }\r\n}\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0b\u662f\u7b80\u5355\u7684\u89e3\u91ca\uff1a<br \/>\n&#8220;resource&#8221;\u5757\u7528\u4e8e\u5b9a\u4e49\u57fa\u7840\u8bbe\u65bd\u4e2d\u5b58\u5728\u7684\u8d44\u6e90\u3002<br \/>\n\u5728\u6253\u5f00\u5757\u4e4b\u524d\uff0c\u6709\u4e24\u4e2a\u5b57\u7b26\u4e32\uff1a\u8d44\u6e90\u7c7b\u578b\u548c\u8d44\u6e90\u540d\u79f0\u3002\u8d44\u6e90\u7c7b\u578b\u662fgoogle_compute_instance\uff0c\u8d44\u6e90\u540d\u79f0\u662fterraform\u3002\u7c7b\u578b\u524d\u7f00\u4e0e\u63d0\u4f9b\u7a0b\u5e8f\u5bf9\u5e94\uff0c\u56e0\u6b64\u8f93\u5165google_compute_instance\uff0cTerraform\u4f1a\u81ea\u52a8\u8bc6\u522b\u4e3a\u7531Google\u63d0\u4f9b\u7a0b\u5e8f\u7ba1\u7406\u7684\u8d44\u6e90\u3002<br \/>\n\u5757\u7684\u5185\u5bb9\u662f\u5728\u63a7\u5236\u53f0\u4e0a\u521b\u5efa\u865a\u62df\u673a\u65f6\u7684\u53c2\u6570\u3002<\/p>\n<p>\u4f7f\u7528ls\u547d\u4ee4\u6765\u786e\u8ba4\u76ee\u5f55\u4e2d\u4e0d\u5305\u542b\u5176\u4ed6*.tf\u6587\u4ef6\u3002\u8fd9\u662f\u56e0\u4e3aTerraform\u4f1a\u8bfb\u53d6\u6240\u6709*.tf\u6587\u4ef6\u3002<\/p>\n<h1>\u6267\u884c\u793a\u4f8b<\/h1>\n<p>1. \u521d\u671f\u5316<br \/>\n\u5bf9\u4e8e\u65b0\u914d\u7f6e\uff08\u6216\u8005\u4ece\u7248\u672c\u63a7\u5236\u4e2d\u68c0\u51fa\u7684\u73b0\u6709\u914d\u7f6e\uff09\uff0c\u9996\u5148\u8981\u6267\u884c\u7684\u547d\u4ee4\u662fterraform init\u3002\u6267\u884c\u8be5\u547d\u4ee4\u540e\uff0c\u5c06\u521d\u59cb\u5316\u7528\u4e8e\u4e4b\u540e\u547d\u4ee4\u4e2d\u4f7f\u7528\u7684\u5404\u79cd\u672c\u5730\u8bbe\u7f6e\u548c\u672c\u5730\u6570\u636e\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform init\r\n<\/code><\/pre>\n<p>\u5bf9\u4e8e&#8221;\u51fa\u529b\u4f8b&#8221;\u7684\u672c\u5730\u5316\u89e3\u91ca:<br \/>\n&#8211; \u5b9e\u4f8b\u8f93\u51fa<br \/>\n&#8211; \u8f93\u51fa\u6837\u4f8b<br \/>\n&#8211; \u793a\u4f8b\u8f93\u51fa<br \/>\n&#8211; \u51fa\u529b\u6848\u4f8b<\/p>\n<pre class=\"post-pre\"><code>Initializing the backend...\r\n\r\nInitializing provider plugins...\r\n- Finding latest version of hashicorp\/google...\r\n- Installing hashicorp\/google v4.21.0...\r\n- Installed hashicorp\/google v4.21.0 (signed by HashiCorp)\r\n\r\nTerraform has created a lock file .terraform.lock.hcl to record the provider\r\nselections it made above. Include this file in your version control repository\r\nso that Terraform can guarantee to make the same selections by default when\r\nyou run \"terraform init\" in the future.\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<p>\u6267\u884c\u8ba1\u5212\u521b\u5efa<br \/>\n\u6267\u884c\u6b64\u547d\u4ee4\u5c06\u66f4\u65b0\u6267\u884c\u8ba1\u5212\u3002\u7136\u540e\uff0c\u6839\u636e\u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\u7684\u64cd\u4f5c\u786e\u5b9a\u8fbe\u5230\u6240\u9700\u72b6\u6001\u6240\u9700\u7684\u64cd\u4f5c\u3002<br \/>\n\u8be5\u547d\u4ee4\u53ef\u65b9\u4fbf\u5730\u5728\u9884\u671f\u72b6\u6001\u4e2d\uff0c\u901a\u8fc7\u5e94\u7528\u4e00\u7cfb\u5217\u66f4\u6539\u7684\u6267\u884c\u8ba1\u5212\uff0c\u800c\u65e0\u9700\u66f4\u6539\u5b9e\u9645\u8d44\u6e90\u548c\u72b6\u6001\u6765\u786e\u8ba4\u662f\u5426\u53ef\u4ee5\u5b9e\u73b0\u9884\u671f\u76ee\u6807\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform plan\r\n<\/code><\/pre>\n<p>\u51fa\u529b\u7684\u4f8b\u5b50<\/p>\n<pre class=\"post-pre\"><code>Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:\r\n  + create\r\n\r\nTerraform will perform the following actions:\r\n\r\n  # google_compute_instance.terraform will be created\r\n  + resource \"google_compute_instance\" \"terraform\" {\r\n      + can_ip_forward       = false\r\n      + cpu_platform         = (known after apply)\r\n      + current_status       = (known after apply)\r\n      + deletion_protection  = false\r\n      + guest_accelerator    = (known after apply)\r\n      + id                   = (known after apply)\r\n      + instance_id          = (known after apply)\r\n      + label_fingerprint    = (known after apply)\r\n      + machine_type         = \"n1-standard-1\"\r\n      + metadata_fingerprint = (known after apply)\r\n      + min_cpu_platform     = (known after apply)\r\n      + name                 = \"tf-instance\"\r\n      + project              = \"&lt;PROJECT_ID&gt;\"\r\n      + self_link            = (known after apply)\r\n      + tags_fingerprint     = (known after apply)\r\n      + zone                 = \"asia-northeast1-c\"\r\n\r\n      + boot_disk {\r\n          + auto_delete                = true\r\n          + device_name                = (known after apply)\r\n          + disk_encryption_key_sha256 = (known after apply)\r\n          + kms_key_self_link          = (known after apply)\r\n          + mode                       = \"READ_WRITE\"\r\n          + source                     = (known after apply)\r\n\r\n          + initialize_params {\r\n              + image  = \"debian-cloud\/debian-9\"\r\n              + labels = (known after apply)\r\n              + size   = (known after apply)\r\n              + type   = (known after apply)\r\n            }\r\n        }\r\n\r\n      + confidential_instance_config {\r\n          + enable_confidential_compute = (known after apply)\r\n        }\r\n\r\n      + network_interface {\r\n          + ipv6_access_type   = (known after apply)\r\n          + name               = (known after apply)\r\n          + network            = \"default\"\r\n          + network_ip         = (known after apply)\r\n          + stack_type         = (known after apply)\r\n          + subnetwork         = (known after apply)\r\n          + subnetwork_project = (known after apply)\r\n\r\n          + access_config {\r\n              + nat_ip       = (known after apply)\r\n              + network_tier = (known after apply)\r\n            }\r\n        }\r\n\r\n      + reservation_affinity {\r\n          + type = (known after apply)\r\n\r\n          + specific_reservation {\r\n              + key    = (known after apply)\r\n              + values = (known after apply)\r\n            }\r\n        }\r\n\r\n      + scheduling {\r\n          + automatic_restart   = (known after apply)\r\n          + min_node_cpus       = (known after apply)\r\n          + on_host_maintenance = (known after apply)\r\n          + preemptible         = (known after apply)\r\n          + provisioning_model  = (known after apply)\r\n\r\n          + node_affinities {\r\n              + key      = (known after apply)\r\n              + operator = (known after apply)\r\n              + values   = (known after apply)\r\n            }\r\n        }\r\n    }\r\n\r\nPlan: 1 to add, 0 to change, 0 to destroy.\r\n<\/code><\/pre>\n<p>\u6267\u884c\u8ba1\u5212\u4e2d\u63cf\u8ff0\u4e86\u7528\u4e8e\u6839\u636e\u6b64\u914d\u7f6e\u66f4\u6539\u5b9e\u9645\u57fa\u7840\u67b6\u6784\u7684\u64cd\u4f5c\u3002\u8f93\u51fa\u7684\u683c\u5f0f\u7c7b\u4f3c\u4e8e\u901a\u8fc7Git\u7b49\u5de5\u5177\u751f\u6210\u7684\u5dee\u5f02\u683c\u5f0f\u3002<\/p>\n<p>\u5728\u4e0einstance.tf\u6587\u4ef6\u76f8\u540c\u7684\u76ee\u5f55\u4e2d\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a\u5e94\u7528\u66f4\u6539\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform apply\r\n<\/code><\/pre>\n<p>\u5982\u679c\u8ba1\u5212\u6210\u529f\u521b\u5efa\uff0c\u5219 Terraform \u4f1a\u5728\u6b64\u5904\u6682\u505c\uff0c\u5e76\u5728\u7ee7\u7eed\u4e4b\u524d\u8bf7\u6c42\u6279\u51c6\u3002<\/p>\n<pre class=\"post-pre\"><code>Enter a value: \r\n<\/code><\/pre>\n<p>\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u7531\u4e8e\u8ba1\u5212\u6ca1\u6709\u95ee\u9898\uff0c\u6240\u4ee5\u8bf7\u5728\u786e\u8ba4\u63d0\u793a\u4e2d\u8f93\u5165\u201cyes\u201d\u4ee5\u7ee7\u7eed\u6267\u884c\u3002<br \/>\n\u6267\u884c\u8ba1\u5212\u53ef\u80fd\u9700\u8981\u51e0\u5206\u949f\u65f6\u95f4\uff0c\u56e0\u4e3a Terraform \u9700\u8981\u7b49\u5f85 VM \u5b9e\u4f8b\u53ef\u7528\u3002<\/p>\n<p>\u51fa\u529b\u4f8b\u7684\u4e2d\u6587\u7ffb\u8bd1\uff1a\u8f93\u51fa\u793a\u4f8b<\/p>\n<pre class=\"post-pre\"><code>.......\r\n\r\nDo you want to perform these actions?\r\n  Terraform will perform the actions described above.\r\n  Only 'yes' will be accepted to approve.\r\n\r\n  Enter a value: yes\r\n\r\ngoogle_compute_instance.terraform: Creating...\r\ngoogle_compute_instance.terraform: Still creating... [10s elapsed]\r\ngoogle_compute_instance.terraform: Creation complete after 14s [id=projects\/&lt;project-id&gt;\/zones\/asia-northeast1-c\/instances\/tf-instance]\r\n\r\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\r\n<\/code><\/pre>\n<p>\u5230\u76ee\u524d\u4e3a\u6b62\uff0c\u5b9e\u4f8b\u7684\u521b\u5efa\u5df2\u7ecf\u5b8c\u6210\uff0c\u5e76\u4e14\u53ef\u4ee5\u5728\u63a7\u5236\u53f0\u4e0a\u8fdb\u884c\u786e\u8ba4\u3002<br \/>\n\u8981\u66f4\u6539\u5df2\u7ecf\u521b\u5efa\u7684\u8d44\u6e90\uff0c\u8bf7\u5148\u4fee\u6539\u5176\u5bf9\u5e94\u7684\u914d\u7f6e\u6587\u4ef6.tf\uff0c<br \/>\n\u7136\u540e\u6267\u884cterraform apply\u5373\u53ef\u8fdb\u884c\u66f4\u6539\u3002<\/p>\n<p>4.\u786e\u8ba4\u73b0\u72b6<br \/>\n\u5728\u4e91Shell\u4e0a\u786e\u8ba4\u5f53\u524d\u72b6\u6001\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform show\r\n<\/code><\/pre>\n<p>\u51fa\u529b\u5b9e\u4f8b l\u00ec)<\/p>\n<pre class=\"post-pre\"><code># google_compute_instance.terraform:\r\nresource \"google_compute_instance\" \"terraform\" {\r\n    can_ip_forward       = false\r\n    cpu_platform         = \"Intel Broadwell\"\r\n    current_status       = \"RUNNING\"\r\n    deletion_protection  = false\r\n    enable_display       = false\r\n    guest_accelerator    = []\r\n    id                   = \"projects\/&lt;project-id&gt;\/zones\/asia-northeast1-c\/instances\/tf-instance\"\r\n    instance_id          = \"4562989540648335002\"\r\n    label_fingerprint    = \"42WmSpB8rSM=\"\r\n    machine_type         = \"n1-standard-1\"\r\n    metadata_fingerprint = \"3DFjFhfX0U8=\"\r\n    name                 = \"tf-instance\"\r\n......\r\n    zone                 = \"asia-northeast1-c\"\r\n......\r\n}\r\n<\/code><\/pre>\n<p>5. \u5220\u9664\u521b\u5efa\u7684\u5b9e\u4f8b<br \/>\n\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\uff0c\u53ef\u4ee5\u5220\u9664\u7531terraform\u6784\u5efa\u7684\u6240\u6709\u8d44\u6e90\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform destroy\r\n<\/code><\/pre>\n<p>\u4ea7\u91cf\u793a\u4f8b<\/p>\n<pre class=\"post-pre\"><code>Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:\r\n  - destroy\r\n\r\nTerraform will perform the following actions:\r\n\r\n  # google_compute_instance.terraform will be destroyed\r\n......\r\nPlan: 0 to add, 0 to change, 1 to destroy.\r\n\r\nDo you really want to destroy all resources?\r\n  Terraform will destroy all your managed infrastructure, as shown above.\r\n  There is no undo. Only 'yes' will be accepted to confirm.\r\n\r\n  Enter a value: yes\r\n\r\ngoogle_compute_instance.terraform: Destroying... [id=projects\/&lt;project-id&gt;\/zones\/asia-northeast1-c\/instances\/tf-instance]\r\ngoogle_compute_instance.terraform: Still destroying... [id=projects\/&lt;project-id&gt;\/zon...sia-northeast1-c\/instances\/tf-instance, 10s elapsed]\r\ngoogle_compute_instance.terraform: Still destroying... [id=projects\/&lt;project-id&gt;\/zon...sia-northeast1-c\/instances\/tf-instance, 20s elapsed]\r\ngoogle_compute_instance.terraform: Destruction complete after 22s\r\n\r\nDestroy complete! Resources: 1 destroyed.\r\n<\/code><\/pre>\n<h1>\u6700\u7ec8<\/h1>\n<p>\u6211\u5e0c\u671b\u4ece\u4e0b\u6b21\u5f00\u59cb\u6309\u7167\u4ee5\u4e0b\u7684\u987a\u5e8f\u8fdb\u884c\u4ecb\u7ecd\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>Terraform\u7684\u4f9d\u8d56\u5173\u7cfb\u548cVPC\u7684\u914d\u7f6e\uff0c<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>Terraform\u6a21\u5757\u7684\u64cd\u4f5c\uff0c<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>Terraform State\u7684\u7ba1\u7406\u3002<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Terraform \u662f\u4ec0\u9ebc\uff1f \u8bf7\u53c2\u8003\u4ee5\u4e0b\u8d44\u6599\uff0c\u8fd9\u662f\u7531HashiCorp\u7528Go\u8bed\u8a00\u5f00\u53d1\u7684Iac\uff08Infrastr [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48578","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>\u3010GCP\u548cTerraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528Terraform\u521b\u5efaGCP\u865a\u62df\u673a - 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\/\u3010gcp\u548cterraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528terraform\u521b\u5efagcp\u865a\u62df\u673a\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u3010GCP\u548cTerraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528Terraform\u521b\u5efaGCP\u865a\u62df\u673a\" \/>\n<meta property=\"og:description\" content=\"Terraform \u662f\u4ec0\u9ebc\uff1f \u8bf7\u53c2\u8003\u4ee5\u4e0b\u8d44\u6599\uff0c\u8fd9\u662f\u7531HashiCorp\u7528Go\u8bed\u8a00\u5f00\u53d1\u7684Iac\uff08Infrastr [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u3010gcp\u548cterraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528terraform\u521b\u5efagcp\u865a\u62df\u673a\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-26T01:28:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-03T21:28:45+00:00\" \/>\n<meta name=\"author\" content=\"\u6e05, \u5b87\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u5b87\" \/>\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\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/\",\"name\":\"\u3010GCP\u548cTerraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528Terraform\u521b\u5efaGCP\u865a\u62df\u673a - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-12-26T01:28:42+00:00\",\"dateModified\":\"2024-05-03T21:28:45+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u3010GCP\u548cTerraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528Terraform\u521b\u5efaGCP\u865a\u62df\u673a\"}]},{\"@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\/1a6ecd3d914d22a5ac32791ffc1fbd8e\",\"name\":\"\u6e05, \u5b87\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u5b87\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u3010GCP\u548cTerraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528Terraform\u521b\u5efaGCP\u865a\u62df\u673a - 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\/\u3010gcp\u548cterraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528terraform\u521b\u5efagcp\u865a\u62df\u673a\/","og_locale":"zh_CN","og_type":"article","og_title":"\u3010GCP\u548cTerraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528Terraform\u521b\u5efaGCP\u865a\u62df\u673a","og_description":"Terraform \u662f\u4ec0\u9ebc\uff1f \u8bf7\u53c2\u8003\u4ee5\u4e0b\u8d44\u6599\uff0c\u8fd9\u662f\u7531HashiCorp\u7528Go\u8bed\u8a00\u5f00\u53d1\u7684Iac\uff08Infrastr [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u3010gcp\u548cterraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528terraform\u521b\u5efagcp\u865a\u62df\u673a\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-12-26T01:28:42+00:00","article_modified_time":"2024-05-03T21:28:45+00:00","author":"\u6e05, \u5b87","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u5b87","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/","name":"\u3010GCP\u548cTerraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528Terraform\u521b\u5efaGCP\u865a\u62df\u673a - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-12-26T01:28:42+00:00","dateModified":"2024-05-03T21:28:45+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u3010GCP\u548cTerraform\u3011\u3010\u5165\u95e8\u7bc7\u2460\u3011\u4f7f\u7528Terraform\u521b\u5efaGCP\u865a\u62df\u673a"}]},{"@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\/1a6ecd3d914d22a5ac32791ffc1fbd8e","name":"\u6e05, \u5b87","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","caption":"\u6e05, \u5b87"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e3%80%90gcp%e5%92%8cterraform%e3%80%91%e3%80%90%e5%85%a5%e9%97%a8%e7%af%87%e2%91%a0%e3%80%91%e4%bd%bf%e7%94%a8terraform%e5%88%9b%e5%bb%bagcp%e8%99%9a%e6%8b%9f%e6%9c%ba\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48578","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\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=48578"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48578\/revisions"}],"predecessor-version":[{"id":96396,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48578\/revisions\/96396"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48578"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48578"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}