Шаблоны Azure ARM со строками подключения Storage и Cosmos Db - PullRequest
0 голосов
/ 25 сентября 2019

Надеюсь, кто-то знает, как это сделать.Я настроил шаблон ARM, который создает мои ресурсы, когда я делаю CI / CD, и это здорово.Мне даже удалось настроить строку подключения:

"ConnectionStrings:ConnectionString": "[concat('Data Source=tcp:', reference(concat('Microsoft.Sql/servers/', variables('name'))).fullyQualifiedDomainName, ',1433;Initial Catalog=', variables('sqlMasterName'), ';User Id=', variables('sqlServerUser'), '@', reference(concat('Microsoft.Sql/servers/', variables('name'))).fullyQualifiedDomainName, ';Password=', variables('sqlServerPassword'), ';')]",

переменная sqlServerPassword случайно генерируется следующим образом:

"sqlServerPassword": "[concat('P', uniqueString(resourceGroup().id, '224F5A8B-51DB-46A3-A7C8-59B0DD584A41'), 'x', '!')]",

Имея это в виду, кто-нибудьзнаете, как я могу сделать то же самое для учетной записи хранения и для Azure Cosmos db?Кажется, что это не то же самое.

Мой шаблон для создания моей учетной записи хранения выглядит следующим образом:

{
  "apiVersion": "2018-11-01",
  "type": "Microsoft.Storage/storageAccounts",
  "name": "[variables('name')]",
  "location": "[variables('location')]",
  "tags": {
    "displayName": "SXP storage"
  },
  "kind": "Storage",
  "sku": {
    "name": "Standard_LRS"
  }
},

В котором не упоминается пароль и т. Д. Кроме того, для моегоCosmosDb У меня та же проблема:

{
  "name": "[variables('name')]",
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "apiVersion": "2015-04-08",
  "location": "[variables('location')]",
  "tags": {
    "displayName": "Cosmos DB Account"
  },
  "properties": {
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard"
  }
},
{
  "name": "[concat(variables('name'), '/sql/', variables('cosmosMasterName'))]",
  "type": "Microsoft.DocumentDB/databaseAccounts/apis/databases",
  "apiVersion": "2016-03-31",
  "dependsOn": [
    "[resourceId('Microsoft.DocumentDB/databaseAccounts/', variables('name'))]"
  ],
  "properties": {
    "resource": {
      "id": "[variables('cosmosMasterName')]"
    },
    "options": { "throughput": "[variables('cosmosMasterThroughPut')]" }
  }
},
{
  "name": "[concat(variables('name'), '/sql/', variables('cosmosMasterName'), '/', variables('cosmosContainerName'))]",
  "type": "Microsoft.DocumentDb/databaseAccounts/apis/databases/containers",
  "apiVersion": "2016-03-31",
  "dependsOn": [ "[resourceId('Microsoft.DocumentDB/databaseAccounts/apis/databases', variables('name'), 'sql', variables('cosmosMasterName'))]" ],
  "properties": {
    "resource": {
      "id": "[variables('cosmosContainerName')]",
      "partitionKey": {
        "paths": [
          "/gtin"
        ],
        "kind": "Hash"
      },
      "indexingPolicy": {
        "indexingMode": "consistent",
        "includedPaths": [
          {
            "path": "/*"
          }
        ]
      }
    }
  }
},
{
  "name": "[concat(variables('name'), '/sql/', variables('cosmosDevelopName'))]",
  "type": "Microsoft.DocumentDB/databaseAccounts/apis/databases",
  "apiVersion": "2016-03-31",
  "dependsOn": [
    "[resourceId('Microsoft.DocumentDB/databaseAccounts/', variables('name'))]"
  ],
  "properties": {
    "resource": {
      "id": "[variables('cosmosDevelopName')]"
    },
    "options": { "throughput": "[variables('cosmosDevelopThroughPut')]" }
  }
},
{
  "name": "[concat(variables('name'), '/sql/', variables('cosmosDevelopName'), '/', variables('cosmosContainerName'))]",
  "type": "Microsoft.DocumentDb/databaseAccounts/apis/databases/containers",
  "apiVersion": "2016-03-31",
  "dependsOn": [ "[resourceId('Microsoft.DocumentDB/databaseAccounts/apis/databases', variables('name'), 'sql', variables('cosmosDevelopName'))]" ],
  "properties": {
    "resource": {
      "id": "[variables('cosmosContainerName')]",
      "partitionKey": {
        "paths": [
          "/gtin"
        ],
        "kind": "Hash"
      },
      "indexingPolicy": {
        "indexingMode": "consistent",
        "includedPaths": [
          {
            "path": "/*"
          }
        ]
      }
    }
  }
}

Если кто-то может помочь, это было бы здорово.

1 Ответ

0 голосов
/ 25 сентября 2019

Дэвид Макогон на месте, но есть способ получить учетную запись хранения и сгенерированные CosmosDB ключи и строки подключения в шаблоне ARM.Используйте функцию ARM ListKeys .

Вот пример из одного из моих собственных шаблонов ARM.Это параметр приложения в функции Azure, где я ссылаюсь на сгенерированный ключ учетной записи хранения:

{
   "name": "StorageConnectionString",
   "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId(variables('InfrastructureResourceGroupName'), 'Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1)]"
},

Обратите внимание, что если ваша учетная запись хранения находится в той же группе ресурсов, я считаю, что вы можете опустить первый аргумент для ListKeys,

Это очень похоже на получение ключа к базе данных CosmosDB.Если вы застряли, дайте мне знать, и я тоже откопаю этот пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...