{"id":48747,"date":"2023-04-09T22:23:16","date_gmt":"2022-11-09T20:59:28","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/"},"modified":"2024-04-29T22:43:42","modified_gmt":"2024-04-29T14:43:42","slug":"%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/","title":{"rendered":"\u5728Azure\u4e0a\u901a\u8fc7Terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09Azure\u8d44\u6e90\u7684\u73af\u5883"},"content":{"rendered":"<p>Terraform \u662f\u4e00\u79cd\u7528\u4e8e\u6784\u5efa\u3001\u66f4\u6539\u548c\u7248\u672c\u63a7\u5236\u57fa\u7840\u8bbe\u65bd\u8d44\u6e90\u7684\u5de5\u5177\u3002\u914d\u7f6e\u4ee3\u7801\u4f7f\u7528 Terraform \u914d\u7f6e\u6587\u4ef6\uff08.tf \u6216 .tf.json \u683c\u5f0f\uff09\u6765\u7f16\u5199\u3002<\/p>\n<p>\u6b63\u5982\u63d0\u5230\u7684\u63d0\u4f9b\u8005\uff08Providers\uff09\uff0cTerraform \u652f\u6301\u4f17\u591a\u4e91\u670d\u52a1\uff0c\u4f46\u5728 Qiita \u7b49\u5730\u65b9\uff0c\u4f60\u53ef\u80fd\u7ecf\u5e38\u770b\u5230\u5173\u4e8e AWS \u6784\u5efa\u7684\u6587\u7ae0\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8723913a08637a6bf08e\/1-0.png\" alt=\"undefined\" \/><\/div>\n<p>\u8fd9\u7bc7\u6587\u7ae0\u662f\u5173\u4e8e\u4f7f\u7528Terraform\u5728Azure\u4e0a\u521b\u5efa\u548c\u4fee\u6539\u8d44\u6e90\uff08\u4e0e\u591a\u4eba\u5171\u4eab\u72b6\u6001\u6587\u4ef6\uff09\u7684\u6b65\u9aa4\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8723913a08637a6bf08e\/3-0.png\" alt=\"image.png\" \/><\/div>\n<h1>1) \u5b89\u88c5 Azure CLI \u548c Terraform<\/h1>\n<p>\u9700\u8981\u4f7f\u7528Azure CLI 2.0 \uff08az\u547d\u4ee4\uff09\u6765\u6267\u884c\u3002<br \/>\n\u6309\u7167\u5b89\u88c5Azure CLI\u7684\u8bf4\u660e\u6267\u884c\u76f8\u5e94\u7684\u547d\u4ee4\u8fdb\u884c\u5b89\u88c5\u3002\u4ee5\u4e0b\u6b65\u9aa4\u662f\u5728Ubuntu 18.04\u4e0a\u6267\u884c\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"go\">\u203b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5b9f\u884c\u203b\r\n<\/span><span class=\"gp\">$<\/span> which az\r\n<span class=\"gp\">$<\/span> curl <span class=\"nt\">-sL<\/span> https:\/\/aka.ms\/InstallAzureCLIDeb | <span class=\"nb\">sudo <\/span>bash\r\n<span class=\"go\">\u203b\u51fa\u529b\u306f\u9577\u3044\u306e\u3067\u7701\u7565\u203b\r\n\r\n\u203b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u7d50\u679c\u306e\u78ba\u8a8d\u203b\r\n<\/span><span class=\"gp\">$<\/span> which az\r\n<span class=\"go\">\/usr\/bin\/az\r\n<\/span><span class=\"gp\">$<\/span> az <span class=\"nt\">--version<\/span>\r\n<span class=\"go\">azure-cli                         2.0.68\r\n\r\ncommand-modules-nspkg               2.0.3\r\ncore                              2.0.68\r\nnspkg                              3.0.4\r\ntelemetry                          1.0.3\r\n\r\nPython location '\/opt\/az\/bin\/python3'\r\nExtensions directory '\/home\/azureuser\/.azure\/cliextensions'\r\n\r\nPython (Linux) 3.6.5 (default, Jun 28 2019, 06:19:45)\r\n[GCC 7.4.0]\r\n\r\nLegal docs and information: aka.ms\/AzureCliLegal\r\n\r\n\r\nYour CLI is up-to-date.\r\n<\/span><\/code><\/pre>\n<p>\u53ea\u9700\u4e0b\u8f7d\u548c\u89e3\u538bTerraform\uff0c\u7136\u540e\u5c06\u8def\u5f84\u6dfb\u52a0\u5230\u5355\u4e2a\u6587\u4ef6\u5373\u53ef\u3002\u901a\u8fc7\u4e0b\u8f7dTerraform\u5e76\u786e\u8ba4\u6700\u65b0\u7248\u672c\u7684\u8def\u5f84\u6765\u6307\u5b9a\u3002<\/p>\n<pre class=\"post-pre\"><code>\u203b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u203b\r\n<span class=\"nv\">$ <\/span>wget https:\/\/releases.hashicorp.com\/terraform\/0.12.3\/terraform_0.12.3_linux_amd64.zip\r\n<span class=\"nt\">--2019-07-05<\/span> 06:15:42--  https:\/\/releases.hashicorp.com\/terraform\/0.12.3\/terraform_0.12.3_linux_amd64.zip\r\nResolving releases.hashicorp.com <span class=\"o\">(<\/span>releases.hashicorp.com<span class=\"o\">)<\/span>... 151.101.77.183, 2a04:4e42:15::439\r\nConnecting to releases.hashicorp.com <span class=\"o\">(<\/span>releases.hashicorp.com<span class=\"o\">)<\/span>|151.101.77.183|:443... connected.\r\nHTTP request sent, awaiting response... 200 OK\r\nLength: 16036886 <span class=\"o\">(<\/span>15M<span class=\"o\">)<\/span> <span class=\"o\">[<\/span>application\/zip]\r\nSaving to: \u2018terraform_0.12.3_linux_amd64.zip\u2019\r\n\r\nterraform_0.12.3_linux_amd64.zip      100%[<span class=\"o\">=========================================================================&gt;]<\/span>  15.29M  23.3MB\/s    <span class=\"k\">in <\/span>0.7s\r\n\r\n2019-07-05 06:15:43 <span class=\"o\">(<\/span>23.3 MB\/s<span class=\"o\">)<\/span> - \u2018terraform_0.12.3_linux_amd64.zip\u2019 saved <span class=\"o\">[<\/span>16036886\/16036886]\r\n\r\n\u203b\u89e3\u51cd\u3057\u3066\u30d1\u30b9\u3092\u901a\u3059\u203b\r\n<span class=\"nv\">$ <\/span>unzip terraform_0.12.3_linux_amd64.zip\r\nArchive:  terraform_0.12.3_linux_amd64.zip\r\n  inflating: terraform\r\n\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">sudo mkdir<\/span> \/opt\/terraform0.12.3\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">sudo cp <\/span>terraform \/opt\/terraform0.12.3\r\n<span class=\"nv\">$ <\/span><span class=\"nb\">sudo ln<\/span> <span class=\"nt\">-s<\/span> \/opt\/terraform0.12.3\/terraform \/usr\/local\/bin\/terraform\r\n\r\n\u203b\u78ba\u8a8d\u203b\r\n<span class=\"nv\">$ <\/span>which terraform\r\n\/usr\/local\/bin\/terraform\r\n<span class=\"nv\">$ <\/span>terraform <span class=\"nt\">-v<\/span>\r\nTerraform v0.12.3\r\n<\/code><\/pre>\n<h1>\u521b\u5efa\u72b6\u6001\u6587\u4ef6\u5171\u4eab\u4f4d\u7f6e\uff08\u5b58\u50a8\u8d26\u6237\u548c\u5bb9\u5668\uff09<\/h1>\n<p>\u5728Terraform\u4e2d\uff0c\u6211\u5011\u4f7f\u7528\u4e00\u500b\u540d\u70ba\u300c.tfstate\u300d\u7684\u6587\u4ef6\u4f86\u7ba1\u7406\u6240\u7ba1\u7406\u57fa\u790e\u8a2d\u65bd\u7684\u72c0\u614b\u3002\u5982\u679c\u9019\u500b\u72c0\u614b\u6587\u4ef6\u7121\u6cd5\u6b63\u78ba\u5171\u4eab\uff0c\u53ef\u80fd\u6703\u5c0e\u81f4\u672c\u610f\u70ba\u8b8a\u66f4\u7684\u64cd\u4f5c\u537b\u8b8a\u6210\u4e86\u5275\u5efa\u540c\u540d\u8cc7\u6e90\u7684\u554f\u984c\uff0c\u6240\u4ee5\u9700\u8981\u6ce8\u610f\u3002\u7531\u65bc\u6211\u5011\u4f7f\u7528\u7684\u662fAzure\uff0c\u6240\u4ee5\u9019\u6b21\u6211\u5011\u6703\u5728Blob\u5132\u5b58\u7a7a\u9593\u5167\u5275\u5efa\u4e00\u500b\u5171\u4eab\u7528\u7684\u5bb9\u5668\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8723913a08637a6bf08e\/11-0.png\" alt=\"image.png\" \/><\/div>\n<h1>3) \u5c1d\u8bd5\u521b\u5efa\u6216\u66f4\u6539\u8d44\u6e90\u7ec4\u3002<\/h1>\n<h2>\u521b\u5efa\u7b2c\u4e00\u4e2a\u64cd\u4f5c\uff08\u521b\u5efa\u8d44\u6e90\u7ec4\uff09\u3002<\/h2>\n<p>\u8bf7\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa\u8d44\u6e90\u7ec4\u7684.tf\u6587\u4ef6\u3002\u8bf7\u6839\u636e\u6267\u884c\u73af\u5883\u81ea\u884c\u8c03\u6574\u72b6\u6001\u6587\u4ef6\u8bbe\u7f6e\u90e8\u5206\u3002<\/p>\n<pre class=\"post-pre\"><code># Azure Provider\u306e\u8a2d\u5b9a\r\nprovider \"azurerm\" {\r\n}\r\n\r\n# \u30b9\u30c6\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u8a2d\u5b9a\r\nterraform {\r\n    backend \"azurerm\" {\r\n        storage_account_name  = \"&lt;\u5148\u307b\u3069\u4f5c\u6210\u3057\u305f\u30b9\u30c8\u30ec\u30fc\u30b8\u30a2\u30ab\u30a6\u30f3\u30c8\u540d&gt;\"\r\n        container_name        = \"&lt;\u5148\u307b\u3069\u4f5c\u6210\u3057\u305f\u30b3\u30f3\u30c6\u30ca\u540d&gt;\"\r\n        key                   = \"terraform.tfstate\" # \u30b9\u30c6\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u540d\r\n        resource_group_name  = \"&lt;\u5148\u307b\u3069\u4f5c\u6210\u3057\u305f\u30b9\u30c8\u30ec\u30fc\u30b8\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30ea\u30bd\u30fc\u30b9\u30b0\u30eb\u30fc\u30d7&gt;\"\r\n    }\r\n}\r\n\r\n# \u4f5c\u6210\u3059\u308b\u30ea\u30bd\u30fc\u30b9\u30b0\u30eb\u30fc\u30d7\u306e\u8a2d\u5b9a\r\nresource \"azurerm_resource_group\" \"test_resource_group\" {\r\n    name     = \"test_resource_group\"\r\n    location = \"Japan East\"\r\n}\r\n<\/code><\/pre>\n<p>\u767b\u5f55Azure CLI\u3002\u5982\u679c\u6709\u591a\u4e2a\u8ba2\u9605\uff0c\u53ef\u4ee5\u4f7f\u7528az account set\u547d\u4ee4\u8bbe\u7f6e\u6240\u9700\u7684\u8ba2\u9605\u3002<\/p>\n<pre class=\"post-pre\"><code>\u203b\u30ed\u30b0\u30a4\u30f3\u203b\r\n$ az login\r\nTo sign in, use a web browser to open the page https:\/\/microsoft.com\/devicelogin and enter the code GZYxxxxxxx to authenticate.\r\n\u203b\u2192 \u8868\u793a\u3055\u308c\u305fURL\u3092\u30d6\u30e9\u30a6\u30b6\u3067\u8868\u793a\u3057\u3001\u8868\u793a\u3055\u308c\u305f\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u203b\r\n\r\n\u203b\u30a2\u30ab\u30a6\u30f3\u30c8(\u30b5\u30d6\u30b9\u30af\u30ea\u30d7\u30b7\u30e7\u30f3)\u4e00\u89a7\u306e\u78ba\u8a8d\u203b\r\n$ az account list --output table\r\nName                             CloudName    SubscriptionId       State    IsDefault\r\n-------------------------------  -----------  -------------------  -------  -----------\r\nAzure_Dev                        AzureCloud   939cxxxxxxx-xxxxxxx  Enabled  True\r\nVisual Studio Enterprise MPN     AzureCloud   0ce0xxxxxxx-xxxxxxx  Enabled  False\r\nvisionarts-demo-env              AzureCloud   65b7xxxxxxx-xxxxxxx  Enabled  False\r\n\r\n\u203b\u4f5c\u696d\u5bfe\u8c61\u30b5\u30d6\u30b9\u30af\u30ea\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u203b\r\n$ az account set --subscription \"visionarts-demo-env\"\r\n\r\n\u203bIsDefault\u304c\u8a2d\u5b9a\u3055\u308c\u305f\u3053\u3068\u306e\u78ba\u8a8d\u203b\r\n$ az account list --output table\r\nName                             CloudName    SubscriptionId       State    IsDefault\r\n-------------------------------  -----------  -------------------  -------  -----------\r\nAzure_Dev                        AzureCloud   939cxxxxxxx-xxxxxxx  Enabled  False\r\nVisual Studio Enterprise MPN     AzureCloud   0ce0xxxxxxx-xxxxxxx  Enabled  False\r\nvisionarts-demo-env              AzureCloud   65b7xxxxxxx-xxxxxxx  Enabled  True\r\n<\/code><\/pre>\n<p>\u5728\u5305\u542b.tf\u6587\u4ef6\u7684\u76ee\u5f55\u4e2d\u6267\u884cterraform init\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform init\r\n\r\nInitializing the backend...\r\n\r\nSuccessfully configured the backend \"azurerm\"! 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 \"azurerm\" (terraform-providers\/azurerm) 1.31.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.azurerm: version = \"~&gt; 1.31\"\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 terraform plan \u547d\u4ee4\uff0c\u5e76\u786e\u4fdd\u663e\u793a\u521b\u5efa\u4e86\u4e00\u4e2a\u8d44\u6e90\u7ec4\uff08\u8ba1\u5212\uff09\u3002<\/p>\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  # azurerm_resource_group.test_resource_group will be created\r\n  + resource \"azurerm_resource_group\" \"test_resource_group\" {\r\n      + id       = (known after apply)\r\n      + location = \"japaneast\"\r\n      + name     = \"test_resource_group\"\r\n      + tags     = (known after apply)\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>\u6267\u884cterraform apply\u547d\u4ee4\uff08\u5728\u8981\u6c42\u786e\u8ba4\u65f6\u8f93\u5165&#8221;yes&#8221;\uff09<\/p>\n<pre class=\"post-pre\"><code>$ terraform apply\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  # azurerm_resource_group.test_resource_group will be created\r\n  + resource \"azurerm_resource_group\" \"test_resource_group\" {\r\n      + id       = (known after apply)\r\n      + location = \"japaneast\"\r\n      + name     = \"test_resource_group\"\r\n      + tags     = (known after apply)\r\n    }\r\n\r\nPlan: 1 to add, 0 to change, 0 to destroy.\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\nazurerm_resource_group.test_resource_group: Creating...\r\nazurerm_resource_group.test_resource_group: Creation complete after 2s [id=\/subscriptions\/65b7xxxxxxx-xxxxxxx\/resourceGroups\/test_resource_group]\r\n\r\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\r\n<\/code><\/pre>\n<p>\u786e\u8ba4\u8d44\u6e90\u7ec4\u5df2\u6210\u529f\u521b\u5efa\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8723913a08637a6bf08e\/25-0.png\" alt=\"image.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8723913a08637a6bf08e\/26-0.png\" alt=\"image.png\" \/><\/div>\n<h2>\u66f4\u6539\u7b2c\u4e8c\u4e2a\u64cd\u4f5c\uff08\u8d44\u6e90\u7ec4\uff09\u3002<\/h2>\n<p>\u63a5\u4e0b\u6765\uff0c\u662f\u7b2c\u4e8c\u4e2a\u4efb\u52a1\u3002\u5b89\u88c5\u548c\u767b\u5f55\u53ca\u5207\u6362\u81f3\u76ee\u6807\u8ba2\u9605\u7684\u6b65\u9aa4\u4e0e\u7b2c\u4e00\u4e2a\u4efb\u52a1\u5b8c\u5168\u76f8\u540c\uff0c\u9700\u6309\u7167\u540c\u6837\u7684\u6b65\u9aa4\u8fdb\u884c\u64cd\u4f5c\u3002<\/p>\n<p>\u521b\u5efa\u7528\u4e8e\u66f4\u6539\u7684.tf\u6587\u4ef6\u3002\u5dee\u5f02\u5728\u6700\u540e4\u884c\u4e2d\uff0c\u6dfb\u52a0\u4e86\u6807\u7b7e\u3002<\/p>\n<pre class=\"post-pre\"><code># Azure Provider\u306e\u8a2d\u5b9a\r\nprovider \"azurerm\" {\r\n}\r\n\r\n# \u30b9\u30c6\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u8a2d\u5b9a\r\nterraform {\r\n    backend \"azurerm\" {\r\n        storage_account_name  = \"&lt;1\u53f0\u76ee\u3067\u8a2d\u5b9a\u3057\u305f\u306e\u3068\u540c\u3058\u30b9\u30c8\u30ec\u30fc\u30b8\u30a2\u30ab\u30a6\u30f3\u30c8\u540d&gt;\"\r\n        container_name        = \"&lt;1\u53f0\u76ee\u3067\u8a2d\u5b9a\u3057\u305f\u306e\u3068\u540c\u3058\u30b3\u30f3\u30c6\u30ca\u540d&gt;\"\r\n        key                   = \"terraform.tfstate\" # \u30b9\u30c6\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u540d\r\n        resource_group_name  = \"&lt;1\u53f0\u76ee\u3067\u8a2d\u5b9a\u3057\u305f\u306e\u3068\u540c\u3058\u30ea\u30bd\u30fc\u30b9\u30b0\u30eb\u30fc\u30d7\u540d&gt;\"\r\n    }\r\n}\r\n\r\n# \u4f5c\u6210\u3059\u308b\u30ea\u30bd\u30fc\u30b9\u30b0\u30eb\u30fc\u30d7\u306e\u8a2d\u5b9a\r\nresource \"azurerm_resource_group\" \"test_resource_group\" {\r\n    name     = \"test_resource_group\"\r\n    location = \"Japan East\"\r\n\r\n    tags = {\r\n        environment = \"Demo\"\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>\u6267\u884cterraform init\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 \"azurerm\"! 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 \"azurerm\" (terraform-providers\/azurerm) 1.31.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<\/span><span class=\"gp\">* provider.azurerm: version = \"~&gt;<\/span> 1.31<span class=\"s2\">\"\r\n<\/span><span class=\"go\">\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>\u8bf7\u6267\u884cterraform plan\u547d\u4ee4\uff0c\u786e\u4fdd\u8d44\u6e90\u7ec4\u5c06\u663e\u793a\u4e3a1\u4e2a\u53d8\u66f4\uff08\u8ba1\u5212\uff09\u3002<br \/>\n\u5982\u679c\u8fd9\u91cc\u663e\u793a\u4e86\u4e0e\u7b2c\u4e00\u53f0\u8bbe\u5907\u76f8\u540c\u7684\u65b0\u521b\u5efa\uff08\u8ba1\u5212\uff09\uff0c\u5219\u8bf4\u660e\u72b6\u6001\u6587\u4ef6\u7684\u5f15\u7528\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u786e\u8ba4\u4e4b\u524d\u7684\u6b65\u9aa4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> terraform plan\r\n<span class=\"go\">Refreshing 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\nazurerm_resource_group.test_resource_group: Refreshing state... [id=\/subscriptions\/65b7xxxxxxx-xxxxxxx\/resourceGroups\/test_resource_group]\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  ~ update in-place\r\n\r\nTerraform will perform the following actions:\r\n\r\n<\/span><span class=\"gp\">  #<\/span> azurerm_resource_group.test_resource_group will be updated <span class=\"k\">in<\/span><span class=\"nt\">-place<\/span>\r\n<span class=\"go\">  ~ resource \"azurerm_resource_group\" \"test_resource_group\" {\r\n        id       = \"\/subscriptions\/65b7xxxxxxx-xxxxxxx\/resourceGroups\/test_resource_group\"\r\n        location = \"japaneast\"\r\n        name     = \"test_resource_group\"\r\n      ~ tags     = {\r\n          + \"environment\" = \"Demo\"\r\n        }\r\n    }\r\n\r\nPlan: 0 to add, 1 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<\/span><\/code><\/pre>\n<p>\u6267\u884cterraform apply\uff08\u4e0e\u7b2c\u4e00\u53f0\u670d\u52a1\u5668\u4e00\u6837\uff0c\u8f93\u5165&#8221;yes&#8221;\u8fdb\u884c\u786e\u8ba4\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> terraform apply\r\n<span class=\"go\">azurerm_resource_group.test_resource_group: Refreshing state... [id=\/subscriptions\/65b7xxxxxxx-xxxxxxx\/resourceGroups\/test_resource_group]\r\n\r\nAn execution plan has been generated and is shown below.\r\nResource actions are indicated with the following symbols:\r\n  ~ update in-place\r\n\r\nTerraform will perform the following actions:\r\n\r\n<\/span><span class=\"gp\">  #<\/span> azurerm_resource_group.test_resource_group will be updated <span class=\"k\">in<\/span><span class=\"nt\">-place<\/span>\r\n<span class=\"go\">  ~ resource \"azurerm_resource_group\" \"test_resource_group\" {\r\n        id       = \"\/subscriptions\/65b7xxxxxxx-xxxxxxx\/resourceGroups\/test_resource_group\"\r\n        location = \"japaneast\"\r\n        name     = \"test_resource_group\"\r\n      ~ tags     = {\r\n          + \"environment\" = \"Demo\"\r\n        }\r\n    }\r\n\r\nPlan: 0 to add, 1 to change, 0 to destroy.\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\nazurerm_resource_group.test_resource_group: Modifying... [id=\/subscriptions\/65b7xxxxxxx-xxxxxxx\/resourceGroups\/test_resource_group]\r\nazurerm_resource_group.test_resource_group: Modifications complete after 3s [id=\/subscriptions\/65b7xxxxxxx-xxxxxxx\/resourceGroups\/test_resource_group]\r\n\r\nApply complete! Resources: 0 added, 1 changed, 0 destroyed.\r\n<\/span><\/code><\/pre>\n<p>\u786e\u8ba4\u8d44\u6e90\u7ec4\u5df2\u6dfb\u52a0\u6807\u7b7e\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8723913a08637a6bf08e\/38-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u53e6\u5916\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u7b2c\u4e8c\u4e2a\u64cd\u4f5c\u786e\u8ba4\u72b6\u6001\u6587\u4ef6\u5df2\u7ecf\u66f4\u65b0\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8723913a08637a6bf08e\/40-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u901a\u8fc7\u4ee5\u4e0a\u6b65\u9aa4\uff0c\u6211\u4eec\u786e\u8ba4\u4e86\u4f7f\u7528Terraform\u521b\u5efa\u548c\u66f4\u6539Azure\u8d44\u6e90\uff08\u591a\u4eba\u5171\u4eab\u72b6\u6001\u6587\u4ef6\uff09\u7684\u529f\u80fd\u3002<\/p>\n<h1>\u8bf7\u53c2\u8003\u4e0b\u5217\u8d44\u6599\u3002<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Introduction to Terraform<\/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\">Download Terraform<\/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: Azure Provider<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Azure CLI \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Terraform \u662f\u4e00\u79cd\u7528\u4e8e\u6784\u5efa\u3001\u66f4\u6539\u548c\u7248\u672c\u63a7\u5236\u57fa\u7840\u8bbe\u65bd\u8d44\u6e90\u7684\u5de5\u5177\u3002\u914d\u7f6e\u4ee3\u7801\u4f7f\u7528 Terraform \u914d\u7f6e\u6587 [&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-48747","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>\u5728Azure\u4e0a\u901a\u8fc7Terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09Azure\u8d44\u6e90\u7684\u73af\u5883 - 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\/\u5728azure\u4e0a\u901a\u8fc7terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09azure\u8d44\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5728Azure\u4e0a\u901a\u8fc7Terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09Azure\u8d44\u6e90\u7684\u73af\u5883\" \/>\n<meta property=\"og:description\" content=\"Terraform \u662f\u4e00\u79cd\u7528\u4e8e\u6784\u5efa\u3001\u66f4\u6539\u548c\u7248\u672c\u63a7\u5236\u57fa\u7840\u8bbe\u65bd\u8d44\u6e90\u7684\u5de5\u5177\u3002\u914d\u7f6e\u4ee3\u7801\u4f7f\u7528 Terraform \u914d\u7f6e\u6587 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728azure\u4e0a\u901a\u8fc7terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09azure\u8d44\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-09T20:59:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T14:43:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8723913a08637a6bf08e\/1-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=\"6 \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\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/\",\"name\":\"\u5728Azure\u4e0a\u901a\u8fc7Terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09Azure\u8d44\u6e90\u7684\u73af\u5883 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-11-09T20:59:28+00:00\",\"dateModified\":\"2024-04-29T14:43:42+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5728Azure\u4e0a\u901a\u8fc7Terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09Azure\u8d44\u6e90\u7684\u73af\u5883\"}]},{\"@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\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5728Azure\u4e0a\u901a\u8fc7Terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09Azure\u8d44\u6e90\u7684\u73af\u5883 - 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\/\u5728azure\u4e0a\u901a\u8fc7terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09azure\u8d44\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5728Azure\u4e0a\u901a\u8fc7Terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09Azure\u8d44\u6e90\u7684\u73af\u5883","og_description":"Terraform \u662f\u4e00\u79cd\u7528\u4e8e\u6784\u5efa\u3001\u66f4\u6539\u548c\u7248\u672c\u63a7\u5236\u57fa\u7840\u8bbe\u65bd\u8d44\u6e90\u7684\u5de5\u5177\u3002\u914d\u7f6e\u4ee3\u7801\u4f7f\u7528 Terraform \u914d\u7f6e\u6587 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728azure\u4e0a\u901a\u8fc7terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09azure\u8d44\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-11-09T20:59:28+00:00","article_modified_time":"2024-04-29T14:43:42+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8723913a08637a6bf08e\/1-0.png"}],"author":"\u65b0, \u97f5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u65b0, \u97f5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"6 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/","name":"\u5728Azure\u4e0a\u901a\u8fc7Terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09Azure\u8d44\u6e90\u7684\u73af\u5883 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-11-09T20:59:28+00:00","dateModified":"2024-04-29T14:43:42+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5728Azure\u4e0a\u901a\u8fc7Terraform\u8bbe\u7f6e\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u591a\u4eba\u521b\u5efa\uff08\u4fee\u6539\uff09Azure\u8d44\u6e90\u7684\u73af\u5883"}]},{"@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\/%e5%9c%a8azure%e4%b8%8a%e9%80%9a%e8%bf%87terraform%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%8f%af%e4%bb%a5%e8%ae%a9%e5%a4%9a%e4%ba%ba%e5%88%9b%e5%bb%ba%ef%bc%88%e4%bf%ae%e6%94%b9%ef%bc%89azure%e8%b5%84\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48747","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=48747"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48747\/revisions"}],"predecessor-version":[{"id":88089,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48747\/revisions\/88089"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}