URL codificado no modelo do Azure

1

Estou tentando criar um modelo ARM e estou com um problema ao tentar fornecer um templateLink no meu modelo pai.

No modelo pai, estou tentando fazer referência a uma lista de outros arquivos de modelo que serão usados. Estou fazendo isso adicionando o seguinte objeto JSON

{
  "apiVersion": "2016-09-01",
  "name": "linkedTemplate",
  "type": "Microsoft.Resources/deployments",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "uri": "[concat(variables('baseURL'), 'settings%2Ejson/raw', variables('queryString'))]",
      "contentVersion": "1.0.0.0"
    }
  }
}

E eu tenho baseURL é o caminho para uma instalação do gitlab definida como

    "baseURL": "https://<URL>/api/v4/projects/2/repository/files/shared_services%2F",

Para que a API do GitLab funcione, é necessário que a parte da URL, depois dos arquivos, seja uma URL codificada fazendo referência ao caminho para o arquivo dentro do repositório git. Então, ao invés de ter / e. no URL, ele precisa de% 2E e% 2F para essa seção. Então, no meu caso, estou tentando acessar o seguinte URL

link

No entanto, quando executo o modelo usando a ferramenta CLI do azure com o seguinte comando,

az group deployment validate --debug -g example --template-file parent.json --parameters "@./parameters.json"

Eu recebo o seguinte erro

Não é possível fazer o download do conteúdo de implantação de ' link

Parece que não importa o que eu tente, configurações% 2Ejson continua se transformando em settings.json. No entanto, o caractere codificado por% 2F passou por ok. Então, eu não tinha certeza se havia algo que eu pudesse fazer para manter o% 2E sem a ferramenta CLI azul convertendo-o em um.

    
por Shayan 12.06.2017 / 21:46

1 resposta

1

Com base no meu conhecimento, o modelo do Azure não oferece suporte ao encore URI no modelo.

De acordo com o seu cenário, você pode escolher o seguinte caminho.

1. Salve seu modelo de link como um URL público, você pode salvá-lo no GitHub ou em uma conta pública do Armazenamento do Azure.

2.Embora o modelo vinculado deva ser disponibilizado externamente, ele não precisa estar disponível para o público em geral. Você pode adicionar seu modelo a uma conta de armazenamento particular acessível apenas ao proprietário da conta de armazenamento. Em seguida, você cria um token de assinatura de acesso compartilhado (SAS) para permitir o acesso durante a implantação. Você adiciona esse token SAS ao URI do modelo vinculado.

O exemplo a seguir mostra um modelo pai vinculado a outro modelo. O modelo vinculado é acessado com um token SAS que é passado como um parâmetro.

"parameters": {
    "sasToken": { "type": "securestring" }
},
"resources": [
    {
        "apiVersion": "2017-05-10",
        "name": "linkedTemplate",
        "type": "Microsoft.Resources/deployments",
        "properties": {
          "mode": "incremental",
          "templateLink": {
            "uri": "[concat('https://storagecontosotemplates.blob.core.windows.net/templates/helloworld.json', parameters('sasToken'))]",
            "contentVersion": "1.0.0.0"
          }
        }
    }
],

Mais informações sobre isso, consulte este link .

    
por 13.06.2017 / 04:01

Tags