반응형
ARM 템플릿에서 단일 따옴표를 이스케이프하는 방법
AzureRM 템플릿에서 다음 리소스가 주어지면, 어떻게 단일 따옴표를 인코딩할 수 있습니까?commandToExecute
파트?
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(variables('vmNameMaster'), copyIndex(), '/sethost')]",
"apiVersion": "2015-06-15",
"location": "[resourceGroup().location]",
"copy": {
"name": "extensionLoopNode",
"count": "[variables('masterCount')]"
},
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmNameMaster'), copyIndex(),'/extensions/DockerExtension')]"
],
"properties": {
"publisher": "Microsoft.OSTCExtensions",
"type": "CustomScriptForLinux",
"typeHandlerVersion": "1.4",
"settings": {
"fileUris": [ ],
"commandToExecute": "[concat('/bin/bash -c \'echo \"export DOCKER_HOST=:2375\" >> /home/', parameters('adminUsername') ,'/.profile\'')]",
"timestamp": 123456789
}
}
},
VB 문자열과 동일한 방법으로 Azure ARM 기능을 이스케이프할 수 있습니다. 즉, 하나의 따옴표 문자를 두 배로 늘리면 됩니다.
[concat('This is a ''quoted'' word.')]
산출물
This is a 'quoted' word.
이중 따옴표는 여전히 JSON에서 이스케이프되어야 합니다.
[concat('''single'' and \"double\" quotes.')]
산출물
'single' and "double" quotes.
저는 이 문제를 해결하기 위해 변수를 사용했습니다.
"variables": {
"singleQuote": "'",
},
...
"settings": {
"fileUris": [],
"commandToExecute": "[concat('/bin/bash -c ', variables('singleQuote'), 'echo \"export DOCKER_HOST=:2375\" >> /home/', parameters('adminUsername') ,'/.profile', variables('singleQuote'))]",
}
우아하지는 않지만 효과가 있습니다.
DevOps 릴리스 파이프라인에서 APIM 정책의 경우 "을 사용하여 식 내에서 따옴표를 이스케이프합니다.
<when condition='@(context.Variables.GetValueOrDefault<bool>("isAuthOk"))' />
명령 ToExecute 파트에서 단일 따옴표를 인코딩할 필요는 없습니다.아래 json 세그먼트는 http://jsonlint.com/ 에서 유효한 json으로 검증되었습니다.
{
"type": "Microsoft.Compute / virtualMachines / extensions ",
"name": "[concat(variables('vmNameMaster'), copyIndex(), '/sethost')]",
"apiVersion": "2015-06-15",
"location": "[resourceGroup().location]",
"copy": {
"name": "extensionLoopNode",
"count": "[variables('masterCount')]"
},
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmNameMaster'), copyIndex(),'/extensions/DockerExtension')]"
],
"properties": {
"publisher": "Microsoft.OSTCExtensions",
"type": "CustomScriptForLinux",
"typeHandlerVersion": "1.4",
"settings": {
"fileUris": [],
"commandToExecute": "[concat('/bin/bash -c 'echo \"export DOCKER_HOST=:2375\" >> /home/', parameters('adminUsername') ,'/.profile'')]",
"timestamp": 123456789
}
}
}
언급URL : https://stackoverflow.com/questions/33986180/how-to-escape-single-quote-in-arm-template
반응형
'IT' 카테고리의 다른 글
사용자를 전달하지 않고 ApiController 작업 내에서 현재 사용자를 가져옵니다.매개 변수로서의 ID (0) | 2023.06.07 |
---|---|
Android Studio 4.2가 Gradle 표시줄에 서명 보고서를 표시하지 않음 (0) | 2023.06.07 |
루비 배열에서 평균을 만들려면 어떻게 해야 합니까? (0) | 2023.06.07 |
Firebase의 다중 where 절을 기준으로 쿼리 (0) | 2023.06.07 |
여러 CSV 파일을 단일 xls 워크북 Python 3에 결합 (0) | 2023.06.07 |