{"id":1190,"date":"2022-02-01T00:09:00","date_gmt":"2022-01-31T11:09:00","guid":{"rendered":"https:\/\/blog.wiseowls.co.nz\/?p=1190"},"modified":"2026-03-08T00:44:50","modified_gmt":"2026-03-07T11:44:50","slug":"ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline","status":"publish","type":"post","link":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/","title":{"rendered":"ADO: Capturing outputs from ARM Deployment into YAML pipeline"},"content":{"rendered":"\n<p>We have hit this snag while building our <a href=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/01\/13\/terraform-quick-start-repo-part-1-azure-remote-state\/\">zero touch Terraform pipeline<\/a>. And while the Internet has examples of <a href=\"https:\/\/adamtheautomator.com\/arm-templates-in-azure\/\">navigating the issue with PowerShell<\/a>, we could not find one that would work with Bash. Technically, PowerShell 7.x comes preinstalled on our choice of Hosted Agents too, so we could&#8217;ve used existing solution. But we felt it was a good opportunity to look at <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/pipelines\/scripts\/logging-commands?view=azure-devops&amp;tabs=bash\">Logging Commands<\/a> and ultimately could not pass up an opportunity to build something new.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"problem-statement\">Problem statement<\/h2>\n\n\n\n<p>Suppose we&#8217;ve got an <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/pipelines\/tasks\/deploy\/azure-resource-group-deployment?view=azure-devops\">Azure Resource Group Deployment<\/a> task (which now <a href=\"https:\/\/github.com\/microsoft\/azure-pipelines-tasks\/commit\/4d8419f5e90882c316af3e73aea9521f8f2726ee\">supports Bicep<\/a> templates natively by the way). It&#8217;s got a way of feeding deployment outputs back to the pipeline: <code>deploymentOutputs<\/code> which takes a string and returns it as a variable:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"yaml\" class=\"language-yaml\">trigger: none\r\n\rname: ARM Deploy\r\n\rpool:\r\n  vmImage: 'ubuntu-latest'\r\n\r\nstages:\r\n- stage: arm_deployment\r\n  jobs:\r\n  - job: deploy\r\n    steps:\r\n    - task: AzureResourceManagerTemplateDeployment@3\r\n      inputs:\r\n        deploymentScope: 'Subscription'\r\n        azureResourceManagerConnection: $(predefinedAzureServiceConnection)\r\n        subscriptionId: $(targetSubscriptionId)\r\n        location: $(location)\r\n        csmFile: '$(Build.SourcesDirectory)\/arm-template.json'\r\n        deploymentOutputs: 'outputVariablesGoHere' # this is where ARM outputs will go\r\r\n    - script: |\r\n        echo $ARM_DEPLOYMENT_OUTPUT\r\n      env:\r\n        ARM_DEPLOYMENT_OUTPUT: $(outputVariablesGoHere)<\/code><\/pre>\n\n\n\n<p>Let us assume our ARM template has outputs along the following lines:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"json\" class=\"language-json\">\"outputs\": {\r\n    \"resourceGroupName\": {\r\n      \"type\": \"string\",\r\n      \"value\": \"[parameters('rg_name')]\"\r\n    },\r\n    \"storageAccountName\": {\r\n      \"type\": \"string\",\r\n      \"value\": \"[reference(extensionResourceId(format('\/subscriptions\/{0}\/resourceGroups\/{1}', subscription().subscriptionId, parameters('rg_name')), 'Microsoft.Resources\/deployments', 'deployment')).outputs.storageAccountName.value]\"\r\n    }\r\n  }<\/code><\/pre>\n\n\n\n<p>then, the pipeline would produce the following output:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Starting: AzureResourceManagerTemplateDeployment\n==============================================================================\n...\nStarting Deployment.\nUpdated output variable 'outputVariablesGoHere.storageAccountName.type', which contains the outputs section of the current deployment object in string format.\nUpdated output variable 'outputVariablesGoHere.storageAccountName.value', which contains the outputs section of the current deployment object in string format.\n...\nUpdated output variable 'outputVariablesGoHere', which contains the outputs section of the current deployment object in string format.\nFinishing: AzureResourceManagerTemplateDeployment\n\nStarting: CmdLine\n==============================================================================\n...\nScript contents:\necho $ARM_DEPLOYMENT_OUTPUT\n========================== Starting Command Output ===========================\n{\"storageAccountName\":{\"type\":\"String\",\"value\":\"xxxxxxxxx\"},\"resourceGroupName\":{\"type\":\"String\",\"value\":\"xxxxxxxx\"}}\nFinishing: CmdLine<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ado-does-not-support-parsing-json\">ADO does not support parsing JSON<\/h2>\n\n\n\n<p>By default, ADO would treat the whole object as one string and would not get us very far with it. So, we need to parse JSON and define more variables. We could opt for PowerShell task to do that, but since we&#8217;re using Ubuntu on our agents, we felt Bash would be a bit more appropriate. Let&#8217;s update the pipeline a bit and replace our simplistic <code>echo<\/code> script with a bit more logic:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">    - script: |\r\n        echo \"##vso[task.setvariable variable=resourceGroupName;isOutput=true]`echo $ARM_DEPLOYMENT_OUTPUT | jq -r '.resourceGroupName.value'`\"\r\n        echo \"##vso[task.setvariable variable=storageAccountName;isOutput=true]`echo $ARM_DEPLOYMENT_OUTPUT | jq -r '.storageAccountName.value'`\"\r\n        echo \"##vso[task.setvariable variable=containerName;isOutput=true]`echo $ARM_DEPLOYMENT_OUTPUT | jq -r '.containerName.value'`\"\r\n        echo \"##vso[task.setvariable variable=storageAccessKey;isOutput=true;isSecret=true]`echo $ARM_DEPLOYMENT_OUTPUT | jq -r '.storageAccessKey.value'`\"\r\n      env:\r\n        ARM_DEPLOYMENT_OUTPUT: $(outputVariablesGoHere)<\/code><\/pre>\n\n\n\n<p> Here we pass our input to <a href=\"https:\/\/stedolan.github.io\/jq\/\">jq<\/a>, the JSON parser that <a href=\"https:\/\/github.com\/actions\/virtual-environments\/blob\/main\/images\/linux\/Ubuntu2004-Readme.md\">comes preinstalled<\/a> with <code>ubuntu-latest<\/code>. Then we craft a string that ADO Agent picks up and interprets as command (in this case, setting pipeline variable). These special strings are called Logging Commands.<\/p>\n\n\n\n<p>One crucial thing to remember here is to call <code>jq<\/code> with <code>--raw-output<\/code>\/<code>-r<\/code> command line parameter &#8211; this would ensure resulting strings are unquoted. Having <code>\\\"value\\\"<\/code> vs <code>value<\/code> can easily break the build and is awfully hard to troubleshoot. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n\n<p>This little script is just a sample of what&#8217;s possible. PowerShell examples online usually opt for a universal approach and enumerate all keys on the object. We&#8217;re certain Bash can offer the same flexibility but since our use case was limited by just a couple of variables, we&#8217;d keep it straight to the point and leave generalisation to readers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We have hit this snag while building our zero touch Terraform pipeline. And while the Internet has examples of navigating the issue with PowerShell, we could not find one that would work with Bash. Technically, PowerShell 7.x comes preinstalled on our choice of Hosted Agents too, so we could&#8217;ve used existing solution. But we felt &hellip; <a href=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;ADO: Capturing outputs from ARM Deployment into YAML pipeline&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":391,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[11],"tags":[58],"class_list":["post-1190","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev","tag-azure-devops"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ADO: Capturing outputs from ARM Deployment into YAML pipeline - Timur and associates<\/title>\n<meta name=\"description\" content=\"Capturing ARM deployment outputs in Azure DevOps YAML pipelines with Bash. The PowerShell examples are everywhere but Bash isn&#039;t.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ADO: Capturing outputs from ARM Deployment into YAML pipeline - Timur and associates\" \/>\n<meta property=\"og:description\" content=\"Capturing ARM deployment outputs in Azure DevOps YAML pipelines with Bash. The PowerShell examples are everywhere but Bash isn&#039;t.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/\" \/>\n<meta property=\"og:site_name\" content=\"Timur and associates\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-31T11:09:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-07T11:44:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/tobias-fischer-PkbZahEG2Ng-unsplash-scaled-e1582017537106.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1980\" \/>\n\t<meta property=\"og:image:height\" content=\"801\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"timur\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@TimurKh\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/\"},\"author\":{\"name\":\"timur\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\"},\"headline\":\"ADO: Capturing outputs from ARM Deployment into YAML pipeline\",\"datePublished\":\"2022-01-31T11:09:00+00:00\",\"dateModified\":\"2026-03-07T11:44:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/\"},\"wordCount\":361,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/tobias-fischer-PkbZahEG2Ng-unsplash-scaled-e1582017537106.jpg\",\"keywords\":[\"azure-devops\"],\"articleSection\":[\"Development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/\",\"name\":\"ADO: Capturing outputs from ARM Deployment into YAML pipeline - Timur and associates\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/tobias-fischer-PkbZahEG2Ng-unsplash-scaled-e1582017537106.jpg\",\"datePublished\":\"2022-01-31T11:09:00+00:00\",\"dateModified\":\"2026-03-07T11:44:50+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\"},\"description\":\"Capturing ARM deployment outputs in Azure DevOps YAML pipelines with Bash. The PowerShell examples are everywhere but Bash isn't.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/tobias-fischer-PkbZahEG2Ng-unsplash-scaled-e1582017537106.jpg\",\"contentUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/tobias-fischer-PkbZahEG2Ng-unsplash-scaled-e1582017537106.jpg\",\"width\":1980,\"height\":801},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2022\\\/02\\\/01\\\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ADO: Capturing outputs from ARM Deployment into YAML pipeline\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#website\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/\",\"name\":\"Timur and associates\",\"description\":\"Notes of an IT contractor\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\",\"name\":\"timur\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"caption\":\"timur\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/TimurKh\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ADO: Capturing outputs from ARM Deployment into YAML pipeline - Timur and associates","description":"Capturing ARM deployment outputs in Azure DevOps YAML pipelines with Bash. The PowerShell examples are everywhere but Bash isn't.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/","og_locale":"en_US","og_type":"article","og_title":"ADO: Capturing outputs from ARM Deployment into YAML pipeline - Timur and associates","og_description":"Capturing ARM deployment outputs in Azure DevOps YAML pipelines with Bash. The PowerShell examples are everywhere but Bash isn't.","og_url":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/","og_site_name":"Timur and associates","article_published_time":"2022-01-31T11:09:00+00:00","article_modified_time":"2026-03-07T11:44:50+00:00","og_image":[{"width":1980,"height":801,"url":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/tobias-fischer-PkbZahEG2Ng-unsplash-scaled-e1582017537106.jpg","type":"image\/jpeg"}],"author":"timur","twitter_card":"summary_large_image","twitter_creator":"@TimurKh","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/#article","isPartOf":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/"},"author":{"name":"timur","@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59"},"headline":"ADO: Capturing outputs from ARM Deployment into YAML pipeline","datePublished":"2022-01-31T11:09:00+00:00","dateModified":"2026-03-07T11:44:50+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/"},"wordCount":361,"commentCount":0,"image":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/tobias-fischer-PkbZahEG2Ng-unsplash-scaled-e1582017537106.jpg","keywords":["azure-devops"],"articleSection":["Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/","url":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/","name":"ADO: Capturing outputs from ARM Deployment into YAML pipeline - Timur and associates","isPartOf":{"@id":"https:\/\/blog.wiseowls.co.nz\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/#primaryimage"},"image":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/tobias-fischer-PkbZahEG2Ng-unsplash-scaled-e1582017537106.jpg","datePublished":"2022-01-31T11:09:00+00:00","dateModified":"2026-03-07T11:44:50+00:00","author":{"@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59"},"description":"Capturing ARM deployment outputs in Azure DevOps YAML pipelines with Bash. The PowerShell examples are everywhere but Bash isn't.","breadcrumb":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/#primaryimage","url":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/tobias-fischer-PkbZahEG2Ng-unsplash-scaled-e1582017537106.jpg","contentUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/tobias-fischer-PkbZahEG2Ng-unsplash-scaled-e1582017537106.jpg","width":1980,"height":801},{"@type":"BreadcrumbList","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2022\/02\/01\/ado-capturing-outputs-from-arm-deployment-into-yaml-pipeline\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.wiseowls.co.nz\/"},{"@type":"ListItem","position":2,"name":"ADO: Capturing outputs from ARM Deployment into YAML pipeline"}]},{"@type":"WebSite","@id":"https:\/\/blog.wiseowls.co.nz\/#website","url":"https:\/\/blog.wiseowls.co.nz\/","name":"Timur and associates","description":"Notes of an IT contractor","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.wiseowls.co.nz\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59","name":"timur","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","caption":"timur"},"sameAs":["https:\/\/x.com\/TimurKh"]}]}},"_links":{"self":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/1190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/comments?post=1190"}],"version-history":[{"count":9,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/1190\/revisions"}],"predecessor-version":[{"id":1200,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/1190\/revisions\/1200"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/media\/391"}],"wp:attachment":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/media?parent=1190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/categories?post=1190"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/tags?post=1190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}