<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Terrafrom &#8211; achraf ben alaya</title>
	<atom:link href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/category/terrafrom/feed/" rel="self" type="application/rss+xml" />
	<link>https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net</link>
	<description>Tech Blog By Achraf Ben Alaya</description>
	<lastBuildDate>Tue, 23 Dec 2025 13:12:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.5</generator>

<image>
	<url>/wp-content/uploads/2022/02/cropped-me-scaled-1-32x32.jpeg</url>
	<title>Terrafrom &#8211; achraf ben alaya</title>
	<link>https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">189072172</site>	<item>
		<title>From Manual Terraform to AI-Assisted DevOps: Building an Azure Container Platform (Part 1)</title>
		<link>https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2025/12/23/from-manual-terraform-to-ai-assisted-devops-building-an-azure-container-platform-part-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=from-manual-terraform-to-ai-assisted-devops-building-an-azure-container-platform-part-1</link>
					<comments>https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2025/12/23/from-manual-terraform-to-ai-assisted-devops-building-an-azure-container-platform-part-1/#respond</comments>
		
		<dc:creator><![CDATA[achraf]]></dc:creator>
		<pubDate>Tue, 23 Dec 2025 13:09:45 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Terrafrom]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[terraform]]></category>
		<guid isPermaLink="false">https://achrafbenalaya.com/?p=2399</guid>

					<description><![CDATA[Introduction Infrastructure as Code (IaC) has become the backbone of modern cloud architectures. Terraform, combined with Azure services, enables us to build scalable, secure, and reproducible platforms. In this blog series, I’m starting from a real Terraform project that I initially built by hand, without AI assistance. This first part focuses on laying a solid [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h4 class="wp-block-heading">Introduction</h4>



<p>Infrastructure as Code (IaC) has become the backbone of modern cloud architectures. Terraform, combined with Azure services, enables us to build scalable, secure, and reproducible platforms.</p>



<p>In this blog series, I’m starting from a <strong>real Terraform project that I initially built by hand</strong>, without AI assistance. This first part focuses on <strong>laying a solid foundation</strong>: a production-oriented Azure container infrastructure.</p>



<p>In the next parts, things get more interesting <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br>We’ll <strong>enhance this infrastructure using GitHub Copilot</strong>, exploring:</p>



<ul class="wp-block-list">
<li>Chat mode</li>



<li>Custom instructions</li>



<li>Prompt-driven infrastructure evolution</li>
</ul>



<p>This repository will be <strong>open-source</strong>, and anyone is welcome to contribute, learn, or suggest improvements.</p>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Goal of This Series</h2>



<p>This series has three main objectives:</p>



<ol class="wp-block-list">
<li><strong>Build a real-world Azure container architecture</strong></li>



<li><strong>Demonstrate Terraform best practices incrementally</strong></li>



<li><strong>Show how GitHub Copilot can assist cloud engineers in evolving infrastructure</strong></li>
</ol>



<p>Each article will introduce <strong>one logical improvement</strong>, keeping things practical and easy to follow.</p>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f3d7.png" alt="🏗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Architecture – What We’re Building (Part 1)</h2>



<p>In this first iteration, we deploy a <strong>public-facing containerized application</strong> with secure networking and observability.</p>



<h3 class="wp-block-heading">Core Components</h3>



<p>The current Terraform setup includes:</p>



<ul class="wp-block-list">
<li><strong>Azure Application Gateway (Public)</strong>
<ul class="wp-block-list">
<li>Acts as the entry point</li>



<li>Handles HTTP/HTTPS traffic</li>
</ul>
</li>



<li><strong>Azure Container Apps Environment</strong></li>



<li><strong>Azure Container App</strong>
<ul class="wp-block-list">
<li>Hosts the main application</li>
</ul>
</li>



<li><strong>Azure Log Analytics Workspace</strong>
<ul class="wp-block-list">
<li>Centralized logs and diagnostics</li>
</ul>
</li>



<li><strong>Virtual Network (VNet)</strong></li>



<li><strong>Network Security Groups (NSGs)</strong>
<ul class="wp-block-list">
<li>Network-level security controls</li>
</ul>
</li>



<li><strong>Private DNS Zone</strong>
<ul class="wp-block-list">
<li>Internal name resolution between services</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="465" src="/wp-content/uploads/2025/12/image-1024x465.png" alt="" class="wp-image-2408" srcset="/wp-content/uploads/2025/12/image-1024x465.png 1024w, /wp-content/uploads/2025/12/image-300x136.png 300w, /wp-content/uploads/2025/12/image-768x349.png 768w, /wp-content/uploads/2025/12/image-1536x698.png 1536w, /wp-content/uploads/2025/12/image-750x341.png 750w, /wp-content/uploads/2025/12/image-1140x518.png 1140w, /wp-content/uploads/2025/12/image.png 1715w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="716" height="1024" src="/wp-content/uploads/2025/12/rg-internal-aca-demo-716x1024.png" alt="" class="wp-image-2409" srcset="/wp-content/uploads/2025/12/rg-internal-aca-demo-716x1024.png 716w, /wp-content/uploads/2025/12/rg-internal-aca-demo-210x300.png 210w, /wp-content/uploads/2025/12/rg-internal-aca-demo-768x1098.png 768w, /wp-content/uploads/2025/12/rg-internal-aca-demo-1074x1536.png 1074w, /wp-content/uploads/2025/12/rg-internal-aca-demo-1432x2048.png 1432w, /wp-content/uploads/2025/12/rg-internal-aca-demo-750x1072.png 750w, /wp-content/uploads/2025/12/rg-internal-aca-demo-1140x1630.png 1140w" sizes="(max-width: 716px) 100vw, 716px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="375" src="/wp-content/uploads/2025/12/image-1-1024x375.png" alt="" class="wp-image-2411" srcset="/wp-content/uploads/2025/12/image-1-1024x375.png 1024w, /wp-content/uploads/2025/12/image-1-300x110.png 300w, /wp-content/uploads/2025/12/image-1-768x281.png 768w, /wp-content/uploads/2025/12/image-1-1536x563.png 1536w, /wp-content/uploads/2025/12/image-1-750x275.png 750w, /wp-content/uploads/2025/12/image-1-1140x418.png 1140w, /wp-content/uploads/2025/12/image-1.png 1769w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><br><br>This design already follows <strong>production-grade principles</strong>:</p>



<ul class="wp-block-list">
<li>Network isolation</li>



<li>Centralized logging</li>



<li>Clear separation of responsibilities</li>
</ul>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f9f1.png" alt="🧱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why Start Without Copilot?</h3>



<p>For this first blog post, <strong>everything was written manually</strong>.</p>



<p>Why?</p>



<p>Because before using AI effectively, it’s important to:</p>



<ul class="wp-block-list">
<li>Understand the architecture</li>



<li>Control the Terraform structure</li>



<li>Define clear boundaries and responsibilities</li>
</ul>



<p>This baseline will allow us to <strong>objectively measure Copilot’s value</strong> in the next parts:</p>



<ul class="wp-block-list">
<li>Does it accelerate development?</li>



<li>Does it suggest better patterns?</li>



<li>Does it catch errors or improve readability?</li>
</ul>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f51c.png" alt="🔜" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What’s Coming Next</h3>



<p>In <strong>Part 2</strong>, we’ll enhance this platform by:</p>



<ul class="wp-block-list">
<li>Adding <strong>Azure Container Registry (ACR)</strong></li>



<li>Introducing a <strong>second Container App</strong> acting as a backend API</li>



<li>Connecting frontend <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> backend securely</li>



<li><strong>Using GitHub Copilot Chat</strong> to guide Terraform changes</li>
</ul>



<p>Later parts will include:</p>



<ul class="wp-block-list">
<li>Copilot custom instructions</li>



<li>Prompt files</li>



<li>Security improvements</li>



<li>CI/CD with GitHub Actions</li>



<li>Community-driven enhancements</li>
</ul>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f91d.png" alt="🤝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Open Source &amp; Contributions</h3>



<p>This project is <strong>100% open-source</strong>.</p>



<p>If you want to:</p>



<ul class="wp-block-list">
<li>Learn Terraform on Azure</li>



<li>Experiment with GitHub Copilot</li>



<li>Contribute improvements or ideas<br><br>Url  : <a href="https://github.com/achrafbenalaya/azure-workshop-aca">achrafbenalaya/azure-workshop-aca</a></li>
</ul>



<p>You’re more than welcome to join.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Conclusion</h3>



<p>This first part sets the foundation: a clean, functional Azure container platform built with Terraform.</p>



<p>From here on, we’ll <strong>iterate, enhance, and challenge our own work</strong>, with GitHub Copilot as a real teammate not a magic button.</p>



<p>Stay tuned for <strong>Part 2</strong>, where AI enters the game <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f916.png" alt="🤖" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/15.0.3/72x72/2601.png" alt="☁" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br></p>



<p><br></p>
]]></content:encoded>
					
					<wfw:commentRss>https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2025/12/23/from-manual-terraform-to-ai-assisted-devops-building-an-azure-container-platform-part-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2399</post-id>	</item>
		<item>
		<title>Part 5-A : Using Azure DevOps, Automate Your CI/CD Pipeline and Your Deployments</title>
		<link>https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2023/04/17/part-5-a-using-azure-devops-automate-your-ci-cd-pipeline-and-your-deployments/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=part-5-a-using-azure-devops-automate-your-ci-cd-pipeline-and-your-deployments</link>
					<comments>https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2023/04/17/part-5-a-using-azure-devops-automate-your-ci-cd-pipeline-and-your-deployments/#comments</comments>
		
		<dc:creator><![CDATA[achraf]]></dc:creator>
		<pubDate>Mon, 17 Apr 2023 08:38:04 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Kubernetes Service (AKS)]]></category>
		<category><![CDATA[Terrafrom]]></category>
		<category><![CDATA[azure]]></category>
		<guid isPermaLink="false">https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/?p=1560</guid>

					<description><![CDATA[Hello, it&#8217;s been a month and a half since I last wrote about aks and azure. It&#8217;s been a very busy time for me, particularly since I moved into a new apartment. However, I&#8217;ll be posting once a week going forward. So let&#8217;s get going. In this series, we&#8217;ll learn how to set up our [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Hello, it&#8217;s been a month and a half since I last wrote about aks and azure. It&#8217;s been a very busy time for me, particularly since I moved into a new apartment. However, I&#8217;ll be posting once a week going forward.</p>
<p>So let&#8217;s get going.</p>
<p>In this series, we&#8217;ll learn how to set up our infrastructure using Azure and Azure DevOps. We&#8217;ll learn how to establish aks, acr, and all the resources we&#8217;ll need for our project, including the storage account and the service connection.</p>
<p>You can follow the instructions in this document to deploy our infra as code , as for deployment we will use a private agent dedicated to our organisation , this article will not cover that ,you can follow the instruction in this <a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2023/04/13/configuring-self-hosted-agent-in-azure-devops-pipeline/" target="_blank" rel="noopener"><strong>article</strong> </a>to see how to create a <a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2023/04/13/configuring-self-hosted-agent-in-azure-devops-pipeline/" target="_blank" rel="noopener"><strong>Self-hosted agent</strong></a> in azure and how to use it .</p>
<p>This article is a part of a series:</p>
<ol>
<li><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2022/11/16/how-to-setup-nginx-reverse-proxy-for-aspnet-core-apps-with-and-without-docker-compose/">Part 1 : How to setup nginx reverse proxy for aspnet core apps with and without Docker compose</a></li>
<li><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2022/11/20/how-to-setup-nginx-reverse-proxy-load-balancer-for-aspnet-core-apps-with-docker-and-azure-kubernetes-service-aks/">Part 2 :How to setup nginx reverse proxy &amp;&amp; load balancer for aspnet core apps with Docker and azure kubernetes service</a></li>
<li><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2022/11/24/how-to-configure-an-ingress-controller-using-tls-ssl-for-the-azure-kubernetes-service-aks/">Part 3 : How to configure an ingress controller using TLS/SSL for the Azure Kubernetes Service (AKS)</a></li>
<li><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2023/01/14/switch-from-dock…ntainer-registry/">Part 4 : switch to Azure Container Registry from Docker Hub</a></li>
<li><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2023/04/17/part-5-a-using-azure-devops-automate-your-ci-cd-pipeline-and-your-deployments/" target="_blank" rel="noopener">Part 5 (A-B) : Using Azure DevOps, Automate Your CI/CD Pipeline and Your Deployments</a></li>
<li>Part 6 : Using Github, Automate Your CI/CD Pipeline and Your Deployments</li>
<li>Part 7 : Possible methods to reduce your costAnd today we are at this part</li>
</ol>
<p><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2023/04/17/part-5-a-using-azure-devops-automate-your-ci-cd-pipeline-and-your-deployments/" target="_blank" rel="noopener">Part 5 &#8211; A : Creating Storage account and setting up service connection with azure DevOps</a></p>
<p>Part 5- B : Creating CI/CD pipeline</p>
<h2><strong>Part 1 : Creating The Storage account<br />
</strong></h2>
<p>Setting up the storage account for our infrastructure is so important detailed informations in this article <a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2021/06/01/devops-deploy-infrastructure-using-terraform-and-azure-devops-pipelines/"> DevOps : Deploy infrastructure using Terraform and Azure DevOps pipelines</a></p>
<pre class="EnlighterJSRAW" data-enlighter-language="powershell"># Set the Azure subscription you want to use if you have multiple subscriptions
Set-AzContext -SubscriptionId &lt;SubscriptionId&gt;

&lt;-----------------------------------------------------------------------------------------------------&gt;
# Set the resource group properties name and location
$rgName = "azure-loves-terraform-2023"
$location = "francecentral"

&lt;-----------------------------------------------------------------------------------------------------&gt;
# Create the resource group
New-AzResourceGroup -Name $rgName -Location $location

&lt;-----------------------------------------------------------------------------------------------------&gt;
#Create Storage account


$location = "francecentral"  
$rgName = "azure-loves-terraform-2023"  
$accountName = "mystorageaccount2023"

$st = New-AzStorageAccount -ResourceGroupName $rgName -Name $accountName `
    -Location $location -SkuName Standard_GRS -AccessTier Hot `
    -Kind StorageV2 -AllowCrossTenantReplication $false `
    -AllowBlobPublicAccess $false -PublicNetworkAccess Disabled `
    -RequireInfrastructureEncryption -MinimumTlsVersion TLS1_2

# Enable containers soft delete :  retention of 60 days.
Enable-AzStorageContainerDeleteRetentionPolicy -ResourceGroupName $rgName `
    -StorageAccountName $accountName `
    -RetentionDays 60

# Enable blob soft delete : retention of 60 days.
Enable-AzStorageBlobDeleteRetentionPolicy -ResourceGroupName $rgName `
    -StorageAccountName $accountName `
    -RetentionDays 60

# Enable change feed and versioning .
Update-AzStorageBlobServiceProperty -ResourceGroupName $rgName `
    -StorageAccountName $accountName `
    -EnableChangeFeed $true `
    -ChangeFeedRetentionInDays 60 `
    -IsVersioningEnabled $true

# Enable point-in-time restore with a retention period of 59 days.
# The retention period for point-in-time restore must be at least one day less than that set for soft delete.
Enable-AzStorageBlobRestorePolicy -ResourceGroupName $rgName `
    -StorageAccountName $accountName `
    -RestoreDays 59

# View the service settings.
Get-AzStorageBlobServiceProperty -ResourceGroupName $rgName `
    -StorageAccountName $accountName</pre>
<p>and we will end up by having a storage account like this :</p>
<p><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/1storageaccount.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1562" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/1storageaccount.png" alt="" width="1659" height="801" srcset="/wp-content/uploads/2023/04/1storageaccount.png 1659w, /wp-content/uploads/2023/04/1storageaccount-300x145.png 300w, /wp-content/uploads/2023/04/1storageaccount-1024x494.png 1024w, /wp-content/uploads/2023/04/1storageaccount-768x371.png 768w, /wp-content/uploads/2023/04/1storageaccount-1536x742.png 1536w, /wp-content/uploads/2023/04/1storageaccount-750x362.png 750w, /wp-content/uploads/2023/04/1storageaccount-1140x550.png 1140w" sizes="(max-width: 1659px) 100vw, 1659px" /></a><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/3storageacount.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1564" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/3storageacount.png" alt="" width="1375" height="838" srcset="/wp-content/uploads/2023/04/3storageacount.png 1375w, /wp-content/uploads/2023/04/3storageacount-300x183.png 300w, /wp-content/uploads/2023/04/3storageacount-1024x624.png 1024w, /wp-content/uploads/2023/04/3storageacount-768x468.png 768w, /wp-content/uploads/2023/04/3storageacount-750x457.png 750w, /wp-content/uploads/2023/04/3storageacount-1140x695.png 1140w" sizes="(max-width: 1375px) 100vw, 1375px" /></a></p>
<p>As you can see, a few configurations have been made up to safeguard and restore our storage account in the event of a malfunction.</p>
<p>for that we have enabled</p>
<ul>
<li>Enable point-in-time restore for containers :  in order to restore one or more containers to an earlier state .</li>
<li>Enable soft delete for blobs : in order   to recover blobs that were previously marked for deletion, including blobs that were overwritten .</li>
<li>Enable soft delete for containers :  in order to ecover containers that were previously marked for deletion .</li>
<li>Enable versioning for blobs :  to automatically maintain previous versions of your blobs .</li>
</ul>
<p><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/2storageaccount.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1563" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/2storageaccount.png" alt="" width="1382" height="642" srcset="/wp-content/uploads/2023/04/2storageaccount.png 1382w, /wp-content/uploads/2023/04/2storageaccount-300x139.png 300w, /wp-content/uploads/2023/04/2storageaccount-1024x476.png 1024w, /wp-content/uploads/2023/04/2storageaccount-768x357.png 768w, /wp-content/uploads/2023/04/2storageaccount-750x348.png 750w, /wp-content/uploads/2023/04/2storageaccount-1140x530.png 1140w" sizes="(max-width: 1382px) 100vw, 1382px" /></a>As you can see, we have disabled access to this storage account because, to be protected, it should only be accessible from the <strong>Self-hosted agent</strong> that we will establish a private endpoint with it.</p>
<p><strong>Setting Private Endpoint :</strong></p>
<p><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/1-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1608" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/1-1.png" alt="" width="1807" height="786" srcset="/wp-content/uploads/2023/04/1-1.png 1807w, /wp-content/uploads/2023/04/1-1-300x130.png 300w, /wp-content/uploads/2023/04/1-1-1024x445.png 1024w, /wp-content/uploads/2023/04/1-1-768x334.png 768w, /wp-content/uploads/2023/04/1-1-1536x668.png 1536w, /wp-content/uploads/2023/04/1-1-750x326.png 750w, /wp-content/uploads/2023/04/1-1-1140x496.png 1140w" sizes="(max-width: 1807px) 100vw, 1807px" /></a> <a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/2-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1609" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/2-1.png" alt="" width="1138" height="731" srcset="/wp-content/uploads/2023/04/2-1.png 1138w, /wp-content/uploads/2023/04/2-1-300x193.png 300w, /wp-content/uploads/2023/04/2-1-1024x658.png 1024w, /wp-content/uploads/2023/04/2-1-768x493.png 768w, /wp-content/uploads/2023/04/2-1-750x482.png 750w" sizes="(max-width: 1138px) 100vw, 1138px" /></a> <a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/3-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1610" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/3-1.png" alt="" width="1454" height="944" srcset="/wp-content/uploads/2023/04/3-1.png 1454w, /wp-content/uploads/2023/04/3-1-300x195.png 300w, /wp-content/uploads/2023/04/3-1-1024x665.png 1024w, /wp-content/uploads/2023/04/3-1-768x499.png 768w, /wp-content/uploads/2023/04/3-1-750x487.png 750w, /wp-content/uploads/2023/04/3-1-1140x740.png 1140w" sizes="(max-width: 1454px) 100vw, 1454px" /></a> <a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/4-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1611" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/4-1.png" alt="" width="1345" height="590" srcset="/wp-content/uploads/2023/04/4-1.png 1345w, /wp-content/uploads/2023/04/4-1-300x132.png 300w, /wp-content/uploads/2023/04/4-1-1024x449.png 1024w, /wp-content/uploads/2023/04/4-1-768x337.png 768w, /wp-content/uploads/2023/04/4-1-750x329.png 750w, /wp-content/uploads/2023/04/4-1-1140x500.png 1140w" sizes="(max-width: 1345px) 100vw, 1345px" /></a></p>
<p>This storage mainly will contain the tfsate for our Terraform .</p>
<p>We never know when we&#8217;ll need in-depth diagnostic and auditing information for the resources we&#8217;ve made, so I also advise turning on &#8220;Diagnostic settings&#8221; and sending all logs to Log Analytics workspace and archiving to a storage account.</p>
<h2><strong>Part 2: Create application registration</strong></h2>
<p>We must authorize Azure DevOps to deploy to the resource group we&#8217;ve established (azure-loves-terraform-2023) through a service connection we&#8217;re going to set up.</p>
<p>First thing we need to create an &#8220;App registrations&#8221;</p>
<p><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/4-spn.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1567" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/4-spn.png" alt="" width="1553" height="720" srcset="/wp-content/uploads/2023/04/4-spn.png 1553w, /wp-content/uploads/2023/04/4-spn-300x139.png 300w, /wp-content/uploads/2023/04/4-spn-1024x475.png 1024w, /wp-content/uploads/2023/04/4-spn-768x356.png 768w, /wp-content/uploads/2023/04/4-spn-1536x712.png 1536w, /wp-content/uploads/2023/04/4-spn-750x348.png 750w, /wp-content/uploads/2023/04/4-spn-1140x529.png 1140w" sizes="(max-width: 1553px) 100vw, 1553px" /></a></p>
<p>and we need one more thing to do before we set up azure DevOps , is to create &#8220;Certificates &amp; secrets&#8221;  (do not forgot to save the value because we are going to use it later )</p>
<p><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/6-spn.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1568" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/6-spn.png" alt="" width="879" height="702" srcset="/wp-content/uploads/2023/04/6-spn.png 879w, /wp-content/uploads/2023/04/6-spn-300x240.png 300w, /wp-content/uploads/2023/04/6-spn-768x613.png 768w, /wp-content/uploads/2023/04/6-spn-750x599.png 750w" sizes="(max-width: 879px) 100vw, 879px" /></a>Before moving on to Azure DevOps, there is still one more stage in which we will grant access control to the application we have created as the owner of our resource group (in other circumstances, I grant Contributor Role).</p>
<p><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/7-spn.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1569" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/7-spn.png" alt="" width="577" height="80" srcset="/wp-content/uploads/2023/04/7-spn.png 577w, /wp-content/uploads/2023/04/7-spn-300x42.png 300w" sizes="(max-width: 577px) 100vw, 577px" /></a></p>
<p>Now let&#8217;s setup Azure DevOps .</p>
<h2><strong>Part 3 : </strong><strong>Create a service connection</strong></h2>
<p>First lets understand this ,a &#8220;Service Connection&#8221; represent a Service Principal in Azure AD,an identity which uses Headless authentication (think of it as a user who have some rights to do in a certain resources ) .</p>
<p><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/8-spn.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1570" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/8-spn.png" alt="" width="1848" height="882" srcset="/wp-content/uploads/2023/04/8-spn.png 1848w, /wp-content/uploads/2023/04/8-spn-300x143.png 300w, /wp-content/uploads/2023/04/8-spn-1024x489.png 1024w, /wp-content/uploads/2023/04/8-spn-768x367.png 768w, /wp-content/uploads/2023/04/8-spn-1536x733.png 1536w, /wp-content/uploads/2023/04/8-spn-750x358.png 750w, /wp-content/uploads/2023/04/8-spn-1140x544.png 1140w" sizes="(max-width: 1848px) 100vw, 1848px" /></a></p>
<p><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/9-spn.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1571" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/9-spn.png" alt="" width="380" height="908" srcset="/wp-content/uploads/2023/04/9-spn.png 380w, /wp-content/uploads/2023/04/9-spn-126x300.png 126w" sizes="(max-width: 380px) 100vw, 380px" /></a><a href="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/10end.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1574" src="https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/wp-content/uploads/2023/04/10end.png" alt="" width="351" height="847" srcset="/wp-content/uploads/2023/04/10end.png 351w, /wp-content/uploads/2023/04/10end-124x300.png 124w" sizes="(max-width: 351px) 100vw, 351px" /></a></p>
<p>&nbsp;</p>
<p>After you have entered all the necessary information, click Verify to check that the setup is correct. When you see Verification Succeed, click Save, and you are ready to go.</p>
<p>Now with this , the first part is set and ready , in the next part we will create the pipeline and deploy our aks .</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://achrafbenalaya-ekgvbjdjgta4b4hz.francecentral-01.azurewebsites.net/2023/04/17/part-5-a-using-azure-devops-automate-your-ci-cd-pipeline-and-your-deployments/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1560</post-id>	</item>
	</channel>
</rss>
