Home > Net >  Bicep/ARM XML parameter as string not parsed correctly
Bicep/ARM XML parameter as string not parsed correctly

Time:06-03

In my Bicep file, I have a parameter:

@secure()
param securityToken string

This parameter is an XML value provided as a string from an environment variable, not read from a file. I have trouble correctly setting this parameter from my YML pipeline. I have this piece of code:

az deployment sub create --template-file main.bicep --parameters securityToken='<xml>'

Unfortunately, this returns an error:

< was unexpected at this time.

Ok, so I somehow have to escape this parameter? I also tried:

az deployment sub create --template-file main.bicep --parameters securityToken='&lt;xml&gt;'

But this gives the following error:

The system cannot find the file specified.

So my questions is:

How can I provide an XML string parameter to my Bicep / ARM deployment?

Thanks!

CodePudding user response:

Deployments to subscriptions need the --location <location> parameter, which is missing in the examples above.

When I run the following on Windows, Git Bash, the deployment succeeds.

az deployment sub create --location eastus --template-file main.bicep --parameters securityToken='<xml>'

Result enter image description here

main.bicep

targetScope = 'subscription'

@secure()
param securityToken string

output exposedSecret string = securityToken

CodePudding user response:

So I found the problem. Apparently, the < and > needs to be escaped, and I finally found out how: putting it between ". So, the value "<"xml">" did the trick. Now my working code is this:

$token = '<xml></xml>'
$token = $token .replace('<', '"<"') // = "<"xml>"<"/xml>
$token = $token .replace('>', '">"') // = "<"xml">""<"/xml">"
$token = $token .replace('""', '" "') // The double "" only escapes the " itself. Therefore, add an extra space: "<"xml">" "<"/xml">"
  • Related