{"id":48540,"date":"2022-12-18T21:14:56","date_gmt":"2023-06-08T08:01:17","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/"},"modified":"2024-04-29T05:53:44","modified_gmt":"2024-04-28T21:53:44","slug":"%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/","title":{"rendered":"\u65e0\u610f\u4e2d\uff0cTerraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u7a81\u7136\u53d1\u751f\u4e86\u4e00\u4e2a\u60c5\u51b5\u3002\u5728\u4f7f\u7528MacBook Air\u65f6\u7a81\u7136\u6536\u5230\u4e00\u6761\u8b66\u544a\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8596913a08637a6b98d2\/2-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u6211\u6ca1\u6709\u4fdd\u5b58\u97f3\u4e50\u6587\u4ef6\u548c\u89c6\u9891\u6587\u4ef6\uff0c\u4f46\u5f53\u6211\u8003\u8651\u4f7f\u7528Parallels\u865a\u62df\u673a\u65f6\uff0c\u6211\u53d1\u73b0terraform\u76ee\u5f55\u975e\u5e38\u5927\uff01<\/p>\n<pre class=\"post-pre\"><code>\r\n$ du -sh terraform\/\r\n6.5G    terraform\/\r\n<\/code><\/pre>\n<p>\u8fdb\u4e00\u6b65\u67e5\u770bterraform\u76ee\u5f55\u540e\uff0c\u6211\u4eec\u53d1\u73b0terraform-provider-aws_v2.48.0_x4\u6587\u4ef6\u5927\u5c0f\u8fbe\u5230\u4e86173MB\u3002<\/p>\n<pre class=\"post-pre\"><code>\r\n$ ls -laRh terraform\r\n\r\n\u301c\r\nterraform\/anyservice\/anyenv\/awsconfig\/.terraform\/plugins\/darwin_amd64:\r\ntotal 354416\r\ndrwxr-xr-x  4 nishimura.toru  staff   128B  2 14 20:14 .\/\r\ndrwxr-xr-x  3 nishimura.toru  staff    96B  2  4 20:16 ..\/\r\n-rwxr-xr-x  1 nishimura.toru  staff    79B  2 14 20:14 lock.json*\r\n-rwxr-xr-x  1 nishimura.toru  staff   173M  2 14 20:14 terraform-provider-aws_v2.48.0_x4*\r\n\u301c\r\n<\/code><\/pre>\n<p>\u8fd9\u4e2a terraform-provider-aws_v\u30ca\u30f3\u30c1\u30e3\u30e9 \u662f\u4e00\u4e2a\u7528\u4e8e\u5728Terraform\u4e2d\u521b\u5efa\u3001\u7ba1\u7406\u548c\u66f4\u65b0AWS\u8d44\u6e90\u7684AWS\u63d0\u4f9b\u5546\u63d2\u4ef6\u3002\u5f53\u6267\u884cterraform init\u547d\u4ee4\u65f6\uff0c\u5b83\u4f1a\u88ab\u4e0b\u8f7d\u548c\u5b89\u88c5\u5728\u6267\u884c\u8be5\u547d\u4ee4\u7684\u76ee\u5f55\u4e0b\u7684&#8221;.terraform\/plugins\/&#8221;\u6587\u4ef6\u5939\u4e2d\u3002<\/p>\n<p>\u6211\u610f\u8bc6\u5230Terraform\u7684\u7ec4\u4ef6\uff08tfstate\u5355\u4f4d\uff09\u9700\u8981\u201c\u5173\u6ce8\u70b9\u5206\u79bb\u201d\uff0c\u6240\u4ee5\u5c06\u5176\u6309\u7167\u670d\u52a1\u3001\u73af\u5883\u548cAWS\u8d44\u6e90\u5206\u5f00\u3002\u800c\u4e14\uff0c\u4e3a\u6bcf\u4e2aAWS\u8d26\u6237\u521b\u5efa\u4e86\u8fd9\u6837\u7684terraform\u76ee\u5f55\u3002\u56e0\u6b64\uff0c\u6211\u65e0\u610f\u4e2d\u53d1\u73b0\u63d2\u4ef6\u6587\u4ef6\u4e0d\u65ad\u589e\u591a\uff0c\u5360\u7528\u4e86\u78c1\u76d8\u7a7a\u95f4&#8230;<\/p>\n<pre class=\"post-pre\"><code>\r\n$ tree -L 3 terraform\/\r\nterraform\/\r\n\u251c\u2500\u2500 anyservice\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 anyenv\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 awsconfig\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 budgets\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 cloudwatchevents\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 cost\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 iam\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 s3\r\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 sns\r\n\u251c\u2500\u2500 credentials\r\n\u251c\u2500\u2500 \u30b5\u30fc\u30d3\u30b9\u540d\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 anyenv\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 acm\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 sns\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 base\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 backup\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 cloudwatchalarm\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 ec2\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 eip\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 route53_xxx.local\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 routetable\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 s3\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 securitygroup\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 subnet\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 vpc\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 development\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 alb\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 backup\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 cloudwatchalarm\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 ec2\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 eip\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 elasticache\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 natgateway\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 rds\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 route53_xxx.xxx.jp\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 s3\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 securitygroup\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 production\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 alb\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 backup\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 cloudwatchalarm\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 ec2\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 eip\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 elasticache\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 natgateway\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 rds\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 route53_xxx.xxx.jp\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 s3\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 securitygroup\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 staging\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 alb\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 backup\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 cloudwatchalarm\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 ec2\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 eip\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 elasticache\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 natgateway\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 rds\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 route53_xxx.xxx.jp\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 s3\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 securitygroup\r\n\u251c\u2500\u2500 provider.tf\r\n\u251c\u2500\u2500 terraform_remote_state.tf\r\n\u2514\u2500\u2500 variable.tf\r\n<\/code><\/pre>\n<p>\u53c2\u8003\u6587\u732e\uff1a<br \/>\n&#8211; Terraform\u6587\u6863\uff1a\u63d0\u4f9b\u8005<br \/>\n&#8211; Terraform\u6587\u6863\uff1a\u63d2\u4ef6\u5b89\u88c5<\/p>\n<h1>2. \u5e94\u5bf9\u63aa\u65bd<\/h1>\n<p>\u5728Terraform\u4e2d\uff0c\u6709\u4e00\u4e2a\u540d\u4e3a&#8221;\u63d0\u4f9b\u8005\u63d2\u4ef6\u7f13\u5b58&#8221;\u7684\u529f\u80fd\uff0c\u53ef\u4ee5\u63a7\u5236\u4e0d\u5fc5\u8981\u7684\u63d2\u4ef6\u4e0b\u8f7d\u548c\u5b89\u88c5\u3002<\/p>\n<blockquote><p>\u7531\u4e8e\u63d0\u4f9b\u7a0b\u5e8f\u63d2\u4ef6\u53ef\u80fd\u4f1a\u975e\u5e38\u5927\uff08\u6570\u767e\u5146\u5b57\u8282\uff09\uff0c\u6240\u4ee5\u9ed8\u8ba4\u884c\u4e3a\u5bf9\u4e8e\u5177\u6709\u4f4e\u901f\u6216\u6309\u91cf\u8ba1\u8d39\u7684\u4e92\u8054\u7f51\u8fde\u63a5\u7684\u7528\u6237\u6765\u8bf4\u53ef\u80fd\u4e0d\u65b9\u4fbf\u3002\u56e0\u6b64\uff0cTerraform\u63d0\u4f9b\u9009\u9879\uff0c\u53ef\u4ee5\u5c06\u672c\u5730\u76ee\u5f55\u7528\u4f5c\u5171\u4eab\u7684\u63d2\u4ef6\u7f13\u5b58\uff0c\u8fd9\u6837\u53ef\u4ee5\u5c06\u6bcf\u4e2a\u63d2\u4ef6\u4e8c\u8fdb\u5236\u6587\u4ef6\u53ea\u4e0b\u8f7d\u4e00\u6b21\u3002<\/p><\/blockquote>\n<p>\u63d0\u4f9b\u8005\u63d2\u4ef6\u7f13\u5b58\u529f\u80fd\u53ef\u4ee5\u901a\u8fc7Terraform\u914d\u7f6e\u6587\u4ef6\u6216\u73af\u5883\u53d8\u91cf\u8fdb\u884c\u542f\u7528\u3002<\/p>\n<p>\u4e00\u65e6\u542f\u7528\uff0c<\/p>\n<blockquote><p>\u5982\u679c\u63d2\u4ef6\u7f13\u5b58\u76ee\u5f55\u5df2\u542f\u7528\uff0c\u5219terraform init\u547d\u4ee4\u5c06\u7ee7\u7eed\u8bbf\u95ee\u63d2\u4ef6\u5206\u53d1\u670d\u52a1\u5668\uff0c\u5e76\u83b7\u53d6\u4e0e\u53ef\u7528\u63d2\u4ef6\u76f8\u5173\u7684\u5143\u6570\u636e\uff0c\u4f46\u5982\u679c\u9009\u62e9\u7684\u63d2\u4ef6\u5df2\u88ab\u9009\u62e9\u4e3a\u6b63\u786e\u7248\u672c\uff0c\u5219\u9996\u5148\u4f1a\u68c0\u67e5\u9009\u5b9a\u7684\u63d2\u4ef6\u662f\u5426\u5df2\u5728\u7f13\u5b58\u4e2d\u53ef\u7528\u76ee\u5f55\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5c06\u4f7f\u7528\u5148\u524d\u4e0b\u8f7d\u7684\u63d2\u4ef6\u4e8c\u8fdb\u5236\u6587\u4ef6\u3002<\/p>\n<p>\u5982\u679c\u9009\u62e9\u7684\u63d2\u4ef6\u5c1a\u672a\u7f13\u5b58\u5728\u5176\u4e2d\uff0c\u5219\u9996\u5148\u5c06\u5176\u4e0b\u8f7d\u5230\u7f13\u5b58\u4e2d\uff0c\u7136\u540e\u5c06\u5176\u590d\u5236\u5230\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u4e0b\u7684\u6b63\u786e\u4f4d\u7f6e\u3002<\/p>\n<p>\uff08\u5f15\u7528\uff1aProvider Plugin Cache Google Translate\uff09<\/p><\/blockquote>\n<p>\u4f7f\u7528\u65f6\u9700\u8981\u6ce8\u610f\u7684\u4e8b\u9879\u662f\uff1a<\/p>\n<blockquote><p>\u5f53Terraform\u5b89\u88c5\u5230\u63d2\u4ef6\u7f13\u5b58\u4e2d\u540e\uff0c\u5b83\u5c06\u4e0d\u4f1a\u88ab\u4ece\u63d2\u4ef6\u7f13\u5b58\u4e2d\u5220\u9664\u3002\u968f\u7740\u65f6\u95f4\u7684\u63a8\u79fb\uff0c\u63d2\u4ef6\u53ef\u80fd\u4f1a\u8fdb\u884c\u5347\u7ea7\uff0c\u5bfc\u81f4\u7f13\u5b58\u76ee\u5f55\u4e2d\u5305\u542b\u4e00\u4e9b\u672a\u4f7f\u7528\u7684\u7248\u672c\uff0c\u8fd9\u65f6\u9700\u8981\u624b\u52a8\u8fdb\u884c\u5220\u9664\u3002<\/p><\/blockquote>\n<h1>3. \u300c\u63d0\u4f9b\u8005\u63d2\u4ef6\u7f13\u5b58\u300d\u6709\u6548\u7684\u65b9\u6cd5<\/h1>\n<h2>3.1. Terraform\u914d\u7f6e\u6587\u4ef6<\/h2>\n<p>\u5982\u679c\u8981\u5728terraform\u914d\u7f6e\u6587\u4ef6\u4e2d\u542f\u7528\uff0c\u8bf7\u5728\u7528\u6237\u7684\u4e3b\u76ee\u5f55\u4e0b\u521b\u5efa\u201c.terraformrc\u201d\u6587\u4ef6\uff0c\u5e76\u8bbe\u7f6e\u63d2\u4ef6\u4e0b\u8f7d\u8def\u5f84\u5982\u4e0b\u6240\u793a\u3002<\/p>\n<p>$HOME\/.terraformrc \u53ef\u4ee5\u91cd\u65b0\u8868\u8fbe\u4e3a\uff1a\u5bb6\u76ee\u5f55\u4e0b\u7684.terraformrc\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>\r\nplugin_cache_dir   = \"$HOME\/.terraform.d\/plugin-cache\"\r\n<\/code><\/pre>\n<p>\u5c3d\u7ba1Terraform\u6587\u6863\u4e2d\u7684\u793a\u4f8b\u63d0\u5230\u4e86&#8221;.terraform.d&#8221;\uff0c\u4f46\u5b9e\u9645\u4e0a\uff0c\u5728\u6267\u884cterraform init\u65f6\u521b\u5efa\u7684\u76ee\u5f55\u662f&#8221;.terraform&#8221;\uff0c\u6240\u4ee5\u4e5f\u8bb8\u66f4\u597d\u7684\u662f\u4f7f\u7528&#8221;plugin_cache_dir = &#8220;$HOME\/.terraform\/plugin-cache&#8221;\u3002<\/p>\n<p>\u5728\u8fd9\u4e2a\u8bbe\u7f6e\u65b9\u6cd5\u4e2d\uff0c\u8981\u6c42\u5728\u8be5\u673a\u5668\u4e0a\u4f7f\u7528\u76f8\u540c\u7248\u672c\u7684AWS Provider\u63d2\u4ef6\u8fdb\u884cterraform\u64cd\u4f5c\u3002<br \/>\n\u5728\u8fdb\u884cProvider Plugin Cache\u8bbe\u7f6e\u4e4b\u524d\uff0c\u6700\u597d\u5148\u7edf\u4e00AWS Provider\u63d2\u4ef6\u7684\u7248\u672c\u3002<\/p>\n<h2>3.2. \u73af\u5883\u53d8\u91cf<\/h2>\n<p>\u5982\u679c\u60a8\u60f3\u4e3aTerraform\u7684\u6bcf\u4e2a\u7ec4\u4ef6\u6307\u5b9aAWS Provider\u63d2\u4ef6\u7684\u7248\u672c\uff0c\u8bf7\u5728\u8fd0\u884cterraform init\u4e4b\u524d\uff0c\u5728\u73af\u5883\u53d8\u91cf\u4e2d\u542f\u7528\u5b83\u3002<\/p>\n<pre class=\"post-pre\"><code>\r\nexport TF_PLUGIN_CACHE_DIR=\"$HOME\/.terraform.d\/plugin-cache\"\r\n<\/code><\/pre>\n<p>\u4f7f\u7528\u8fd9\u79cd\u8bbe\u7f6e\u65b9\u6cd5\uff0c\u5f53shell\u4f1a\u8bdd\u7ed3\u675f\u65f6\uff0c\u5b83\u4f1a\u6d88\u5931\u3002<\/p>\n<p>\u7531\u4e8e\u6bcf\u6b21\u6267\u884c\u73af\u5883\u53d8\u91cf\u547d\u4ee4\u90fd\u5f88\u70e6\u4eba\uff0c\u56e0\u6b64\u6700\u597d\u4f7f\u7528direnv\u7b49\u5de5\u5177\uff0c\u5728\u6bcf\u4e2a\u76ee\u5f55\u4e2d\u9884\u5148\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\u3002<\/p>\n<h1>\u5c1d\u8bd5\u4f7f\u7528\u63d0\u4f9b\u8005\u63d2\u4ef6\u7f13\u5b58\u3002<\/h1>\n<p>\u6211\u8fd9\u6b21\u5c1d\u8bd5\u4e86\u5728terraform\u914d\u7f6e\u6587\u4ef6\u4e2d\u542f\u7528Provider Plugin Cache\u7684\u65b9\u6cd5\u3002<br \/>\n\u5728\u542f\u7528Provider Plugin Cache\u540e\uff0c\u6211\u5220\u9664\u4e86\u6bcf\u4e2aTerraform\u7ec4\u4ef6\u4e2d\u5df2\u5b58\u5728\u7684.terraform\u76ee\u5f55\uff0c\u7136\u540e\u6267\u884c\u4e86terraform init\u547d\u4ee4\u3002<\/p>\n<h2>4.1. \u5728\u914d\u7f6e\u63d0\u4f9b\u8005\u63d2\u4ef6\u7f13\u5b58\u4e4b\u524d\uff0c\u8fdb\u884c\u914d\u7f6e\u548c\u8bbe\u7f6e\u7684\u786e\u8ba4\u3002<\/h2>\n<p>terraform\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u6210<\/p>\n<p>$ tree -a terraform\/<\/p>\n<pre class=\"post-pre\"><code>\u301c\r\n\u251c\u2500\u2500 anyservice\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 anyenv\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 awsconfig\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 .terraform\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 plugins\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 darwin_amd64\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 lock.json\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 terraform-provider-aws_v2.48.0_x4\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 terraform.tfstate\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 backend.tf\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 config-rule.tf\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 main.tf\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 provider.tf -&gt; ..\/..\/..\/provider.tf\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2514\u2500\u2500 terraform_remote_state.tf -&gt; ..\/..\/..\/terraform_remote_state.tf\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 budgets\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 .terraform\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 plugins\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 darwin_amd64\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 lock.json\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 terraform-provider-aws_v2.45.0_x4\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 terraform.tfstate\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 backend.tf\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 main.tf\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2514\u2500\u2500 provider.tf -&gt; ..\/..\/..\/provider.tf\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 cloudwatchevents\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 .terraform\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 plugins\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 darwin_amd64\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 lock.json\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 terraform-provider-aws_v2.47.0_x4\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 terraform.tfstate\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 awsconfig.tf\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 backend.tf\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 health.tf\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 provider.tf -&gt; ..\/..\/..\/provider.tf\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2514\u2500\u2500 variable.tf -&gt; ..\/..\/..\/variable.tf\r\n\u301c\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">provider.tf \u30d5\u30a1\u30a4\u30eb<\/ul>\n<\/li>\n<\/ul>\n<p>AWS\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3\u3092 2.48.0 \u306b\u56fa\u5b9a<\/p>\n<pre class=\"post-pre\"><code>provider \"aws\" {\r\n  version                 = \"2.48.0\"\r\n  shared_credentials_file = \"..\/..\/..\/credentials\"\r\n  profile                 = \"terraform\"\r\n  region                  = \"ap-northeast-1\"\r\n}\r\nprovider \"aws\" {\r\n  version                 = \"2.48.0\"\r\n  shared_credentials_file = \"..\/..\/..\/credentials\"\r\n  profile                 = \"terraform\"\r\n  alias                   = \"virginia\"\r\n  region                  = \"us-east-1\"\r\n}\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">backend.tf \u30d5\u30a1\u30a4\u30eb \uff08terraform\/anyservice\/anyenv\/awsconfig\/backend.tf\u306e\u4f8b\uff09<\/ul>\n<\/li>\n<\/ul>\n<p>backend\u306f S3 \u3092\u5229\u7528<br \/>\nterraform \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306f 0.12.9 \u4ee5\u4e0a<\/p>\n<pre class=\"post-pre\"><code>terraform {\r\n  required_version = \"&gt;= 0.12.9\"\r\n  backend \"s3\" {\r\n    shared_credentials_file = \"..\/..\/..\/credentials\"\r\n    profile                 = \"terraform\"\r\n    bucket                  = \"terraform-tfstate-\u30c1\u30e7\u30e1\u30c1\u30e7\u30e1\"\r\n    key                     = \"anyservice\/anyenv\/awsconfig\/terraform.tfstate\"\r\n    region                  = \"ap-northeast-1\"\r\n  }\r\n}\r\n<\/code><\/pre>\n<ul class=\"post-ul\">credentials \u30d5\u30a1\u30a4\u30eb<\/ul>\n<pre class=\"post-pre\"><code>\r\n[terraform]\r\naws_access_key_id = \u30c1\u30e7\u30e1\u30c1\u30e7\u30e1\r\naws_secret_access_key = \u30c1\u30e7\u30e1\u30c1\u30e7\u30e1\r\n<\/code><\/pre>\n<ul class=\"post-ul\">.gitignore \u30d5\u30a1\u30a4\u30eb<\/ul>\n<pre class=\"post-pre\"><code>\r\n.terraform\/\r\ncredentials\r\n<\/code><\/pre>\n<h2>4.2. \u542f\u7528\u63d0\u4f9b\u8005\u63d2\u4ef6\u7f13\u5b58\u7684\u8bbe\u7f6e<\/h2>\n<p>$HOME\/.terraformrc \uff1a\u5bb6\u76ee\u5f55\u4e0b\u7684.terraformrc<\/p>\n<pre class=\"post-pre\"><code>\r\nplugin_cache_dir = \"$HOME\/.terraform.d\/plugin-cache\"\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u76ee\u5f55<\/p>\n<pre class=\"post-pre\"><code>\r\n$ mkdir -p $HOME\/.terraform.d\/plugin-cache\r\n<\/code><\/pre>\n<h2>4.3. \u8fd0\u884c\u63d0\u4f9b\u8005\u63d2\u4ef6\u7f13\u5b58\u8bbe\u7f6e<\/h2>\n<h4>4.3.1. \u7b2c\u4e00\u9879\uff08\u9996\u6b21\uff09<\/h4>\n<p>\u5220\u9664 terraform\/anyservice\/anyenv\/awsconfig\/.terraform\uff0c\u5e76\u6267\u884c terraform init\u3002<\/p>\n<pre class=\"post-pre\"><code>\r\n$ cd terraform\/anyservice\/anyenv\/awsconfig\/\r\n$ rm -rf .terraform\/\r\n$ terraform init\r\n\r\nInitializing the backend...\r\n\r\nSuccessfully configured the backend \"s3\"! Terraform will automatically\r\nuse this backend unless the backend configuration changes.\r\n\r\nInitializing provider plugins...\r\n- Checking for available provider plugins...\r\n- Downloading plugin for provider \"aws\" (hashicorp\/aws) 2.48.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<\/code><\/pre>\n<pre class=\"post-pre\"><code>\r\n$ ls -lh $HOME\/.terraform.d\/plugin-cache\/darwin_amd64\/terraform-provider-aws_v2.48.0_x4\r\n-rwxr-xr-x  2 nishimura.toru  staff   173M  2 15 17:29 \/Users\/nishimura.toru\/.terraform.d\/plugin-cache\/darwin_amd64\/terraform-provider-aws_v2.48.0_x4*\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>\r\n$ terraform plan\r\n<\/code><\/pre>\n<h4>4.3.2. \u7b2c\u4e8c\u4e2a<\/h4>\n<p>\u5220\u9664 terraform\/anyservice\/anyenv\/budgets\/.terraform\uff0c\u7136\u540e\u6267\u884c terraform init\u3002<\/p>\n<p>\u68c0\u67e5\u5bb9\u91cf\u4e4b\u524d\u7684\u6267\u884c<\/p>\n<pre class=\"post-pre\"><code>\r\n$ du -sh terraform\/\r\n6.5G    terraform\/\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code>\r\n$ cd terraform\/anyservice\/anyenv\/budgets\/\r\n$ rm -rf .terraform\/\r\n$ terraform init\r\n\r\nInitializing the backend...\r\n\r\nSuccessfully configured the backend \"s3\"! Terraform will automatically\r\nuse this backend unless the backend configuration changes.\r\n\r\nInitializing provider plugins...\r\n- Checking for available provider plugins...\r\n- Downloading plugin for provider \"aws\" (hashicorp\/aws) 2.48.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<\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code>\r\n$ terraform plan\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code>\r\n$ du -sh terraform\/\r\n6.3G    terraform\/\r\n<\/code><\/pre>\n<h4>4.3.3. \u7b2c\u4e09\u9879<\/h4>\n<p>\u5220\u9664terraform\/anyservice\/anyenv\/cloudwatchevents\/.terraform\uff0c\u5e76\u8fd0\u884cterraform init\u3002<\/p>\n<p>\u8fdb\u884c<\/p>\n<pre class=\"post-pre\"><code>\r\n$ cd terraform\/anyservice\/anyenv\/cloudwatchevents\/\r\n$ rm -rf .terraform\/\r\n$ terraform init\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code>\r\n$ terraform plan\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code>\r\n$ du -sh terraform\/\r\n6.2G    terraform\/\r\n<\/code><\/pre>\n<h4>4.3.4. \u5728\u6240\u6709\u7684Terraform\u7ec4\u4ef6\u4e2d\u6267\u884c\u3002<\/h4>\n<p>\u6267\u884c\u540e\u7684\u5bb9\u91cf\u786e\u8ba4<\/p>\n<pre class=\"post-pre\"><code>\r\n$ du -sh terraform\/\r\n180M    terraform\/\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u7a81\u7136\u53d1\u751f\u4e86\u4e00\u4e2a\u60c5\u51b5\u3002\u5728\u4f7f\u7528MacBook Air\u65f6\u7a81\u7136\u6536\u5230\u4e00\u6761\u8b66\u544a\u3002 \u6211\u6ca1\u6709\u4fdd\u5b58\u97f3\u4e50\u6587\u4ef6\u548c\u89c6\u9891\u6587\u4ef6\uff0c\u4f46\u5f53 [&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-48540","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>\u65e0\u610f\u4e2d\uff0cTerraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86 - 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\/\u65e0\u610f\u4e2d\uff0cterraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u65e0\u610f\u4e2d\uff0cTerraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u7a81\u7136\u53d1\u751f\u4e86\u4e00\u4e2a\u60c5\u51b5\u3002\u5728\u4f7f\u7528MacBook Air\u65f6\u7a81\u7136\u6536\u5230\u4e00\u6761\u8b66\u544a\u3002 \u6211\u6ca1\u6709\u4fdd\u5b58\u97f3\u4e50\u6587\u4ef6\u548c\u89c6\u9891\u6587\u4ef6\uff0c\u4f46\u5f53 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u65e0\u610f\u4e2d\uff0cterraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-08T08:01:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-28T21:53:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8596913a08637a6b98d2\/2-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=\"4 \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\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/\",\"name\":\"\u65e0\u610f\u4e2d\uff0cTerraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-06-08T08:01:17+00:00\",\"dateModified\":\"2024-04-28T21:53:44+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u65e0\u610f\u4e2d\uff0cTerraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86\"}]},{\"@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\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u65e0\u610f\u4e2d\uff0cTerraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86 - 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\/\u65e0\u610f\u4e2d\uff0cterraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u65e0\u610f\u4e2d\uff0cTerraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86","og_description":"\u9996\u5148 \u7a81\u7136\u53d1\u751f\u4e86\u4e00\u4e2a\u60c5\u51b5\u3002\u5728\u4f7f\u7528MacBook Air\u65f6\u7a81\u7136\u6536\u5230\u4e00\u6761\u8b66\u544a\u3002 \u6211\u6ca1\u6709\u4fdd\u5b58\u97f3\u4e50\u6587\u4ef6\u548c\u89c6\u9891\u6587\u4ef6\uff0c\u4f46\u5f53 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u65e0\u610f\u4e2d\uff0cterraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-06-08T08:01:17+00:00","article_modified_time":"2024-04-28T21:53:44+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8596913a08637a6b98d2\/2-0.png"}],"author":"\u96c5, \u609f","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u96c5, \u609f","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/","name":"\u65e0\u610f\u4e2d\uff0cTerraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-06-08T08:01:17+00:00","dateModified":"2024-04-28T21:53:44+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u65e0\u610f\u4e2d\uff0cTerraform\u5df2\u7ecf\u5c06\u78c1\u76d8\u586b\u6ee1\u4e86"}]},{"@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\/%e6%97%a0%e6%84%8f%e4%b8%ad%ef%bc%8cterraform%e5%b7%b2%e7%bb%8f%e5%b0%86%e7%a3%81%e7%9b%98%e5%a1%ab%e6%bb%a1%e4%ba%86%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48540","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=48540"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48540\/revisions"}],"predecessor-version":[{"id":83444,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48540\/revisions\/83444"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}