{"id":48802,"date":"2023-04-24T16:53:35","date_gmt":"2023-05-03T11:53:28","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/"},"modified":"2024-04-30T01:07:38","modified_gmt":"2024-04-29T17:07:38","slug":"%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/","title":{"rendered":"\u4f7f\u7528Terraform \u5728 Azure AD \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u5404\u4f4d\u665a\u4e0a\u597d\uff0c\u6211\u662f\u5c0f\u8349\u718a\u3002<br \/>\nHashiCorp\u516c\u53f8\u63a8\u51fa\u7684Terraform\u975e\u5e38\u65b9\u4fbf\u5462\u3002<br \/>\n\u5b83\u662f\u6211\u6700\u559c\u6b22\u7684\u4ea7\u54c1\u4e4b\u4e00\u3002<br \/>\n\u6211\u60f3\u5199\u4e00\u4e9b\u5173\u4e8e\u4e0d\u53ef\u6216\u7f3a\u7684Terraform\u4ee5\u5b9e\u73b0\u57fa\u7840\u8bbe\u65bd\u5373\u4ee3\u7801\u3002<\/p>\n<p>\u7531\u4e8e\u5728\u4e00\u7bc7\u6587\u7ae0\u4e2d\u65e0\u6cd5\u5b8c\u6574\u4f20\u8fbeTerraform\u7684\u6240\u6709\u5185\u5bb9\uff0c\u6240\u4ee5\u6211\u5e0c\u671b\u80fd\u591f\u9010\u6e10\u5730\u5c06\u5b83\u5206\u6210\u51e0\u7bc7\u6587\u7ae0\u3002<\/p>\n<p>\u8981\u5728 Azure \u4e2d\u4f7f\u7528 Terraform\uff0c\u9996\u5148\u9700\u8981\u8fdb\u884c Azure AD \u8ba4\u8bc1\u3002<br \/>\n\u4eca\u5929\uff0c\u6211\u5c06\u5199\u4e00\u4e0b\u5173\u4e8e Azure AD \u8ba4\u8bc1\u7684\u65b9\u6cd5\u3002<\/p>\n<h1>Azure AD \u8a8d\u8bc1\u65b9\u5f0f\u7684\u65b9\u6cd5<\/h1>\n<p>\u5728Terraform\u4e2d\uff0cAzure AD\u8ba4\u8bc1\u6709\u4ee5\u4e0b\u56db\u79cd\u65b9\u6cd5\uff1a<br \/>\n1. Azure CLI<br \/>\n2. \u6258\u7ba1\u6807\u8bc6<br \/>\n3. \u670d\u52a1\u4e3b\u4f53\uff08\u5ba2\u6237\u7aef\u8bc1\u4e66\uff09<br \/>\n4. \u670d\u52a1\u4e3b\u4f53\uff08\u5bc6\u94a5\uff09<\/p>\n<p>HashiCorp \u7684\u63a8\u8350\u5982\u4e0b\uff1a<br \/>\n\u2022 \u5982\u679c\u5e0c\u671b\u4ece CI \u5de5\u5177\u7b49\u975e\u4ea4\u4e92\u5f0f\u5730\u8c03\u7528\u5e76\u4f7f\u7528\uff0c\u53ef\u4ee5\u4f7f\u7528\u6258\u7ba1 ID \u6216\u670d\u52a1\u4e3b\u4f53\u3002<br \/>\n\u2022 \u5982\u679c\u5e0c\u671b\u4ece\u672c\u5730 PC \u8c03\u7528\u5e76\u4f7f\u7528\uff0c\u8bf7\u4f7f\u7528 Azure CLI\u3002<\/p>\n<p>Azure CLI \u7684\u8ba4\u8bc1\u65b9\u6cd5\u9700\u8981\u5728\u672c\u5730\u73af\u5883\u4e2d\u5b89\u88c5Azure CLI\uff0c\u5e76\u4e14\u9700\u8981\u8fdb\u884c\u4ea4\u4e92\u5f0f\u8ba4\u8bc1\uff0c\u8bf7\u6ce8\u610f\u3002<br \/>\n\u6709\u5173\u6700\u65b0\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4ee5\u4e0bURL\u3002<\/p>\n<p>\u8fd9\u53ea\u662f\u4e00\u4e2a\u5efa\u8bae\uff0c\u5373\u4f7f\u662f\u5728\u672c\u5730\u73af\u5883\uff0c\u4e5f\u4e0d\u610f\u5473\u7740\u5176\u4ed6\u8eab\u4efd\u9a8c\u8bc1\u65b9\u6cd5\u65e0\u6cd5\u4f7f\u7528\u3002<br \/>\n\u4e0e\u4f7f\u7528\u5bf9\u8bdd\u5f0f\u8eab\u4efd\u9a8c\u8bc1\u65b9\u6cd5\u76f8\u6bd4\uff0c\u4f7f\u7528\u5176\u4ed6\u975e\u5bf9\u8bdd\u5f0f\u8eab\u4efd\u9a8c\u8bc1\u65b9\u6cd5\u66f4\u52a0\u65b9\u4fbf\u3002<br \/>\n\u5728\u9009\u62e9\u4f7f\u7528\u975e\u5bf9\u8bdd\u5f0f\u7684\u6258\u7ba1ID\u548c\u670d\u52a1\u4e3b\u4f53\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u65f6\uff0c\u4e00\u4e2a\u5173\u952e\u95ee\u9898\u662f\u4ece\u54ea\u91cc\u6267\u884cTerraform\uff1f<\/p>\n<p>\u4e24\u8005\u7684\u7279\u70b9\u662f\uff0c<\/p>\n<p>\u7ba1\u7406\u8eab\u4efd<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Azure AD \u8a8d\u8a3c\u6642\u306b\u30d1\u30b9\u30ef\u30fc\u30c9\u60c5\u5831\u3092\u5fc5\u8981\u3068\u3057\u306a\u3044 (\u30d1\u30b9\u30ef\u30fc\u30c9\u4e0d\u8981)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Terraform \u306f\u3001Azure \u4e0a\u306e\u30ea\u30bd\u30fc\u30b9 (Virtual Machine (\u4ee5\u4e0b\u3001VM) \u306a\u3069) \u304b\u3089\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b (Azure \u5916\u306e\u74b0\u5883 (\u30aa\u30f3\u30d7\u30ec\u3084 AWS) \u304b\u3089\u306f\u4f7f\u3048\u306a\u3044)<\/ul>\n<p>[\u670d\u52a1\u4e3b\u8981\u4eba\u5458]<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Azure AD \u8a8d\u8a3c\u6642\u306b\u30d1\u30b9\u30ef\u30fc\u30c9\u306a\u3069\u306e\u60c5\u5831\u304c\u5fc5\u8981<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Terraform \u306f\u3001\u3069\u3053\u304b\u3089\u3067\u3082\u5b9f\u884c\u53ef\u80fd (Azure \u5916\u306e\u74b0\u5883 (\u30aa\u30f3\u30d7\u30ec\u3084 AWS) \u304b\u3089\u3067\u3082\u4f7f\u3048\u308b)<\/ul>\n<p>\u5982\u679c\u5728Azure\u4e2d\u8fd0\u884c\u7684\u8bdd\uff0c\u6211\u4e2a\u4eba\u63a8\u8350\u4f7f\u7528\u65e0\u9700\u5bc6\u7801\u4fe1\u606f\u76842.\u6258\u7ba1ID\u3002\u8fd9\u6837\u53ef\u4ee5\u51cf\u5c11\u5728GitHub\u4e0a\u4e0a\u4f20\u5305\u542b\u673a\u5bc6\u4fe1\u606f\u7684\u6587\u4ef6\u7684\u98ce\u9669\u3002<\/p>\n<p>\u7136\u800c\uff0c\u5982\u679c\u9700\u8981\u4eceAzure\u5916\u90e8\u73af\u5883\u8bbf\u95ee\uff0c\u5c06\u53ea\u80fd\u9009\u62e9\u4f7f\u7528\u670d\u52a1\u4e3b\u4f53\u3002<\/p>\n<p>\u8bf7\u786e\u4fdd\u5728\u90a3\u4e2a\u65f6\u5019\uff0c\u4e25\u683c\u7ba1\u7406\u673a\u5bc6\u4fe1\u606f\u3002<\/p>\n<p>\u6211\u8ba4\u4e3a\u4ee5\u4e0b URL \u5bf9\u4e8e Managed ID \u53ef\u80fd\u4f1a\u6709\u53c2\u8003\u4ef7\u503c\u3002<\/p>\n<h1>\u5b9e\u65bd\u65b9\u5f0f<\/h1>\n<p>\u672c\u6b21\u6211\u5c06\u4ecb\u7ecd\u4f7f\u7528\u6258\u7ba1\u8eab\u4efd\u7684\u5b9e\u73b0\u65b9\u6cd5\u3002<br \/>\n\u7b80\u5355\u6982\u62ec\u5730\u8bf4\uff0c\u5c31\u662f\u50cf\u4e0b\u9762\u8fd9\u6837\u7684\u611f\u89c9\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8799913a08637a6c0512\/22-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u6211\u60f3\u4ece\u542f\u7528\u4e86\u6258\u7ba1\u6807\u8bc6\u7684\u865a\u62df\u673a\u4e2d\u8fdb\u884cAzure AD\u8eab\u4efd\u9a8c\u8bc1\uff0c\u5e76\u5728\u540c\u4e00\u79df\u6237\u548c\u8ba2\u9605\u5185\u521b\u5efa\u8d44\u6e90\u7ec4\u3002<\/p>\n<p>\u5982\u679c\u53d1\u751f\u6d41\u52a8\uff0c\u5c06\u6309\u7167\u4ee5\u4e0b\u65b9\u5f0f\u8fdb\u884c\u3002<\/p>\n<p>[\u524d\u63d0\u6761\u4ef6]\u7684\u524d\u7f6e\u6761\u4ef6\u3002<\/p>\n<ul class=\"post-ul\">Azure \u4e0a\u306b\u57fa\u672c\u7684\u306a\u30ea\u30bd\u30fc\u30b9 (Virtual Network (\u4ee5\u4e0b\u3001VNET)\u3001VM (CentOS) ) \u304c\u4f5c\u6210\u3055\u308c\u3066\u3044\u308b\u3053\u3068<\/ul>\n<p>[ \u6b65\u9a5f ]<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u542f\u7528VM\u7684\u7ba1\u7406ID<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u83b7\u53d6\u8ba2\u9605ID\u548c\u79df\u6237ID<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u5b89\u88c5Terraform<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u521b\u5efa\u6a21\u677f<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u6267\u884cterraform plan\u548capply\u64cd\u4f5c<\/ol>\n<p>\u90a3\u6211\u4eec\u6765\u8bd5\u8bd5\u770b\u5427\u3002<\/p>\n<h1>\u6fc0\u6d3b VM \u7ba1\u7406ID<\/h1>\n<p>\u767b\u5165 Azure \u95e8\u6237\u3002<br \/>\n\u524d\u5f80 [\u865a\u62df\u673a]\uff0c\u9009\u62e9\u76ee\u6807\u865a\u62df\u673a\u3002<br \/>\n\u9009\u62e9 [ID]\uff0c\u5c06\u72b6\u6001\u8bbe\u7f6e\u4e3a [\u5f00]\uff0c\u9009\u62e9 [\u4fdd\u5b58]\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8799913a08637a6c0512\/32-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u9009\u62e9 [\u662f]\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8799913a08637a6c0512\/34-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u7136\u540e\u6388\u4e88\u6743\u9650\u3002<br \/>\n\u8f6c\u5230[\u8ba2\u9605]\uff0c\u9009\u62e9\u76ee\u6807\u8ba2\u9605\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8799913a08637a6c0512\/36-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u8bf7\u6309\u7167\u4ee5\u4e0b\u987a\u5e8f\u8fdb\u884c\u9009\u62e9\uff1a[\u8bbf\u95ee\u63a7\u5236\uff08IAM\uff09] \u2192 [\u6dfb\u52a0\u89d2\u8272\u5206\u914d]\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8799913a08637a6c0512\/38-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u9009\u62e9&#8221;\u5171\u540c\u521b\u5efa\u8005&#8221;\u4f5c\u4e3a\u89d2\u8272\uff0c\u4ece\u9009\u62e9\u9879\u4e2d\u9009\u62e9\u76ee\u6807\u865a\u62df\u673a\u3002\u6700\u540e\u9009\u62e9&#8221;\u4fdd\u5b58&#8221;\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8799913a08637a6c0512\/40-0.png\" alt=\"image.png\" \/><\/div>\n<h1>2. \u83b7\u53d6\u8ba2\u9605 ID \u548c\u79df\u6237 ID<\/h1>\n<p>\u6709\u8bb8\u591a\u65b9\u6cd5\u53ef\u4ee5\u505a\u5230\u8fd9\u4e00\u70b9\u3002<br \/>\n\u4f8b\u5982\u4eceAzure\u95e8\u6237\u83b7\u53d6\u7684\u65b9\u6cd5\uff0c\u4eceAzure CLI\u83b7\u53d6\u7684\u65b9\u6cd5\uff0c\u4eceAzure PowerShell\u83b7\u53d6\u7684\u65b9\u6cd5\u7b49\u7b49\u3002<\/p>\n<p>\u6211\u5011\u5c07\u4ecb\u7d39\u4f7f\u7528 Azure CLI \u4f86\u7372\u53d6\u7684\u65b9\u6cd5\u3002<br \/>\n\u57f7\u884c [az login] \u547d\u4ee4\u3002<br \/>\n\u7136\u5f8c\u6703\u555f\u52d5\u700f\u89bd\u5668\u4e26\u9032\u884c\u8eab\u4efd\u9a57\u8b49\u3002<br \/>\n\u5982\u679c\u8fd4\u56de\u4ee5\u4e0b\u985e\u4f3c\u7d50\u679c\uff0c\u5247\u8868\u793a\u8eab\u4efd\u9a57\u8b49\u6210\u529f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nv\">$ <\/span>az login\r\nNote, we have launched a browser <span class=\"k\">for <\/span>you to login. For old experience with device code, use <span class=\"s2\">\"az login --use-device-code\"<\/span>\r\nYou have logged <span class=\"k\">in<\/span><span class=\"nb\">.<\/span> Now <span class=\"nb\">let <\/span>us find all the subscriptions to which you have access...\r\n<span class=\"o\">[<\/span>\r\n  <span class=\"o\">{<\/span>\r\n    <span class=\"s2\">\"cloudName\"<\/span>: <span class=\"s2\">\"AzureCloud\"<\/span>,\r\n    <span class=\"s2\">\"id\"<\/span>: <span class=\"s2\">\"&lt;\u30b5\u30d6\u30b9\u30af\u30ea\u30d7\u30b7\u30e7\u30f3 ID&gt;\"<\/span>,\r\n    <span class=\"s2\">\"isDefault\"<\/span>: <span class=\"nb\">true<\/span>,\r\n    <span class=\"s2\">\"name\"<\/span>: <span class=\"s2\">\"\u5f93\u91cf\u8ab2\u91d1\"<\/span>,\r\n    <span class=\"s2\">\"state\"<\/span>: <span class=\"s2\">\"Enabled\"<\/span>,\r\n    <span class=\"s2\">\"tenantId\"<\/span>: <span class=\"s2\">\"&lt;\u30c6\u30ca\u30f3\u30c8 ID&gt;\"<\/span>,\r\n    <span class=\"s2\">\"user\"<\/span>: <span class=\"o\">{<\/span>\r\n      <span class=\"s2\">\"name\"<\/span>: <span class=\"s2\">\"hogehoge@example.com\"<\/span>,\r\n      <span class=\"s2\">\"type\"<\/span>: <span class=\"s2\">\"user\"<\/span>\r\n    <span class=\"o\">}<\/span>\r\n  <span class=\"o\">}<\/span>\r\n<span class=\"o\">]<\/span>\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u6267\u884c\u7ed3\u679c\u4e2d\u5305\u542b\u8ba2\u9605 ID \u548c\u79df\u6237 ID\uff0c\u8bf7\u5c06\u5176\u590d\u5236\u4fdd\u5b58\u3002<br \/>\nid \u662f\u8ba2\u9605 ID\uff0c<br \/>\ntenantId \u662f\u79df\u6237 ID\u3002<\/p>\n<h1>3. \u5b89\u88c5Terraform<\/h1>\n<p>Terraform \u4ee5\u4e8c\u8fdb\u5236\u65b9\u5f0f\u5206\u53d1\uff0c\u53ea\u9700\u4e0b\u8f7d\u5e76\u90e8\u7f72\u5373\u53ef\u3002<br \/>\n\u672c\u6b21\u4f7f\u7528 CentOS 7.5 \u4f5c\u4e3a\u64cd\u4f5c\u7cfb\u7edf\u3002<br \/>\n\u9996\u5148\u8fdb\u884c\u4e0b\u8f7d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>root@centos75 ~]# curl <span class=\"nt\">-OL<\/span> https:\/\/releases.hashicorp.com\/terraform\/0.11.11\/terraform_0.11.11_linux_amd64.zip\r\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\r\n                                 Dload  Upload   Total   Spent    Left  Speed\r\n100 20.0M  100 20.0M    0     0  32.8M      0 <span class=\"nt\">--<\/span>:--:-- <span class=\"nt\">--<\/span>:--:-- <span class=\"nt\">--<\/span>:--:-- 32.8M\r\n\r\n<\/code><\/pre>\n<p>\u5c06\u6587\u4ef6\u89e3\u538b\u5230$PATH\u53d8\u91cf\u6307\u5b9a\u7684\u76ee\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>root@centos75 ~]# <span class=\"nb\">cd<\/span> \/usr\/local\/bin\r\n<span class=\"o\">[<\/span>root@centos75 bin]# unzip ~\/terraform_0.11.11_linux_amd64.zip\r\nArchive:  \/root\/terraform_0.11.11_linux_amd64.zip\r\n  inflating: terraform\r\n<span class=\"o\">[<\/span>root@centos75 bin]# <span class=\"nb\">ls<\/span> <span class=\"nt\">-l<\/span>\r\ntotal 87388\r\n<span class=\"nt\">-rwxrwxr-x<\/span><span class=\"nb\">.<\/span> 1 root root 89483552 Dec 14 21:20 terraform\r\n<\/code><\/pre>\n<p>\u8fdb\u884c\u5b89\u88c5\u786e\u8ba4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>root@centos75 bin]# terraform version\r\nTerraform v0.11.11\r\n<\/code><\/pre>\n<h1>4. \u521b\u5efa\u6a21\u677f<\/h1>\n<p>\u8bf7\u9884\u5907\u597d Terraform \u7684\u6a21\u677f\u3002<br \/>\n\u8bf7\u4ece\u8fd9\u91cc\u8fdb\u884c git \u514b\u9686\u6216\u590d\u5236\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>root@centos75 ~]# git clone https:\/\/github.com\/c9mau1\/terraform-azure-azureadauth.git\r\nCloning into <span class=\"s1\">'terraform-azure-azureadauth'<\/span>...\r\nremote: Enumerating objects: 10, <span class=\"k\">done<\/span><span class=\"nb\">.<\/span>\r\nremote: Counting objects: 100% <span class=\"o\">(<\/span>10\/10<span class=\"o\">)<\/span>, <span class=\"k\">done<\/span><span class=\"nb\">.<\/span>\r\nremote: Compressing objects: 100% <span class=\"o\">(<\/span>8\/8<span class=\"o\">)<\/span>, <span class=\"k\">done<\/span><span class=\"nb\">.<\/span>\r\nremote: Total 10 <span class=\"o\">(<\/span>delta 0<span class=\"o\">)<\/span>, reused 10 <span class=\"o\">(<\/span>delta 0<span class=\"o\">)<\/span>, pack-reused 0\r\nUnpacking objects: 100% <span class=\"o\">(<\/span>10\/10<span class=\"o\">)<\/span>, <span class=\"k\">done<\/span><span class=\"nb\">.<\/span>\r\n<\/code><\/pre>\n<p>\u8bf7\u521b\u5efa\u4e00\u4e2a terraform.tfvars \u6587\u4ef6\uff0c\u5e76\u5728\u5176\u4e2d\u586b\u5199\u8ba2\u9605 ID \u548c\u79df\u6237 ID\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>root@centos75 ~]# <span class=\"nb\">cd <\/span>terraform-azure-azureadauth\r\n<span class=\"o\">[<\/span>root@centos75 terraform-azure-azureadauth]# vim terraform.tfvars\r\n<\/code><\/pre>\n<p>\u8bf7\u5c06\u4ee5\u4e0b\u5185\u5bb9\u8f93\u5165\u5e76\u4fdd\u5b58\u3002<\/p>\n<pre class=\"post-pre\"><code>subscription_id <span class=\"o\">=<\/span> <span class=\"s2\">\"&lt;\u30b5\u30d6\u30b9\u30af\u30ea\u30d7\u30b7\u30e7\u30f3 ID&gt;\"<\/span>\r\ntenant_id <span class=\"o\">=<\/span> <span class=\"s2\">\"&lt;\u30c6\u30ca\u30f3\u30c8 ID&gt;\"<\/span>\r\n<\/code><\/pre>\n<p>\u51c6\u5907\u5de5\u4f5c\u5df2\u7ecf\u5b8c\u6210\u3002<\/p>\n<p>provider.tf\u6587\u4ef6\u4e2d\u5305\u542b\u6709\u5173\u8fdb\u884cAzure AD\u8eab\u4efd\u9a8c\u8bc1\u7684\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>2019\/01\/13 00:03:17 terraform-azure-azureadauth]<span class=\"nv\">$ <\/span><span class=\"nb\">cat <\/span>provider.tf\r\nvariable <span class=\"s2\">\"subscription_id\"<\/span> <span class=\"o\">{}<\/span>\r\nvariable <span class=\"s2\">\"tenant_id\"<\/span> <span class=\"o\">{}<\/span>\r\n\r\nprovider <span class=\"s2\">\"azurerm\"<\/span> <span class=\"o\">{<\/span>\r\n  subscription_id <span class=\"o\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">var<\/span><span class=\"p\">.subscription_id<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span>\r\n  tenant_id       <span class=\"o\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">var<\/span><span class=\"p\">.tenant_id<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span>\r\n  use_msi     <span class=\"o\">=<\/span> <span class=\"nb\">true<\/span>\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<p>\u5728\u8fdb\u884cAzure AD\u8ba4\u8bc1\u65f6\uff0c\u8bf7\u4f7f\u7528&#8221;azurerm&#8221;\u3002<\/p>\n<p>\u4f5c\u4e3a\u5c5e\u6027\uff0c\u6307\u5b9asubscription_id\u548ctenant_id\uff0c\u5e76\u901a\u8fc7use_msi\u542f\u7528\u6258\u7ba1\u6807\u8bc6\u7684\u8ba4\u8bc1\u3002<\/p>\n<p>\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5c06\u503c\u5b9a\u4e49\u4e3a\u5f15\u7528\u4e4b\u524d\u521b\u5efa\u7684 terraform.tfvars \u6587\u4ef6\u4f5c\u4e3a\u5916\u90e8\u53d8\u91cf\u3002<\/p>\n<p>resource_group.tf \u4e2d\u8bb0\u5f55\u4e86\u521b\u5efa\u8d44\u6e90\u7ec4\u6240\u9700\u7684\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>2019\/01\/13 00:06:03 terraform-azure-azureadauth]<span class=\"nv\">$ <\/span><span class=\"nb\">cat <\/span>resource_group.tf\r\n<span class=\"c\">### Resource Group<\/span>\r\nresource <span class=\"s2\">\"azurerm_resource_group\"<\/span> <span class=\"s2\">\"rg\"<\/span> <span class=\"o\">{<\/span>\r\n  name     <span class=\"o\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">local<\/span><span class=\"p\">.res_group<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span>\r\n  location <span class=\"o\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">local<\/span><span class=\"p\">.region<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span>\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<p>\u5728\u521b\u5efa\u8d44\u6e90\u7ec4\u65f6\uff0c\u4f7f\u7528azurerm_resource_group\u3002<\/p>\n<p>\u5c5e\u6027\u662f\u901a\u8fc7\u6307\u5b9a\u8d44\u6e90\u7ec4\u540d\u79f0\u548c\u4f4d\u7f6e\u6765\u5b9a\u4e49\u7684\u3002<\/p>\n<p>\u9664\u6b64\u4e4b\u5916\uff0c\u8fd8\u53ef\u4ee5\u6307\u5b9a\u6807\u7b7e\u7b49\u5176\u4ed6\u4fe1\u606f\u3002<\/p>\n<p>\u503c\u88ab\u5199\u5728 variables.tf \u4e2d\u4f5c\u4e3a\u5916\u90e8\u53d8\u91cf\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>root@centos75 terraform-azure-azureadauth]# <span class=\"nb\">cat <\/span>variables.tf\r\nlocals <span class=\"o\">{<\/span>\r\n  region            <span class=\"o\">=<\/span> <span class=\"s2\">\"japaneast\"<\/span>\r\n  res_group         <span class=\"o\">=<\/span> <span class=\"s2\">\"test-rg\"<\/span>\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<h1>5. \u8fd0\u884c terraform<\/h1>\n<p>\u9996\u5148\uff0c\u6267\u884cinit\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>root@centos75 terraform-azure-azureadauth]# terraform init\r\n\r\nInitializing provider plugins...\r\n- Checking <span class=\"k\">for <\/span>available provider plugins on https:\/\/releases.hashicorp.com...\r\n- Downloading plugin <span class=\"k\">for <\/span>provider <span class=\"s2\">\"azurerm\"<\/span> <span class=\"o\">(<\/span>1.21.0<span class=\"o\">)<\/span>...\r\n\r\nThe following providers <span class=\"k\">do <\/span>not have any version constraints <span class=\"k\">in <\/span>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 <span class=\"o\">=<\/span> <span class=\"s2\">\"...\"<\/span> constraints to the\r\ncorresponding provider blocks <span class=\"k\">in <\/span>configuration, with the constraint strings\r\nsuggested below.\r\n\r\n<span class=\"k\">*<\/span> provider.azurerm: version <span class=\"o\">=<\/span> <span class=\"s2\">\"~&gt; 1.21\"<\/span>\r\n\r\nTerraform has been successfully initialized!\r\n\r\nYou may now begin working with Terraform. Try running <span class=\"s2\">\"terraform plan\"<\/span> to see\r\nany changes that are required <span class=\"k\">for <\/span>your infrastructure. All Terraform commands\r\nshould now work.\r\n\r\nIf you ever <span class=\"nb\">set <\/span>or change modules or backend configuration <span class=\"k\">for <\/span>Terraform,\r\nrerun this <span class=\"nb\">command <\/span>to reinitialize your working directory. If you forget, other\r\ncommands will detect it and remind you to <span class=\"k\">do <\/span>so <span class=\"k\">if <\/span>necessary.\r\n<\/code><\/pre>\n<p>\u6210\u529f\u4e4b\u540e\uff0c\u6211\u4f1a\u5236\u5b9a\u4e0b\u4e00\u6b65\u7684\u8ba1\u5212\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>root@centos75 terraform-azure-azureadauth]# terraform plan\r\nRefreshing Terraform state <span class=\"k\">in<\/span><span class=\"nt\">-memory<\/span> prior to plan...\r\nThe refreshed state will be used to calculate this plan, but will not be\r\npersisted to <span class=\"nb\">local <\/span>or remote state storage.\r\n\r\n\r\n<span class=\"nt\">------------------------------------------------------------------------<\/span>\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.rg\r\n      <span class=\"nb\">id<\/span>:       &lt;computed&gt;\r\n      location: <span class=\"s2\">\"japaneast\"<\/span>\r\n      name:     <span class=\"s2\">\"test-east-rg\"<\/span>\r\n      tags.%:   &lt;computed&gt;\r\n\r\n\r\nPlan: 1 to add, 0 to change, 0 to destroy.\r\n\r\n<span class=\"nt\">------------------------------------------------------------------------<\/span>\r\n\r\nNote: You didn<span class=\"s1\">'t specify an \"-out\" parameter to save this plan, so Terraform\r\ncan'<\/span>t guarantee that exactly these actions will be performed <span class=\"k\">if<\/span>\r\n<span class=\"s2\">\"terraform apply\"<\/span> is subsequently run.\r\n<\/code><\/pre>\n<p>\u7136\u540e\u8fdb\u884c\u7533\u8bf7\u3002<\/p>\n<p>\u8bf7\u8f93\u5165\u4e00\u4e2a\u503c\uff0c\u7136\u540e\u8f93\u5165\u201c\u662f\u201d\u4ee5\u7ee7\u7eed\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"o\">[<\/span>root@centos75 terraform-azure-azureadauth]# 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.rg\r\n      <span class=\"nb\">id<\/span>:       &lt;computed&gt;\r\n      location: <span class=\"s2\">\"japaneast\"<\/span>\r\n      name:     <span class=\"s2\">\"test-east-rg\"<\/span>\r\n      tags.%:   &lt;computed&gt;\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 <span class=\"s1\">'yes'<\/span> will be accepted to approve.\r\n\r\n  Enter a value: <span class=\"nb\">yes\r\n\r\n<\/span>azurerm_resource_group.rg: Creating...\r\n  location: <span class=\"s2\">\"\"<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"japaneast\"<\/span>\r\n  name:     <span class=\"s2\">\"\"<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"test-east-rg\"<\/span>\r\n  tags.%:   <span class=\"s2\">\"\"<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"&lt;computed&gt;\"<\/span>\r\nazurerm_resource_group.rg: Creation <span class=\"nb\">complete <\/span>after 1s <span class=\"o\">(<\/span>ID: \/subscriptions\/xxxxx\/resourceGroups\/test-east-rg<span class=\"o\">)<\/span>\r\n\r\nApply <span class=\"nb\">complete<\/span><span class=\"o\">!<\/span> Resources: 1 added, 0 changed, 0 destroyed.\r\n<\/code><\/pre>\n<p>\u8fd9\u6837\u5c31\u5b8c\u6210\u4e86\uff01<\/p>\n<h1>\u6700\u540e<\/h1>\n<p>\u7531\u4e8e\u73b0\u5728\u53ef\u4ee5\u8fdb\u884c\u8ba4\u8bc1\uff0c\u6240\u4ee5\u6211\u60f3\u5728\u4eca\u540e\u7684\u6b21\u6b21\u521b\u5efa\u865a\u62df\u673a\u548c\u5c1d\u8bd5PaaS\uff08\u5982Web\u5e94\u7528\u7a0b\u5e8f\uff09\u7b49\u65b9\u9762\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u5404\u4f4d\u665a\u4e0a\u597d\uff0c\u6211\u662f\u5c0f\u8349\u718a\u3002 HashiCorp\u516c\u53f8\u63a8\u51fa\u7684Terraform\u975e\u5e38\u65b9\u4fbf\u5462\u3002 \u5b83\u662f\u6211\u6700\u559c\u6b22\u7684\u4ea7\u54c1 [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48802","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\u7528Terraform \u5728 Azure AD \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b - 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\u7528terraform-\u5728-azure-ad-\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528Terraform \u5728 Azure AD \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u5404\u4f4d\u665a\u4e0a\u597d\uff0c\u6211\u662f\u5c0f\u8349\u718a\u3002 HashiCorp\u516c\u53f8\u63a8\u51fa\u7684Terraform\u975e\u5e38\u65b9\u4fbf\u5462\u3002 \u5b83\u662f\u6211\u6700\u559c\u6b22\u7684\u4ea7\u54c1 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528terraform-\u5728-azure-ad-\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-03T11:53:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T17:07:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8799913a08637a6c0512\/22-0.png\" \/>\n<meta name=\"author\" content=\"\u6e05, \u626c\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u626c\" \/>\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\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/\",\"name\":\"\u4f7f\u7528Terraform \u5728 Azure AD \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-05-03T11:53:28+00:00\",\"dateModified\":\"2024-04-29T17:07:38+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528Terraform \u5728 Azure AD \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b\"}]},{\"@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\/cb5556d2501da73d864cac945e8d9461\",\"name\":\"\u6e05, \u626c\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u626c\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528Terraform \u5728 Azure AD \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b - 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\u7528terraform-\u5728-azure-ad-\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528Terraform \u5728 Azure AD \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b","og_description":"\u9996\u5148 \u5404\u4f4d\u665a\u4e0a\u597d\uff0c\u6211\u662f\u5c0f\u8349\u718a\u3002 HashiCorp\u516c\u53f8\u63a8\u51fa\u7684Terraform\u975e\u5e38\u65b9\u4fbf\u5462\u3002 \u5b83\u662f\u6211\u6700\u559c\u6b22\u7684\u4ea7\u54c1 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528terraform-\u5728-azure-ad-\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-05-03T11:53:28+00:00","article_modified_time":"2024-04-29T17:07:38+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d8799913a08637a6c0512\/22-0.png"}],"author":"\u6e05, \u626c","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u626c","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/","name":"\u4f7f\u7528Terraform \u5728 Azure AD \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-05-03T11:53:28+00:00","dateModified":"2024-04-29T17:07:38+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528Terraform \u5728 Azure AD \u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u7684\u65b9\u6cd5\u5982\u4e0b"}]},{"@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\/cb5556d2501da73d864cac945e8d9461","name":"\u6e05, \u626c","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g","caption":"\u6e05, \u626c"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8terraform-%e5%9c%a8-azure-ad-%e8%bf%9b%e8%a1%8c%e8%ba%ab%e4%bb%bd%e9%aa%8c%e8%af%81%e7%9a%84%e6%96%b9%e6%b3%95%e5%a6%82%e4%b8%8b%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\/48802","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\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=48802"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48802\/revisions"}],"predecessor-version":[{"id":88755,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48802\/revisions\/88755"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}