<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: M. Kipergil</title>
    <description>The latest articles on DEV Community by M. Kipergil (@kipergil).</description>
    <link>https://dev.to/kipergil</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F235235%2F7290d3b6-9074-42bc-aab2-032464d16f1f.jpeg</url>
      <title>DEV Community: M. Kipergil</title>
      <link>https://dev.to/kipergil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kipergil"/>
    <language>en</language>
    <item>
      <title>Things I wish I knew before working with Azure ARM Templates</title>
      <dc:creator>M. Kipergil</dc:creator>
      <pubDate>Mon, 31 Jan 2022 12:44:51 +0000</pubDate>
      <link>https://dev.to/kipergil/faq-for-arm-beginners-2lo6</link>
      <guid>https://dev.to/kipergil/faq-for-arm-beginners-2lo6</guid>
      <description>&lt;p&gt;Hey dev.to members, this is my first post here. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So please be gentle in your comments and don't hesitate to ask any question and please share your feedbacks below&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In my recent project, I had to use ARM templates in order to implement our CI/CD pipelines for our Azure resources.&lt;/p&gt;

&lt;p&gt;I roughly knew what an ARM template is and how it works. But I had never written any ARM template from scratch.&lt;/p&gt;

&lt;p&gt;When I had to deploy all of our Azure resources from scratch, &lt;br&gt;
I hit the wall very frequently and found myself trying to tackle with variety of issues almost in every step.&lt;/p&gt;

&lt;p&gt;During these times, I googled a lot, and came up with brilliant bloggers and content creators. Thanks to their contributions, I found most of the answers under different blogs, websites, forums etc.  &lt;/p&gt;

&lt;p&gt;Then, I decided to curate my first dev.to article, just to keep a reference for myself and other team members.&lt;/p&gt;

&lt;p&gt;I structured this post with various questions and their answers, which you can refer to whenever you need. I also added the URLs original contents as a reference. All of them are worth to read to get more details on such topics.&lt;/p&gt;

&lt;p&gt;You will find useful code snippets, markups, utility functions and lots of brilliant resources below in one place which i wish I knew before/during working with ARM Templates.&lt;/p&gt;

&lt;p&gt;Hope it will be useful for all of us.&lt;br&gt;
Thanks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One last tip:&lt;/strong&gt;&lt;br&gt;
If you have just started learning ARM templates, I'd recommend you to take a look into &lt;a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview?tabs=bicep"&gt;Bicep&lt;/a&gt; which seems way much easier/better/stronger compared to ARM template syntax. &lt;br&gt;
You can check this online playground tool to quickly understand what Bicep Lang is and and how it works. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://aka.ms/bicepdemo"&gt;https://aka.ms/bicepdemo&lt;/a&gt;&lt;br&gt;
...&lt;/p&gt;

&lt;h3&gt;
  
  
  To give you a bit of context, let me briefly explain our release pipeline approach.
&lt;/h3&gt;

&lt;p&gt;There are 5 environments :&lt;br&gt;&lt;br&gt;
DEV, SIT, UAT, PROD, DR &lt;/p&gt;

&lt;p&gt;We have 1 arm template file for each resource and 1 parameter file per environment. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File structure for a resource looks like below :&lt;/strong&gt; &lt;br&gt;
template.json&lt;br&gt;
template-sit.parameters.json&lt;br&gt;
template-uat.parameters.json&lt;br&gt;
template-prod.parameters.json&lt;br&gt;
template-dr.parameters.json&lt;/p&gt;

&lt;p&gt;For each environment, we created separate AzureDevops build&amp;amp;release pipelines, which are responsible to build and deploy the resources listed below. It shows the resources and the dependent resource numbers in parenthesis.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[1] ResourceGroup ( no dependency ) &lt;/li&gt;
&lt;li&gt;[2] KeyVault (1) (i.e Depends on Resource Group) &lt;/li&gt;
&lt;li&gt;[3] Storage Accounts (1) &lt;/li&gt;
&lt;li&gt;[4] Service Bus (1) &lt;/li&gt;
&lt;li&gt;[5] Log analytics (1) &lt;/li&gt;
&lt;li&gt;[6] Function App (1, 2, 3, 4, 5) &lt;/li&gt;
&lt;li&gt;[7] Function App Code Deployment (6) &lt;/li&gt;
&lt;li&gt;[8] Azure LogicApps (1, 2, 3, 4, 5, 6)
&lt;/li&gt;
&lt;li&gt;[9] Azure APIM (1, 2, 6) &lt;/li&gt;
&lt;li&gt;[10] Log analytics ActionGroup (1, 5) &lt;/li&gt;
&lt;li&gt;[11] Log analytics Alerts (1, 5, 10) &lt;/li&gt;
&lt;li&gt;[12] File uploads to storage accounts (1, 3)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since some of the values are depending on previously deployed resource properties, we needed to extract the required information dynamically in ARM templates. &lt;/p&gt;

&lt;p&gt;So most questions below are more or less arouns how to expose a deployed azure resource properties ( i.e : key, connectionstring, trigger url, secret etc) via ARM Template Output Variables, in order to consume them in the upcoming pipeline steps.&lt;br&gt;
...&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the must have VS-Code extensions for ARM Templates ?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=msazurermtools.azurerm-vscode-tools"&gt;https://marketplace.visualstudio.com/items?itemName=msazurermtools.azurerm-vscode-tools&lt;/a&gt;&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=samcogan.arm-snippets"&gt;https://marketplace.visualstudio.com/items?itemName=samcogan.arm-snippets&lt;/a&gt;&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=bencoleman.armview"&gt;https://marketplace.visualstudio.com/items?itemName=bencoleman.armview&lt;/a&gt;&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=wilfriedwoivre.arm-params-generator"&gt;https://marketplace.visualstudio.com/items?itemName=wilfriedwoivre.arm-params-generator&lt;/a&gt;&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=bencoleman.armview"&gt;https://marketplace.visualstudio.com/items?itemName=bencoleman.armview&lt;/a&gt;&lt;br&gt;
&lt;a href="http://armviz.io/editor"&gt;http://armviz.io/editor&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to deploy/validate ARM Template with AzureCLI ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;az login
az account set --subscription $(subsId)

az group deployment validate 
--resource-group $(resgroupName) 
--template-file $(templateFile).json 
--parameters $(templateFile).parameters.json

az group deployment create   
--name ExampleDeploymentName 
--resource-group $(resgroupName) 
--template-file  $(templateFile).json 
--parameters $(templateFile).parameters.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/cli/azure/group/deployment?view=azure-cli-latest#az-group-deployment-validate"&gt;https://docs.microsoft.com/en-us/cli/azure/group/deployment?view=azure-cli-latest#az-group-deployment-validate&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to deploy/validate ARM Template with PowerShell ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;New-AzResourceGroupDeployment 
-ResourceGroupName $(resgroupName) 
-TemplateFile $(templateFile).json  
-TemplateParameterFile $(templateFile).parameters.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Change $(templateFile) and $(resgroupName) variables in the snippets according to your values&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to get LogicApp callback url via ARM output variables ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"outputs": { 
    "logicAppUrl": {
      "type": "string",
      "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', variables('logicAppName')), '/triggers/request'), '2016-06-01').value]"
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://platform.deloitte.com.au/articles/list-of-access-keys-from-output-values-after-arm-template-deployment#logic-apps"&gt;https://platform.deloitte.com.au/articles/list-of-access-keys-from-output-values-after-arm-template-deployment#logic-apps&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to get LogicApp querystrings and sasToken with ARM Template ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"outputs": {
    "endpointUrl": {
        "type": "string",
        "value": "[listCallbackUrl(variables('resourceId'), variables('apiVersion')).value]"
    },
    "path": {
        "type": "string",
        "value": "[listCallbackUrl(variables('resourceId'), variables('apiVersion')).basePath]"
    },
    "querystring": {
        "type": "string",
        "value": "[concat('api-version=', variables('apiVersion'), '&amp;amp;sp=', uriComponent(listCallbackUrl(variables('resourceId'), variables('apiVersion')).queries.sp), '&amp;amp;sv=', listCallbackUrl(variables('resourceId'), variables('apiVersion')).queries.sv, '&amp;amp;sig=', listCallbackUrl(variables('resourceId'), variables('apiVersion')).queries.sig)]"
    },
    "sasToken": {
        "type": "string",
        "value": "[concat('sp=', uriComponent(listCallbackUrl(variables('resourceId'), variables('apiVersion')).queries.sp), '&amp;amp;sv=', listCallbackUrl(variables('resourceId'), variables('apiVersion')).queries.sv, '&amp;amp;sig=', listCallbackUrl(variables('resourceId'), variables('apiVersion')).queries.sig)]"
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/justinyoo/2196cf52cc28b7d16726465be1db4c02"&gt;https://gist.github.com/justinyoo/2196cf52cc28b7d16726465be1db4c02&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to get Storage Account properties via ARM outputs variables ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"outputs": {
    "blobStorageAccountName": {
      "type": "string",
      "value": "[parameters('storageAccountName')]"
    },
    "blobStorageConnectionString": {
      "type": "string",
      "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccountName'), ';AccountKey=', listKeys(resourceId(resourceGroup().name,'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-04-01').keys[0].value,';EndpointSuffix=core.windows.net')]"
    },
    "blobStorageSharedKey": {
      "type": "string",
      "value": "[listKeys(resourceId(resourceGroup().name,'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-04-01').keys[0].value]"
    },
 "blobStorageAccountConnectionStringWithSAS": {              
      "type": "string",              
      "value": "[concat('BlobEndpoint=',variables('blobEndPoint'),';SharedAccessSignature=', listAccountSas(variables('storageAccountName'), '2019-04-01'), parameters('accountSasProperties')).accountSasToken"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://platform.deloitte.com.au/articles/list-of-access-keys-from-output-values-after-arm-template-deployment#storage-accounts"&gt;https://platform.deloitte.com.au/articles/list-of-access-keys-from-output-values-after-arm-template-deployment#storage-accounts&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to get FunctionApp properties via ARM outputs variables ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"outputs": { 
    "FuncAppName": {
      "value": "[parameters('funcAppName')]",
      "type": "string"
    },
    "FuncAppUrl": {
      "value": "[concat('https://', parameters('funcAppName') ,'.azurewebsites.net')]",
      "type": "string"
    },
    "FuncAppId": {
      "value": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',resourceGroup().name,'/providers/Microsoft.Web/sites/',parameters('funcAppName'))]",
      "type": "string"
    },
    "FuncApp_SampleFuncName_Url_With_FunctionKey": {
      "value": "[listsecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcAppName'), 'SampleFuncName'),'2015-08-01').trigger_url]",
      "type": "string"
    },
    "FuncApp_SampleFuncName_Url_With_MasterKey": {
    "value": "[concat('https://', parameters('funcAppName'), '.azurewebsites.net/api/samplefuncname', '?code=', listkeys(concat(resourceId('Microsoft.Web/sites', parameters('funcAppName')), '/host/default'), '2015-08-01').masterKey)]",
    "type": "string"
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://platform.deloitte.com.au/articles/list-of-access-keys-from-output-values-after-arm-template-deployment#functions"&gt;https://platform.deloitte.com.au/articles/list-of-access-keys-from-output-values-after-arm-template-deployment#functions&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to set AppInsight InstrumentationKey and ConnectionString in SiteConfig ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"properties": {
    "siteConfig": {
        "appSettings": [
            {
            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
            "value": "[reference(resourceId('microsoft.insights/components/', variables('applicationInsightsName')), '2015-05-01').InstrumentationKey]"
            },
            {
            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
            "value": "[reference(resourceId('microsoft.insights/components/', variables('applicationInsightsName')), '2015-05-01').ConnectionString]"
            }
        ]
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to get Log Analytics Workspace properties via ARM outputs variables ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"outputs": {
    "LogAnalyticsWorkspaceCustomerId": {
      "value": "[reference(parameters('LogWorkspaceName'), '2015-11-01-preview').customerId]",
      "type": "string"
    },
    "LogAnalyticsWorkspacePrimarySharedKey": {
      "value": "[listKeys(parameters('LogWorkspaceName'), '2015-11-01-preview').primarySharedKey]",
      "type": "string"
    }
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to set webhook url for ActionGroups with ARM Template ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; "webhookReceivers": [
            {
              "name": "logicapp_webhook",
              "serviceUri": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows', parameters('workflowName')), '/triggers/manual'), '2016-06-01').value]"     
             }
          ],
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://mindbyte.nl/2019/02/13/Retrieve-the-callback-url-of-a-logic-app-inside-your-ARM-template.html"&gt;https://mindbyte.nl/2019/02/13/Retrieve-the-callback-url-of-a-logic-app-inside-your-ARM-template.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to override parameters with KeyVault Value ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"value": "[concat('@Microsoft.KeyVault(SecretUri=', 'https://',parameters('keyVaultName'),'.vault.azure.net/secrets/',parameters('keyVaultSecretName'))')]"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to export Azure Devops variable group key/value pairs via Azure CLI ?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;az pipelines variable-group variable list --org https://dev.azure.com/{orgName} --project {projectName} --group-id {groupId} --output json&amp;gt;{fileName}.json

az pipelines variable-group show --org https://dev.azure.com/{orgName} --project {projectName} --group-id {groupId} -o json &amp;gt;{fileName}.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;{orgName} : Devops org name&lt;/li&gt;
&lt;li&gt;{projectName} : Devops project name&lt;/li&gt;
&lt;li&gt;{groupId} : VariableGroupId &lt;/li&gt;
&lt;li&gt;{fileName} : fileName to save the json export&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Hint : You can use the url of the variable group to get the &amp;gt; variableGroupId &lt;br&gt;
Ex: ?itemType=VariableGroups&amp;amp;view=VariableGroupView&amp;amp;variableGroupId=12 ) &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to learn basic syntax for ARM templates ?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://dev.to/fboucheros/series/8490"&gt;https://dev.to/fboucheros/series/8490&lt;/a&gt;&lt;br&gt;
&lt;a href="https://adamtheautomator.com/arm-templates-in-azure/"&gt;https://adamtheautomator.com/arm-templates-in-azure/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://ravichaganti.com/categories/arm-template/"&gt;https://ravichaganti.com/categories/arm-template/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to use variables in ARM templates ?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.timmerman.it/index.php/author/kevint/"&gt;https://www.timmerman.it/index.php/author/kevint/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to use output variables in ARM templates ?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://adamtheautomator.com/arm-templates-in-azure/#Capturing_ARM_Outputs_for_the_Azure_Pipeline"&gt;https://adamtheautomator.com/arm-templates-in-azure/#Capturing_ARM_Outputs_for_the_Azure_Pipeline&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.timmerman.it/index.php/using-values-from-your-arm-template-across-your-azure-devops-pipeline-with-powershell/"&gt;https://www.timmerman.it/index.php/using-values-from-your-arm-template-across-your-azure-devops-pipeline-with-powershell/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to learn functions in ARM templates ?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://ravichaganti.com/blog/azure-resource-manager-using-functions-in-arm-templates/"&gt;https://ravichaganti.com/blog/azure-resource-manager-using-functions-in-arm-templates/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://erwinstaal.nl/posts/functions-in-arm-templates"&gt;https://erwinstaal.nl/posts/functions-in-arm-templates&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to learn template functions in ARM Templates ?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions"&gt;https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource#reference"&gt;https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource#reference&lt;/a&gt;&lt;br&gt;
&lt;a href="https://ochzhen.com/blog/reference-function-arm-template#examples-of-reference-function"&gt;https://ochzhen.com/blog/reference-function-arm-template#examples-of-reference-function&lt;/a&gt;&lt;br&gt;
...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to pass secrets in ARM Templates ?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://platform.deloitte.com.au/articles/6-ways-passing-secrets-to-arm-templates"&gt;https://platform.deloitte.com.au/articles/6-ways-passing-secrets-to-arm-templates&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to solve common errors in ARM Templates ?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.devdummy.com/2020/10/resolved-azure-devops-pipeline-variable.html"&gt;https://www.devdummy.com/2020/10/resolved-azure-devops-pipeline-variable.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.microsoft.com/en-us/answers/questions/259204/an-error-while-overriding-3939-parameter-because-o.html"&gt;https://docs.microsoft.com/en-us/answers/questions/259204/an-error-while-overriding-3939-parameter-because-o.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/Azure/azure-functions-host/wiki/Changes-to-Key-Management-in-Functions-V2"&gt;https://github.com/Azure/azure-functions-host/wiki/Changes-to-Key-Management-in-Functions-V2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  How to solve LogicApp API Connection errors?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.koskila.net/how-to-fix-a-logic-app-deployment-that-failed-with-error-apinotfound/"&gt;https://www.koskila.net/how-to-fix-a-logic-app-deployment-that-failed-with-error-apinotfound/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/troubleshooting/error-invalid-template?tabs=bicep#solution-3---parameter-is-not-valid"&gt;https://docs.microsoft.com/en-us/azure/azure-resource-manager/troubleshooting/error-invalid-template?tabs=bicep#solution-3---parameter-is-not-valid&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/troubleshooting/common-deployment-errors"&gt;https://docs.microsoft.com/en-us/azure/azure-resource-manager/troubleshooting/common-deployment-errors&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;h3&gt;
  
  
  Which roles should be given to service principal user for copying Azure Blob files with ARM Template  ?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://medium.com/datadigest/resolving-an-authorizationpermissionmismatch-from-the-azure-file-copy-task-v4-in-azure-pipelines-654536fe3af5"&gt;https://medium.com/datadigest/resolving-an-authorizationpermissionmismatch-from-the-azure-file-copy-task-v4-in-azure-pipelines-654536fe3af5&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These 2 roles should be given to service principal to upload files&lt;br&gt;
Storage Blob Contributor&lt;br&gt;
Storage Blob Data Contributor&lt;/p&gt;

</description>
      <category>azure</category>
      <category>arm</category>
      <category>armtemplate</category>
      <category>pipeline</category>
    </item>
  </channel>
</rss>
