{"id":3414,"date":"2024-02-01T10:12:05","date_gmt":"2024-02-01T16:12:05","guid":{"rendered":"https:\/\/microsoftgeek.com\/?p=3414"},"modified":"2024-02-01T10:14:53","modified_gmt":"2024-02-01T16:14:53","slug":"automate-infrastructure-in-azure-using-terraform-and-azure-devops","status":"publish","type":"post","link":"https:\/\/microsoftgeek.com\/?p=3414","title":{"rendered":"Automate Infrastructure in Azure using Terraform and Azure DevOps"},"content":{"rendered":"\n<p>Automating infrastructure setup in Azure Cloud using Terraform and Azure DevOps is a powerful approach to managing your infrastructure as code (IaC). This allows you to define and manage your Azure resources programmatically, version control your infrastructure configurations, and automate the deployment process.&nbsp;<\/p>\n\n\n\n<p>We will be creating a Java based WebApp(app service) in Azure cloud using Terraform and automate the process using Azure Devops Pipelines.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgfBeXXORHiK0EdSVSj3QH1L7Q-qY5b5LGjsTLBSoVW9ceQ970jbEhiv14ww449yocNxSWGHEliaTCkR10rU7aDWdsuFg89CVoI1oT3qhjS81QWQLCKTSmBVr5qyZdehBktES5amt0GwVAq0ZqrHmQDsxcUwcYLhdLJV-swhY5axMTtIkdAQmbo1ZBkAgI\/w400-h250\/Screenshot%202023-09-07%20at%203.30.42%20PM.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong><u>Pre-requisites:<\/u><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Azure subscription<\/li>\n\n\n\n<li>Azure DevOps organization and project<\/li>\n\n\n\n<li>Terraform Build &amp; Release Tasks extension\u00a0in Azure DevOps<\/li>\n\n\n\n<li>Terraform files created and stored in SCM for creating resources in Azure cloud<\/li>\n<\/ul>\n\n\n\n<p><strong><u>Implementation Steps:<\/u><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create a resource group first in Azure cloud<\/li>\n\n\n\n<li>Create storage account, container for Terraform to store state information in Azure cloud remotely.<\/li>\n\n\n\n<li>Create pipeline and add Terraform tasks<\/li>\n\n\n\n<li>Execute pipeline to deploy resources(App service plan and WebApp) in Azure cloud<\/li>\n\n\n\n<li>Verify resources are created in Azure cloud<\/li>\n\n\n\n<li>Confirm if the terraform.tfstate file is updated<\/li>\n<\/ul>\n\n\n\n<p><strong><u>Create Resource Group in Azure cloud<\/u><\/strong><\/p>\n\n\n\n<p>Login to Azure portal, Create a new RG, or you can skip this step if you already have existing group.<\/p>\n\n\n\n<p><strong><u>Create Storage Account in Azure cloud<\/u><\/strong><\/p>\n\n\n\n<p>Create a new resource, type storage account<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjGd3hYgAtvYdtprFRkDKv8y1iKxRc9agux1KmReT29JIjfl7Nl3wiGCbrepBZU5W3tGxAqRYmUyGQfqtt54x_ifDIssIqXpS7mrgO1ieOqnmSzapUYEIk5GB2BUb0VrqKiR5JMH79SQOHeFDbaK7vOO8YaX5wi8y56n3u9_SfjYFGQpWMkSBS9aF6U_yg\/s320\/Screenshot%202023-09-05%20at%209.51.22%20AM.png\" alt=\"\" style=\"width:299px;height:auto\"\/><\/figure>\n\n\n\n<p>Click on create<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhWM2dNND8GWImvUJRFq5a-9nrWgsu65ktDiVcJnbXAXN6O579f78_sTiG2hGX7MIjnOKKH7QKySQIDmhQUnel4WKmGaSbHlx7e2HrwbEYIQIAmDgXf6lqEdekou4jGvz__Pu4QBk5pIo34wlrceIpVklhb5-QdgTaL-vSKuq4ryPXll3Co1rmSzxAmd1c\/s320\/Screenshot%202023-09-05%20at%209.52.44%20AM.png\" alt=\"\" style=\"width:503px;height:auto\"\/><\/figure>\n\n\n\n<p>select RG, enter unique account name, select standard as performance, select locally redundant storage<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiRBeZiQtwdLPRC82Eb-JJb21GH1wk9qGyMDq7bp3dZKDprMN0YN6Gth1Oi7ludfg2YtExjXL_RKbrw7W7P7ZeDkYUEZxfqzc6_09dXSxoCYt3TGNMkNmd7i7bZMsE-w5_A17mx4sFDwUYZj9DOn6V2DE6wFIIjMKP813vUybWT3u726wXfrc5lFxcvCLo\/s320\/Screenshot%202023-09-05%20at%209.55.51%20AM.png\" alt=\"\" style=\"width:383px;height:auto\"\/><\/figure>\n\n\n\n<p>Click on create<br><\/p>\n\n\n\n<p><strong><u>Create a container inside the storage account<\/u><\/strong><\/p>\n\n\n\n<p>Select the storage account you just created, click on containers under Data storage<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiLpsyrjpdyWpA8i6gz_OyGDOy684jqYI4mNcQsYKcZhPXP-gpMs1Bi1WLjCSXTM8ic2AnZ9-IbGigVwxOg2U0HcQD6rQ3dXqdhd4yN_p7q4ETTzdZ3xSAvcjIHFbETY66y7yV90mtNHWcuRrJ1Q3452-JdcwMBzIdMeqMirm5QDSm59ZquDYVNyxy2ntw\/s320\/Screenshot%202023-09-05%20at%209.59.24%20AM.png\" alt=\"\" style=\"width:387px;height:auto\"\/><\/figure>\n\n\n\n<p>enter a name for the container<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhvy19of3OmNcooxf2Jjk6qBwndV2p8sK4DamxogE_sFRbr7yshiNLfcm7SlqDj3ZEyliUOZwE2ompf69gh05MBscdkOQvDJJemFB00n8zl-vHpGFfSwkCF9y5wj24D9hxgl78Z2YhMmNPd8n76ucc9ghCpIb_yjTq6Ul6xB7c1DzfctQuCXEuXwIQOPiI\/s320\/Screenshot%202023-09-05%20at%2010.01.09%20AM.png\" alt=\"\" style=\"width:414px;height:auto\"\/><\/figure>\n\n\n\n<p><strong><u>Create a pipeline in Azure DevOps<\/u><\/strong><\/p>\n\n\n\n<p>Login to Azure Devops, select Pipelines, select use the classic editor to create a pipeline<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg8d2CTSyDIGbLvCcQ_nseuTybQsVqsiLOI-MPgEsasWYnABs1XD8nAGArNmfRW7ek49lO6F6mzaUwddt55S1VnTIcL1eA7YE7z7OobliRiCmkzyCFlxi-mZl_JVRVITIc666JS0itWqIzkjyQ1XdNyi-0oDIfmv8m0siGVYPdL3PxGrv37lBbtzzpYUOw\/s320\/Screenshot%202023-09-05%20at%2011.46.07%20AM.png\" alt=\"\" style=\"width:437px;height:auto\"\/><\/figure>\n\n\n\n<p><strong><u>Configure Pipeline with tasks<\/u><\/strong><\/p>\n\n\n\n<p>Add Terraform installer task to install Terraform on build agent<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiEHF5CBBHYamvDPcj8u_C5aDUkl6Ben97vcTXWhmcw85i2iuo_HcwZXyTrxUzOQAXsZFG2wj-eQITC0czhPSstC0g7F8GNrhSa8Gt2SB2s0rgGZw-swe7azKlxxlllGurJjR_TC-_K0ZA6388RMX4j4iAZQ6NzaedVDwFm6sJkuD25Mj3GJukKz7Mqg4w\/s320\/Screenshot%202023-09-05%20at%2012.40.22%20PM.png\" alt=\"\" style=\"width:614px;height:auto\"\/><\/figure>\n\n\n\n<p>Add Terraform task&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiUT7H6Q1t7nOxhDCp61GSqtxhQqu-mGATe1OTgFGIUHtWUl4lSb6CkH2lGviYjZSm5FOLQ4Gr9n5bf0o9O7Lz-oecEesqPedrgB32GI_JDpkidoTuQW2TCmLnXT7-U-FKq5RRt0mNLDcMRTZZBYkohOzFjHJo8ZVRD8HYuVj2lLWLUDpyH_CsmA9tBvXM\/s320\/Screenshot%202023-09-05%20at%2012.41.55%20PM.png\" alt=\"\" style=\"width:665px;height:auto\"\/><\/figure>\n\n\n\n<p>Configure the task<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhy-fKXbO4N133gM9Gbox3VnG7K6nMHg5EbQYudl6g5iLLQLKd3WOW7IowzbaZSteC-l0R3iQiz4ai5AOUwVyjkQt1UHlRG-rWiJHWfgz08J_FLkDRTxV76HrSZhyPWT7P7S1fZbC3NTuasbF_GzzG9BDc9miAlXse0h_IO6HnzGTTGTKeVfbMh7B8KNok\/s320\/Screenshot%202023-09-05%20at%2012.44.42%20PM.png\" alt=\"\" style=\"width:592px;height:auto\"\/><\/figure>\n\n\n\n<p>enter storage account, container, key information as below:<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjQWt45P8noBH6CD5VbFTS3lypC11Vnqe5oh2bHUnGlwnJy0kj965C-nmP9Lax5RNhrU3OIJIBL4lT9djcEvj_-SDK8puiSTJ6BQk6WI5oCu3dNHbEQmwbdPe7hzqIes-DRJQmDJ5lYlTsCdMipeqjJMDVkhg1IySuHLMA98Eu1Dn11Fgn7BTin6Z-ZL1M\/s320\/Screenshot%202023-09-05%20at%2012.47.16%20PM.png\" alt=\"\" style=\"width:483px;height:auto\"\/><\/figure>\n\n\n\n<p><strong><u>Add terraform tasks to plan, apply<\/u><\/strong><\/p>\n\n\n\n<p>Add Terraform task for plan<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiUT7H6Q1t7nOxhDCp61GSqtxhQqu-mGATe1OTgFGIUHtWUl4lSb6CkH2lGviYjZSm5FOLQ4Gr9n5bf0o9O7Lz-oecEesqPedrgB32GI_JDpkidoTuQW2TCmLnXT7-U-FKq5RRt0mNLDcMRTZZBYkohOzFjHJo8ZVRD8HYuVj2lLWLUDpyH_CsmA9tBvXM\/s320\/Screenshot%202023-09-05%20at%2012.41.55%20PM.png\" alt=\"\" style=\"width:665px;height:auto\"\/><\/figure>\n\n\n\n<p>change the command to plan from drop down and also select azure subscription from drop down<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjc8-9Eef_MJvKZBsf9sv-87z-LV-zAx797m7nn8p3qHd-ZJXnjwAyXMZFMO2XfNeWPPALsM109vxTrl0C0wSKbIgyxIl0OOiJmfWPU0_RxvoLyZ0J-nWTfr8pj02jGMh3zcDpYUz0YhNr7zQ9zGyM-QUZ1bqTuoTgj9MphG-w5nFEy2KCZnj8B7zCt0z8\/s320\/Screenshot%202023-09-05%20at%2012.57.04%20PM.png\" alt=\"\" style=\"width:533px;height:auto\"\/><\/figure>\n\n\n\n<p>Add Terraform task for apply<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiUT7H6Q1t7nOxhDCp61GSqtxhQqu-mGATe1OTgFGIUHtWUl4lSb6CkH2lGviYjZSm5FOLQ4Gr9n5bf0o9O7Lz-oecEesqPedrgB32GI_JDpkidoTuQW2TCmLnXT7-U-FKq5RRt0mNLDcMRTZZBYkohOzFjHJo8ZVRD8HYuVj2lLWLUDpyH_CsmA9tBvXM\/s320\/Screenshot%202023-09-05%20at%2012.41.55%20PM.png\" alt=\"\" style=\"width:634px;height:auto\"\/><\/figure>\n\n\n\n<p>change the command to apply from drop down and also select azure subscription from drop down<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhB2EtXb7pPkDJWekZVz2-2tDoeMrZFXO4UpEx2WyPaxK5gIBSQaBTqTJa7suJ6wscQ2xQYq-22gQ3mtgGomi_nPe0zGJ2fEi3SqsByJs1kjqtnVMiykwaa4nsZV7_6LDStOnVXAiex1hmWF-4Nr55mU8ysQaz4Ayn5c2gGksjnhhdfRrBTDzYJuV__JSU\/s320\/Screenshot%202023-09-05%20at%201.00.49%20PM.png\" alt=\"\" style=\"width:475px;height:auto\"\/><\/figure>\n\n\n\n<p>Now verify to make sure if we have correct values in each\/every task. Now click on Save + Queue.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEilLue2hjSuQqJ1k4eSGTbomrxk1DjJqxFFE6iqkBtNW5phrhUU7wngSIprKh_sTaqwBrkCdmWpKKF_0fuFz0JowuCPobwS_XAafK3pL-gCTrNms30r8thhFBG7BOcHB5tnQ_XhEO_7CjuHCxEDYXp1gEO9_GWyFMMNEiHsO36lI6c8I-VcV3bztLl8iE8\/s320\/Screenshot%202023-09-05%20at%201.10.51%20PM.png\" alt=\"\" style=\"width:224px;height:auto\"\/><\/figure>\n\n\n\n<p>Click on Save and Run<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg4rGo0uuN8Sz-WMbfgy3MNhdwf3v5UdwI4LqZCYQLoK_Z4kOZbIB1_Ht4uE-ZFmkBYtCcBOqd8OQXu6V36zRkZZ7Nzq0Oh2NhYksGCDISlo8cNxz-k8JKmK8UPVWdfD6mytj5UjY0Wt78TThPezrv-Mvs1Ia4TddlG_LbAlltSZGT2agts_7ZOtT-zZNY\/s320\/Screenshot%202023-09-05%20at%201.15.49%20PM.png\" alt=\"\" style=\"width:473px;height:auto\"\/><\/figure>\n\n\n\n<p>This confirms that pipeline have successfully created resources in Azure cloud. You can login to Azure portal to see the resources &#8211; app service plan and web app.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhMXqd6gZfQFRsmFby63cxGNVHQBhiGbhA52JDlpZhzFfDgFl_Dn8VE_u22b63FBPe9aDEy1xfLYYOdXJhgJ6GPL_-krULmKn4AtPe4jycMw8JUH0e-HecAp-pD5BvghTzeKMjKwnp8AFmfcR4ijLaPDlCE3RyojrvrL1ZMOQBHSXLQ47rcR-Bu3TBPtdU\/s320\/Screenshot%202023-09-05%20at%201.17.50%20PM.png\" alt=\"\" style=\"width:485px;height:auto\"\/><\/figure>\n\n\n\n<p>You can also verify terraform state info which has resources entry for all the resources created<\/p>\n\n\n\n<p>Click on Containers,&nbsp;mytfstatecontainer<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjpM3uxCQrdzVa49x3Q68PJ82pj-cedxiEyt4SxAAyylATW_dPbS1nLopRRdNjCeY5cQ4uEMVL4khStrMrA8Ao-igJxux9pmbMWOt9HMaFoBfPKpVBbrDZn1NJFgm5kv640RZ9eVtjxdA0yLLsLyGCLAtxbUfGB_6B5zCdEO8E7yEcc_3OIpp8NhkZXqIo\/s320\/Screenshot%202023-09-06%20at%2012.34.28%20PM.png\" alt=\"\" style=\"width:457px;height:auto\"\/><\/figure>\n\n\n\n<p>Click on terraform.tfstate<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg0NP_fV3kcrpMpO_ykUBjnn6ReEuMvM0JCu6n7ov8iXqZ2ywLsS89M60tm8VQeLp_s93f25Gnj4xo_Vt5kU1OHK3ZWDrBcidpsxPxuJvEFf-aXohFk57brBJsZAW6BnP2GsYKdPROuTWK6j2-1qgDfvSAu4YuYM86WQsbB48s9tPFPD_-hKZUaZkcDSU4\/s320\/Screenshot%202023-09-06%20at%2012.36.23%20PM.png\" alt=\"\" style=\"width:376px;height:auto\"\/><\/figure>\n\n\n\n<p>Click on Edit to view the content of terraform state file<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEh1W4c59qqm6b311_0j8oGRzr2WjWzFGX0TPUHgNR8cZrpShCYZlMBUHK_jQcWeryLciq2pX7hIZexDG1SOUThTFTpREsnYpUsUphCWzAxzXFexiFEbzWB3irjgQEmx_VH6DHsOOdToqIN__g7sHFCO0OI7Sqhw6Km5ZWqNVOwosf0y4-8L4sc-YqY-KQE\/s320\/Screenshot%202023-09-06%20at%2012.36.38%20PM.png\" alt=\"\" style=\"width:536px;height:auto\"\/><\/figure>\n\n\n\n<p><strong><u>Clean up resources created in Azure using the pipeline &#8211; destroy command<\/u><\/strong><\/p>\n\n\n\n<p>change the command to destroy instead of apply from the drop down<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjgIYEli2KyuK_vWnBLylKQAkAu7XV3_UUvlAFQXYB3ykgLZ1wYZdsnSc2XXzx8LlAX1H0pUqhgW5-6rL61-FIOmG2MgbyNqZkmQ6c1vM3OnCnukQZd0ykZSPpPesj6XpeQP05GVjnToR3DLGP-2rIk33K_fvfFCf8RLLMG1t-zK8PhLtpiu-iaILQfLi0\/s320\/Screenshot%202023-09-06%20at%2012.39.37%20PM.png\" alt=\"\" style=\"width:545px;height:auto\"\/><\/figure>\n\n\n\n<p>You can either add a new task for destroy or modify to destroy from apply in the existing task.<\/p>\n\n\n\n<p>Now save the pipeline and run the pipeline. check the output of destroy task<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEggtP8cdN-JpoQd-G8bfQCjSr77mzNeC0ONYVXYbDXKb5V5L4nxeRqzlnMM16Pcm3bDHdZsrWPJx8a_BFQRnV9mgGgOaCOZdpGNeTD22BWTOiJ1x6z_QWd1hBwf87tabDdGg6Ma5UfA_GXMfTAOvLSL-kx5lUU5musXFU3joEwLzRmi3fsjqyppZpXYkew\/s320\/Screenshot%202023-09-06%20at%2012.44.35%20PM.png\" alt=\"\" style=\"width:398px;height:auto\"\/><\/figure>\n\n\n\n<p>Check terraform.tfstate file after destroy.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjD0vCcDvFGKBlfSrsITNRMltCl4o1qNVK7rFn8-Jsi9ROxkt6PovURdoPMJRrPh0E2mxfl38EdJtMMEghZuMfuVJzXaZ5QJcZKDzFqpPeei3N4ZEYNMkXqJRarL8i8-E4Vbsdqidqg90W0H-09wGpb8_VzkkWKgnhyzO98W0bFA4HgyCM2CBAWqJ3X8Tk\/s320\/Screenshot%202023-09-06%20at%2012.45.58%20PM.png\" alt=\"\" style=\"width:459px;height:auto\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Automating infrastructure setup in Azure Cloud using Terraform and Azure DevOps is a powerful approach to managing your infrastructure as code (IaC). This allows you to define and manage your Azure resources programmatically, version control your infrastructure configurations, and automate the deployment process.&nbsp; We will be creating a Java based WebApp(app service) in Azure cloud [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69,35,77,84],"tags":[],"class_list":["post-3414","post","type-post","status-publish","format-standard","hentry","category-azure","category-cloud-computing","category-devops","category-terraform"],"_links":{"self":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts\/3414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3414"}],"version-history":[{"count":3,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts\/3414\/revisions"}],"predecessor-version":[{"id":3417,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts\/3414\/revisions\/3417"}],"wp:attachment":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}