{"id":48686,"date":"2023-08-08T17:27:39","date_gmt":"2024-02-11T16:52:25","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/"},"modified":"2024-04-30T17:36:58","modified_gmt":"2024-04-30T09:36:58","slug":"%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/","title":{"rendered":"\u4f7f\u7528 Terrafom Cloud \u7ba1\u7406\u73b0\u6709\u7684 GCP \u8d44\u6e90"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u8fd9\u7bc7\u6587\u7ae0\u662f terraform Advent Calendar 2019 \u7684\u7b2c10\u5929\u3002<br \/>\n\u7531\u4e8e\u6211\u8bd5\u7740\u4f7f\u7528 Terraform Cloud \u6765\u7ba1\u7406\u73b0\u6709\u7684 GCP \u8d44\u6e90\uff0c\u6240\u4ee5\u60f3\u8981\u4ecb\u7ecd\u4e00\u4e0b\u914d\u7f6e\u65b9\u6cd5\u3002<\/p>\n<h2>\u521b\u5efa\u73af\u5883 (Zu\u00f2<\/h2>\n<p>.tf \u30d5\u30a1\u30a4\u30eb\u3092 GitHub \u3067\u7ba1\u7406\u3059\u308b<br \/>\n\u65e2\u5b58\u306e GCP \u306e\u30ea\u30bd\u30fc\u30b9\u3092 .tf \u30d5\u30a1\u30a4\u30eb\u306b\u81ea\u52d5\u5909\u63db\u3059\u308b<br \/>\nbranch \u3092\u5207\u3063\u3066 commit &amp; push \u3059\u308b\u3068\u81ea\u52d5\u3067 terraform plan \u3059\u308b<br \/>\nmaster branch \u306b merge \u3059\u308b\u3068\u81ea\u52d5\u3067 terraform apply \u3059\u308b<br \/>\n\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u3067\u3082 terraform plan \u304c\u53e9\u3051\u308b<\/p>\n<h2>\u8d1f\u8d23\u7ba1\u7406\u7684\u4eba<\/h2>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/5-0.png\" alt=\"bgpat-dev_\u8a73\u7d30_-_bgpat_-_Google_Cloud_Platform.png\" \/><\/div>\n<h2>\u63d0\u524d\u51c6\u5907\u597d\u7684\u4e1c\u897f<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Terraform Cloud \u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3068 organization \u306e\u767b\u9332<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Terraform Cloud \u3092 terraform \u306e remote \u3068\u3057\u3066\u5229\u7528\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a<\/ul>\n<\/li>\n<\/ul>\n<p>\u4f8b: ~\/.terraformrc \u306b token \u3092\u8a2d\u5b9a\u3059\u308b\u306a\u3069<\/p>\n<p>gcloud \u30b3\u30de\u30f3\u30c9\u306e\u8a2d\u5b9a<\/p>\n<p>terraformer \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<h1>\u5728GCP\u4e0a\u521b\u5efa\u670d\u52a1\u5e10\u6237<\/h1>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/9-0.png\" alt=\"Screen Shot 2019-12-10 at 6.58.30.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/10-0.png\" alt=\"Screen Shot 2019-12-10 at 6.58.54.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/11-0.png\" alt=\"Screen Shot 2019-12-10 at 6.59.37.png\" \/><\/div>\n<h1>\u5728GitHub\u4e0a\u521b\u5efa\u4e00\u4e2a\u5b58\u50a8\u5e93\u3002<\/h1>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/13-0.png\" alt=\"Screen Shot 2019-12-10 at 6.46.44.png\" \/><\/div>\n<p>\u5b8c\u6210\u540e\uff0c\u5c06\u5176\u514b\u9686\u5230\u672c\u5730\u3002<\/p>\n<h1>\u5728Terraform Cloud\u4e0a\u521b\u5efa\u5de5\u4f5c\u533a\u3002<\/h1>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/16-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/17-0.png\" alt=\"Screen Shot 2019-12-10 at 6.50.27.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/18-0.png\" alt=\"Screen Shot 2019-12-10 at 6.49.02.png\" \/><\/div>\n<h1>\u5728Terraform Cloud\u4e0a\u6ce8\u518cGCP\u7684\u8ba4\u8bc1\u4fe1\u606f\u3002<\/h1>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/20-0.png\" alt=\"Screen Shot 2019-12-10 at 7.23.12.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/21-0.png\" alt=\"image.png\" \/><\/div>\n<h1>\u542f\u7528Terraform Cloud\u7684\u81ea\u52a8\u5e94\u7528\u529f\u80fd<\/h1>\n<p>\u5c06\u8bbe\u7f6e\u66f4\u6539\u4e3a\u5728GitHub\u4e0a\u63a8\u9001\u65f6\u81ea\u52a8\u6267\u884cterraform plan\u548cterraform apply\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/24-1.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/25-0.png\" alt=\"Screen Shot 2019-12-10 at 7.23.12.png\" \/><\/div>\n<h1>\u4f7f\u7528 terraformer \u5c06\u73b0\u6709\u7684 GCP \u8d44\u6e90\u5bfc\u5165<\/h1>\n<p>\u4f7f\u7528 terraformer \u5bfc\u5165 GCP \u8d44\u6e90\u3002<br \/>\n\u4e3a\u4e86\u4f7f\u7528 terraformer\uff0c\u9700\u8981\u914d\u7f6e terraform provider\uff0c\u56e0\u6b64\u7f16\u5199 google provider \u7684\u8bbe\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">variable<\/span> <span class=\"s2\">\"GOOGLE_APPLICATION_CREDENTIALS_JSON\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">type<\/span>    <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\r\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">provider<\/span> <span class=\"s2\">\"google\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">version<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"v3.1.0\"<\/span>\r\n  <span class=\"nx\">project<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"bgpat-188622\"<\/span>\r\n  <span class=\"nx\">credentials<\/span> <span class=\"p\">=<\/span> <span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">GOOGLE_APPLICATION_CREDENTIALS_JSON<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>var.GOOGLE_APPLICATION_CREDENTIALS_JSON \u5b58\u50a8\u4e86\u5728 Terraform Cloud \u4e0a\u914d\u7f6e\u7684 GCP \u7684\u8ba4\u8bc1\u4fe1\u606f\u3002<br \/>\n\u7531\u4e8e\u9ed8\u8ba4\u503c\u4e3a\u7a7a\u5b57\u7b26\u4e32\uff0c\u56e0\u6b64\u5728\u672c\u5730\u8fd0\u884c\u65f6\u5c06\u4f7f\u7528 gcloud \u547d\u4ee4\u7684\u8ba4\u8bc1\u4fe1\u606f\u3002<\/p>\n<p>\u5728\u653e\u7f6e\u6587\u4ef6\u540e\uff0c\u8fd0\u884cterraform init\u5e76\u5c06google\u63d2\u4ef6\u653e\u7f6e\u5728\u7f13\u5b58\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> terraform init\r\n<span class=\"go\">\r\nInitializing the backend...\r\n\r\nInitializing provider plugins...\r\n- Checking for available provider plugins...\r\n- Downloading plugin for provider \"google\" (hashicorp\/google) 3.1.0...\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<\/span><\/code><\/pre>\n<p>\u4f7f\u7528 Terraformer import \u5c06 GCP \u8d44\u6e90\u8f6c\u6362\u4e3a .tf \u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> terraformer import google <span class=\"nt\">--projects<\/span><span class=\"o\">=<\/span>bgpat-188622 <span class=\"nt\">--resources<\/span><span class=\"o\">=<\/span>dns\r\n<span class=\"go\">2019\/12\/10 07:55:53 google importing project bgpat-188622 region global\r\n2019\/12\/10 07:55:54 google importing... dns\r\n2019\/12\/10 07:55:59 Refreshing state... google_dns_record_set.tfer--bgpat-002D-dev_bgpat-002E-dev-002E--002D-NS\r\n\ufe19\r\n2019\/12\/10 07:56:01 google Connecting.... \r\n2019\/12\/10 07:56:01 google save dns\r\n2019\/12\/10 07:56:01 google save tfstate for dns\r\n<\/span><\/code><\/pre>\n<p>\u786e\u8ba4\u5df2\u7ecf\u6b63\u786e\u5730\u5bfc\u5165\u4e86\u5417\uff1f<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> tree generated\/\r\n<span class=\"go\">generated\/\r\n\u2514\u2500\u2500 google\r\n    \u2514\u2500\u2500 bgpat-188622\r\n        \u2514\u2500\u2500 dns\r\n            \u2514\u2500\u2500 global\r\n                \u251c\u2500\u2500 dns_managed_zone.tf\r\n                \u251c\u2500\u2500 dns_record_set.tf\r\n                \u251c\u2500\u2500 outputs.tf\r\n                \u251c\u2500\u2500 provider.tf\r\n                \u2514\u2500\u2500 terraform.tfstate\r\n\r\n4 directories, 5 files\r\n<\/span><\/code><\/pre>\n<p>\u7531\u4e8eTerraformer\u751f\u6210\u7684\u6587\u4ef6\u4e0d\u652f\u6301v0.12\u7684\u8bed\u6cd5\uff0c\u56e0\u6b64\u9700\u8981\u4f7f\u7528terraform 0.12upgrade\u8fdb\u884c\u8f6c\u6362\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> terraform 0.12upgrade generated\/google\/bgpat-188622\/dns\/global\/\r\n<span class=\"go\">\r\nThis command will rewrite the configuration files in the given directory so\r\nthat they use the new syntax features from Terraform v0.12, and will identify\r\nany constructs that may need to be adjusted for correct operation with\r\nTerraform v0.12.\r\n\r\nWe recommend using this command in a clean version control work tree, so that\r\nyou can easily see the proposed changes as a diff against the latest commit.\r\nIf you have uncommited changes already present, we recommend aborting this\r\ncommand and dealing with them before running this command again.\r\n\r\nWould you like to upgrade the module in generated\/google\/bgpat-188622\/dns\/global?\r\n  Only 'yes' will be accepted to confirm.\r\n\r\n  Enter a value: yes\r\n\r\n-----------------------------------------------------------------------------\r\n\r\nUpgrade complete!\r\n\r\nThe configuration files were upgraded successfully. Use your version control\r\nsystem to review the proposed changes, make any necessary adjustments, and\r\nthen commit.\r\n<\/span><\/code><\/pre>\n<p>\u4ece\u751f\u6210\u7684\u76ee\u5f55\u4e2d\u63d0\u53d6\u6240\u9700\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">cp <\/span>generated\/google\/bgpat-188622\/dns\/global\/<span class=\"o\">{<\/span>dns_managed_zone.tf,dns_record_set.tf<span class=\"o\">}<\/span> .\/\r\n<\/code><\/pre>\n<h1>\u5c06 tfsate \u540c\u6b65\u5230 Terraform Cloud<\/h1>\n<p>\u5982\u679c\u7ee7\u7eed\u4fdd\u6301\u8fd9\u6837\u7684\u72b6\u6001\uff0c\u7531\u4e8e\u73b0\u6709\u8d44\u6e90\u4e0d\u5b58\u5728\u4e8e tfstate \u4e2d\uff0c\u6267\u884c apply \u64cd\u4f5c\u65f6\u5c06\u51fa\u9519\u5e76\u5c1d\u8bd5\u521b\u5efa\u65b0\u8d44\u6e90\u3002\u4e3a\u4e86\u907f\u514d\u8fd9\u79cd\u60c5\u51b5\uff0c\u5c06\u7531 terraformer \u751f\u6210\u7684 tfstate \u4e0a\u4f20\u5230 Terraform Cloud \u4e2d\u3002<\/p>\n<p>\u5199 terraform \u8fdc\u7a0b\u914d\u7f6e\u6587\u4ef6\u3002<br \/>\n\u6839\u636e\u73af\u5883\u8c03\u6574 organization \u548c workspace.name\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">terraform<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">backend<\/span> <span class=\"s2\">\"remote\"<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">hostname<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"app.terraform.io\"<\/span>\r\n    <span class=\"nx\">organization<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"bgpat\"<\/span>\r\n\r\n    <span class=\"nx\">workspaces<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"nx\">name<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"bgpatdev-terraform\"<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u518d\u6b21\u6267\u884c terraform init \u547d\u4ee4\uff0c\u7136\u540e\u4f7f\u7528 terraform state push \u5c06 tfstate \u4e0a\u4f20\u5230 Terraform Cloud\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> terraform init\r\n<span class=\"go\">\r\nInitializing the backend...\r\n\r\nSuccessfully configured the backend \"remote\"! Terraform will automatically\r\nuse this backend unless the backend configuration changes.\r\n\r\nInitializing provider plugins...\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<\/span><span class=\"gp\">$<\/span> terraform state push generated\/google\/bgpat-188622\/dns\/global\/terraform.tfstate \r\n<span class=\"go\">Releasing state lock. This may take a few moments...\r\n<\/span><\/code><\/pre>\n<h1>\u786e\u8ba4\u52a8\u4f5c<\/h1>\n<p>\u4e3a\u4e86\u786e\u8ba4\u64cd\u4f5c\uff0c\u6211\u4eec\u5c06\u751f\u6210\u7684\u6587\u4ef6\u8fdb\u884c git commit \u548c git push\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> git checkout <span class=\"nt\">-b<\/span> import\r\n<span class=\"go\">Switched to a new branch 'import'\r\n<\/span><span class=\"gp\">$<\/span> git add dns_managed_zone.tf dns_record_set.tf provider.tf remote.tf\r\n<span class=\"gp\">$<\/span> git commit <span class=\"nt\">-m<\/span> <span class=\"s1\">'Import by terraformer'<\/span>\r\n<span class=\"go\">[import b0ffec7] Import by terraformer\r\n 4 files changed, 109 insertions(+)\r\n create mode 100755 dns_managed_zone.tf\r\n create mode 100755 dns_record_set.tf\r\n create mode 100644 provider.tf\r\n create mode 100644 remote.tf\r\n<\/span><span class=\"gp\">$<\/span> git push <span class=\"nt\">-u<\/span> origin HEAD\r\n<span class=\"go\">Enumerating objects: 7, done.\r\nCounting objects: 100% (7\/7), done.\r\nDelta compression using up to 8 threads\r\nCompressing objects: 100% (6\/6), done.\r\nWriting objects: 100% (6\/6), 1.37 KiB | 1.37 MiB\/s, done.\r\nTotal 6 (delta 0), reused 0 (delta 0)\r\nremote: \r\nremote: Create a pull request for 'import' on GitHub by visiting:\r\nremote:      https:\/\/github.com\/bgpat\/bgpat.dev-terraform\/pull\/new\/import\r\nremote: \r\nTo https:\/\/github.com\/bgpat\/bgpat.dev-terraform\r\n<\/span><span class=\"gp\"> * [new branch]      HEAD -&gt;<\/span> import\r\n<span class=\"go\">Branch 'import' set up to track remote branch 'import' from 'origin'.\r\n<\/span><\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/49-0.png\" alt=\"Screen Shot 2019-12-10 at 8.30.27.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/50-1.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/51-0.png\" alt=\"Screen Shot 2019-12-10 at 8.33.40.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/52-0.png\" alt=\"image.png\" \/><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u8fd9\u7bc7\u6587\u7ae0\u662f terraform Advent Calendar 2019 \u7684\u7b2c10\u5929\u3002 \u7531\u4e8e\u6211\u8bd5\u7740\u4f7f\u7528  [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48686","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 Terrafom Cloud \u7ba1\u7406\u73b0\u6709\u7684 GCP \u8d44\u6e90 - 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-terrafom-cloud-\u7ba1\u7406\u73b0\u6709\u7684-gcp-\u8d44\u6e90\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528 Terrafom Cloud \u7ba1\u7406\u73b0\u6709\u7684 GCP \u8d44\u6e90\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u8fd9\u7bc7\u6587\u7ae0\u662f terraform Advent Calendar 2019 \u7684\u7b2c10\u5929\u3002 \u7531\u4e8e\u6211\u8bd5\u7740\u4f7f\u7528 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-terrafom-cloud-\u7ba1\u7406\u73b0\u6709\u7684-gcp-\u8d44\u6e90\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-11T16:52:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T09:36:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/5-0.png\" \/>\n<meta name=\"author\" content=\"\u96c5, \u609f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u96c5, \u609f\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \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-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/\",\"name\":\"\u4f7f\u7528 Terrafom Cloud \u7ba1\u7406\u73b0\u6709\u7684 GCP \u8d44\u6e90 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2024-02-11T16:52:25+00:00\",\"dateModified\":\"2024-04-30T09:36:58+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528 Terrafom Cloud \u7ba1\u7406\u73b0\u6709\u7684 GCP \u8d44\u6e90\"}]},{\"@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\/f044a4b7fa4ee2701702942002419ca6\",\"name\":\"\u96c5, \u609f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"caption\":\"\u96c5, \u609f\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528 Terrafom Cloud \u7ba1\u7406\u73b0\u6709\u7684 GCP \u8d44\u6e90 - 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-terrafom-cloud-\u7ba1\u7406\u73b0\u6709\u7684-gcp-\u8d44\u6e90\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528 Terrafom Cloud \u7ba1\u7406\u73b0\u6709\u7684 GCP \u8d44\u6e90","og_description":"\u9996\u5148 \u8fd9\u7bc7\u6587\u7ae0\u662f terraform Advent Calendar 2019 \u7684\u7b2c10\u5929\u3002 \u7531\u4e8e\u6211\u8bd5\u7740\u4f7f\u7528 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-terrafom-cloud-\u7ba1\u7406\u73b0\u6709\u7684-gcp-\u8d44\u6e90\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2024-02-11T16:52:25+00:00","article_modified_time":"2024-04-30T09:36:58+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d869b913a08637a6bd964\/5-0.png"}],"author":"\u96c5, \u609f","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u96c5, \u609f","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/","name":"\u4f7f\u7528 Terrafom Cloud \u7ba1\u7406\u73b0\u6709\u7684 GCP \u8d44\u6e90 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2024-02-11T16:52:25+00:00","dateModified":"2024-04-30T09:36:58+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528 Terrafom Cloud \u7ba1\u7406\u73b0\u6709\u7684 GCP \u8d44\u6e90"}]},{"@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\/f044a4b7fa4ee2701702942002419ca6","name":"\u96c5, \u609f","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","caption":"\u96c5, \u609f"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-terrafom-cloud-%e7%ae%a1%e7%90%86%e7%8e%b0%e6%9c%89%e7%9a%84-gcp-%e8%b5%84%e6%ba%90\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48686","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\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=48686"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48686\/revisions"}],"predecessor-version":[{"id":93319,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48686\/revisions\/93319"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}