{"id":1296,"date":"2026-05-07T23:18:16","date_gmt":"2026-05-07T23:18:16","guid":{"rendered":"https:\/\/zulfikar.co.uk\/blog\/?p=1296"},"modified":"2026-05-08T12:28:35","modified_gmt":"2026-05-08T12:28:35","slug":"vibe-code-your-landing-zone","status":"publish","type":"post","link":"https:\/\/zulfikar.co.uk\/blog\/vibe-code-your-landing-zone\/","title":{"rendered":"Vibe Code your Landing Zone!"},"content":{"rendered":"\n<p>What if I told you there&#8217;s an even easier way to deploy your Landing Zone (LZ)<\/p>\n\n\n\n<p>If like me your preferred IaC language is Terraform you&#8217;ll be used to hand crafting the scripts &amp; modules to deploy your LZ elements as per the required design. It&#8217;s an intensive effort even for a moderately sized deployment.<\/p>\n\n\n\n<p>Now there&#8217;s an easier way. You can simply describe what you need (your design), using well written &amp; accurate prompts and GitHub CoPilot (GHCP) will build out your terraform code\/modules to match this design:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to get started prompting Landing Zones?<\/h2>\n\n\n\n<p>Fire up VS Code<\/p>\n\n\n\n<p>We&#8217;re going to assume you already have:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Github repo setup for your LZ<\/li>\n\n\n\n<li>VS Code is logged into the same Github account your new LZ is in<\/li>\n\n\n\n<li>VS Code configured with required extensions (HashiCorp Terraform, Microsoft Terraform, Azure Resources)<\/li>\n<\/ul>\n\n\n\n<p>GHCP is now integrated with VS Code &#8211; update your version of VS Code if possible otherwise install the GHCP extensions<\/p>\n\n\n\n<p>Witin VS Code use Ctrl + Alt + I to launch the GHCP prompting window, it should look like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-prompting-window.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"302\" height=\"196\" src=\"https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-prompting-window.jpg\" alt=\"\" class=\"wp-image-1297\" srcset=\"https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-prompting-window.jpg 302w, https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-prompting-window-300x195.jpg 300w\" sizes=\"auto, (max-width: 302px) 100vw, 302px\" \/><\/a><\/figure>\n\n\n\n<p>Locally within VS Code make sure you have a folder structure setup for your LZ<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>My_Landing_Zone\n-----------modules\/\n           -------management\n           -------connectivity\n           -------identity\n           -------subscriptions\n-----------environments\/\n-----------------------dev\/\n-----------.github\/\n-----------------------copilot-instructions.md\/\n-----------main.tf\n-----------variables.tf\n-----------outputs.tf\n-----------terraform.tfvars<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Let&#8217;s Prompt<\/h2>\n\n\n\n<p>Ok, with everything ready here&#8217;s the initial prompt:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-promp1-scaffold.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"496\" height=\"320\" src=\"https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-promp1-scaffold.jpg\" alt=\"\" class=\"wp-image-1304\" srcset=\"https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-promp1-scaffold.jpg 496w, https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-promp1-scaffold-300x194.jpg 300w\" sizes=\"auto, (max-width: 496px) 100vw, 496px\" \/><\/a><\/figure>\n\n\n\n<p>GHCP does it&#8217;s thing:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-promp1-scaffold-response.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"498\" height=\"461\" src=\"https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-promp1-scaffold-response.jpg\" alt=\"\" class=\"wp-image-1305\" srcset=\"https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-promp1-scaffold-response.jpg 498w, https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vs-code-github-copilot-promp1-scaffold-response-300x278.jpg 300w\" sizes=\"auto, (max-width: 498px) 100vw, 498px\" \/><\/a><\/figure>\n\n\n\n<p>This creates your initial LZ configuration, we&#8217;ve still got to deploy to Azure<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What if I told you there&#8217;s an even easier way to deploy your Landing Zone (LZ) If like me your preferred IaC language is Terraform you&#8217;ll be used to hand crafting the scripts &amp; modules to deploy your LZ elements as per the required design. It&#8217;s an intensive effort even for a moderately sized deployment. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1299,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"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":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[445,10],"tags":[274,702,695,696,693,700,698,703,694,699,697,701],"class_list":["post-1296","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-tfn","tag-azure","tag-firewall","tag-github","tag-github-copilot","tag-landing-zones","tag-modules","tag-prompting","tag-subnet","tag-subscription-vending","tag-terraform","tag-vibe-code","tag-vnet"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/zulfikar.co.uk\/blog\/wp-content\/uploads\/2026\/05\/vibe-code-landing-zones-featured-image.png","jetpack_shortlink":"https:\/\/wp.me\/p502c8-kU","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/posts\/1296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/comments?post=1296"}],"version-history":[{"count":3,"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/posts\/1296\/revisions"}],"predecessor-version":[{"id":1306,"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/posts\/1296\/revisions\/1306"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/media\/1299"}],"wp:attachment":[{"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/media?parent=1296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/categories?post=1296"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zulfikar.co.uk\/blog\/wp-json\/wp\/v2\/tags?post=1296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}