{"id":12334,"date":"2022-11-15T12:37:28","date_gmt":"2022-11-15T07:07:28","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=12334"},"modified":"2022-11-15T12:37:28","modified_gmt":"2022-11-15T07:07:28","slug":"active-active-infrastructure-using-terraform-and-jenkins-on-microsoft-azure","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2022\/11\/15\/active-active-infrastructure-using-terraform-and-jenkins-on-microsoft-azure\/","title":{"rendered":"Active-Active Infrastructure using Terraform and Jenkins on Microsoft Azure"},"content":{"rendered":"\n<p><strong>In this blog, we will create an active-active infrastructure on Microsoft Azure using Terraform and Jenkins<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Prime Reasons to have an active-active set-up of your infrastructure<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Disaster Recovery:<\/strong><\/h4>\n\n\n\n<p>Disaster recovery (DR)&nbsp;is an organization\u2019s method of regaining access and functionality to its IT infrastructure after events like a natural disaster, cyber attack, or even business disruptions just like during the COVID-19 pandemic.<\/p>\n\n\n\n<ul>\n<li> <strong>Ensure business resilience<\/strong><br> No matter what happens, a good DR plan can ensure that the business can return to full operations rapidly, without losing data or transactions.<\/li>\n\n\n\n<li><strong>Maintain competitiveness<\/strong><br>Loyalty is rare and when a business goes offline, customers turn to competitors to get the goods or services they require. A DR plan prevents this.<\/li>\n\n\n\n<li><strong>Avoid data loss<\/strong><br>The longer a business\u2019s systems are down, the greater the risk that data will be lost. A robust DR plan minimizes this risk.<\/li>\n\n\n\n<li><strong>Maintain reputation<\/strong><br>A business that has trouble resuming operations after an outage can suffer brand damage. For that reason, a solid DR plan is critical.<\/li>\n<\/ul>\n\n\n\n<!--more-->\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Latency Improvement:<\/strong><\/h4>\n\n\n\n<p>The closer your backend origin is to end-users, the better the experience. Having your services deployed in multi-region can reduce latency, thus serving the content faster to users and having more return customers percentage on your service. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Cloud Platform Used:<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Azure:<\/strong><\/h5>\n\n\n\n<p>Azure is a cloud computing platform and an online portal that allows you to access and manage cloud services and resources provided by Microsoft. These services and resources include storing your data and transforming it, depending on your requirements. To get access to these resources and services, all you need to have is an active internet connection and the ability to connect to the Azure portal.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/ecjJwVCUG7wNcXCDLhyiRrklOtAH0UObYsv6l2HzBGBl6ruUMZ0kZroP4i1jMYZMfixfZw7bRoq0PPTUxv8Z64CWDW2UhRj1MZz1wE9VThY_Qxopw4ierkz5o0A3vzQkRQUN4_UaIs5c_Wn-7wtXAZ8NWXGL8AXb-4A1yojAG7eXxAYycai7UathQQ\" alt=\"\" width=\"498\" height=\"280\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/www.google.com\/url?sa=i&amp;url=https%3A%2F%2Fwww.indiamart.com%2Fproddetail%2Fmicrosoft-azure-18992991162.html&amp;psig=AOvVaw0fA5LMdCtzpBNYu2ZF-Bo-&amp;ust=1668489446806000&amp;source=images&amp;cd=vfe&amp;ved=0CBAQjRxqFwoTCNjan9n1rPsCFQAAAAAdAAAAABAI\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Tools used for Infrastructure Set-Up<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Jenkins:<\/strong><\/h5>\n\n\n\n<p>Jenkins is an open-source continuous integration\/continuous delivery and deployment (CI\/CD) automation software DevOps tool written in the Java programming language<\/p>\n\n\n\n<p>It is a free source that can handle any kind of build or continuous integration. You can integrate Jenkins with a number of testing and deployment technologies.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/IKkNyAp5SbZc2_x6crJ7qaNg03ewyzF4vCynemG14x_gjZaww-ukQR5ag29hjkHPmXWcXhumQNJ0hPQgv0mjPCuJmFwIfyZyVR0NlKYalppkCxGHTabZZoV93l-fqQJ5og8-X_zie1CF4c-tuy07pE-jOttwyBHT59e-RvxFAFEWN3vfv5AIgSM80w\" alt=\"\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/www.google.com\/imgres?imgurl=https%3A%2F%2Fwww.jenkins.io%2Fimages%2Flogo-title-opengraph.png&amp;imgrefurl=https%3A%2F%2Fwww.jenkins.io%2F&amp;tbnid=spB5bbliHmZt-M&amp;vet=12ahUKEwiH6MaM9qz7AhVLKbcAHbZRCRMQMygCegUIARDhAQ..i&amp;docid=w4Qq451zbOcZ8M&amp;w=796&amp;h=398&amp;itg=1&amp;q=Jenkins&amp;ved=2ahUKEwiH6MaM9qz7AhVLKbcAHbZRCRMQMygCegUIARDhAQ\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/figcaption><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Terraform:<\/strong><\/h5>\n\n\n\n<p>Terraform is an infrastructure as code (IaC) tool that allows you to build, change, and version infrastructure safely and efficiently. This includes both low-level components like compute instances, storage, and networking, as well as high-level components like DNS entries and SaaS features.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/YWTlYFJ2fh32tpXQ6K2sXeADZjcJXj3G18S3xR8tbvyZ8UXbWtxPNir_8WFE_f3eSOnjE-FypUwy0R0_go7bME_RbTsd2ZWyba5H02cNgL4JpAIQzzrzQoHLY5J6brXvld4KtLkfraln37EpF4qw7nsFOQXIAITMaYvxCA2Kjob4tabQRqvTzDPkuw\" alt=\"\" width=\"796\" height=\"398\" \/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/www.google.com\/url?sa=i&amp;url=https%3A%2F%2Fboxboat.com%2F2020%2F02%2F04%2Fwriting-a-custom-terraform-provider%2F&amp;psig=AOvVaw3HqaDVNdt03PN2sRwoF9IL&amp;ust=1668531338649000&amp;source=images&amp;cd=vfe&amp;ved=2ahUKEwju-5Tfka77AhUL2XMBHTzcAAoQr4kDegUIARD3AQ\" target=\"_blank\" rel=\"noreferrer noopener\">source<\/a><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Active-Active Infrastructure with Azure Cloud:<\/strong><\/h3>\n\n\n\n<p>The main purpose of this blog is to create a multi-region infrastructure on Azure, we will achieve this by using the multi-directory structure for our terraform code, like the one in the picture below:<\/p>\n\n\n\n<p><strong>Directory Structure of our Code:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/MmpEbcF5WuX5SkUjL_V3ZjVxmp3-ZKam5IJv41ft71RqX4aK134ZviDAnJfZ73SiSgw9zxROoxaa74j5nr1o4hkxlvtIOhWWrjFdyBv2WmVpeJ6WRj-XZ7Rp9wkzHIuOkLezjFyTh6lOrC4CSsXY3RzmwZ_uWopGW9WSULP_cgPztzf_irx2IFzhYA\" alt=\"\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Terraform and Jenkins Pipeline Code<\/strong><\/p>\n\n\n\n<p>For creating the infrastructure, we will use sample terraform code for multi-region deployment, this code contains all the required resources to provision a multi-site virtual machine and for creating the pipeline we will use the sample Jenkinsfile, which will create a pipeline for the terraform code, that takes to <strong>apply<\/strong> and<strong> destroy<\/strong> as input and runs the terraform code accordingly.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button aligncenter is-style-fill\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/shitunjayk\/active-active-setup\" target=\"_blank\" rel=\"noreferrer noopener\">sample Code<\/a><\/div>\n<\/div>\n\n\n\n<p><strong>Using the above sample terraform code, the following resources will be created<\/strong><\/p>\n\n\n\n<ul>\n<li>Resource Group<\/li>\n\n\n\n<li>Virtual Network<\/li>\n\n\n\n<li>Subnet<\/li>\n\n\n\n<li>Public IP<\/li>\n\n\n\n<li>Network Interface<\/li>\n\n\n\n<li>Security Group<\/li>\n\n\n\n<li>Virtual Machine<\/li>\n<\/ul>\n\n\n\n<p><strong>After running the Jenkins job (Jenkinsfile in sample code), our pipeline will look like this<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2022\/10\/screenshot-from-2022-10-26-15-56-20.png?w=1024\" alt=\"\" class=\"wp-image-12351\" width=\"800\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Once the pipeline is successful, we will be able to see the infrastructure deployed in multi-region on Azure Portal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion:<\/strong><\/h2>\n\n\n\n<p>This is one of the ways which can be used to deploy multi-region infrastructure using Jenkins and Terraform on Azure Cloud, if you need your infrastructure to be fault-tolerant, have low latency, grow user base, comply with data privacy laws and regulations, etc. then go for multi-region deployment as shown above.<\/p>\n\n\n\n<p><strong>Blog Pundits: <a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/shwetatyagiot\/\" target=\"_blank\">Shweta Tyagi<\/a><\/strong> and <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\">Sandeep Rawat<\/a><\/strong><\/p>\n\n\n\n<p><strong><a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Active-Active_Infrastructure_using_Terraform_and_Jenkins_on_Microsoft_Azure\" target=\"_blank\">OpsTree<\/a> is an End-to-End DevOps Solution Provider.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Active-Active_Infrastructure_using_Terraform_and_Jenkins_on_Microsoft_Azure\" target=\"_blank\" rel=\"noreferrer noopener\">Contact Us<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In this blog, we will create an active-active infrastructure on Microsoft Azure using Terraform and Jenkins. Prime Reasons to have an active-active set-up of your infrastructure Disaster Recovery: Disaster recovery (DR)&nbsp;is an organization\u2019s method of regaining access and functionality to its IT infrastructure after events like a natural disaster, cyber attack, or even business disruptions &hellip; <a href=\"https:\/\/opstree.com\/blog\/2022\/11\/15\/active-active-infrastructure-using-terraform-and-jenkins-on-microsoft-azure\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Active-Active Infrastructure using Terraform and Jenkins on Microsoft Azure&#8221;<\/span><\/a><\/p>\n","protected":false},"author":227487186,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[44070,768739308,676319247,768739299,12793557,4996032,3021235],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-3cW","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/12334"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/227487186"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=12334"}],"version-history":[{"count":24,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/12334\/revisions"}],"predecessor-version":[{"id":12462,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/12334\/revisions\/12462"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=12334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=12334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=12334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}