2015-11-29 21 views
10

Data la seguente risorsa in un modello AzureRM, come si codificherebbe la quota singola nella parte commandToExecute?Come evitare una virgoletta singola nel modello ARM

{ 
    "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 
    } 
    } 
}, 
+0

Hai provato la fuga usando \. cioè "commandToExecute": "[concat ('/ bin/bash -c \' echo \" export DOCKER_HOST =: 2375 \ ">>/home/\ ', parametri (\' adminUsername \ '), \' /. profile \ '')] " –

risposta

11

Ho lavorato intorno a questo con una variabile:

"variables": { 
    "singleQuote": "'", 
}, 
... 
"settings": { 
    "fileUris": [], 
    "commandToExecute": "[concat('/bin/bash -c ', variables('singleQuote'), 'echo \"export DOCKER_HOST=:2375\" >> /home/', parameters('adminUsername') ,'/.profile', variables('singleQuote'))]", 
} 

Non è elegante, ma funziona.

+0

Grazie per questo, mi ha risparmiato un po 'di tempo –

+0

come è questa una risposta quando '' '' è? – 4c74356b41

-4

non è necessario codificare la virgoletta singola nella parte commandToExecute. Il segmento JSON qui sotto è stato convalidato come JSON valido http://jsonlint.com/

{ 
    "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 
     } 
    } 
} 
+2

ma non è valido un modello di braccio valido –

+0

Qual è l'errore che ottieni e qual è il tuo schema JSON modello ARM? – juvchan

+0

ecco lo schema: http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#. Il problema è che arm riconoscerà la singola virgola come propria direttiva di elaborazione ... – david

7

Si sfuggono le funzioni di Azure ARM nello stesso modo delle stringhe VB: si raddoppia semplicemente i caratteri di virgoletta singola.

[concat('This is a ''quoted'' word.')] 

uscite

This is a 'quoted' word. 

doppi apici deve ancora essere fuggiti da JSON.

[concat('''single'' and \"double\" quotes.')] 

uscite

'single' and "double" quotes. 
Problemi correlati