Структура Azure Bicep для нового проекта

Итак, мы начинаем работу над новым проектом по развертыванию ресурсов Azure с использованием действий GitHub и Bicep. У нас уже есть несколько модулей, которые используются для развертывания нескольких ресурсов. Eventhub, comsos, веб-приложение, функция, учетная запись хранения и т. д. Также у нас есть разные среды: dev, qa, stg, prd. Итак, вопрос будет в том, стоит ли нам структурировать код бицепса для развертывания ресурсов в 4 различных средах с помощью потока действий GitHub? .

Я думал создать папку env и iside: dev/dev.bicepparam, qa/qa.bicepparam... и так далее для других сред. Как мне настроить остальную часть инфраструктурного кода? Должен ли я иметь другую папку с именем ресурсов и внутри main.bicep? Например:

env
 dev/dev.bicepparam
 qa/qa.bicepparam
 stg/stg.bicepparam
 prd/prd.bicepparam

storage-account/main.bicep --> calling storage module inside
webapp/main.bicep --> calling webapp module
functionapp/main.bicep  --> calling webapp module

.... возврат ресурсов

Если бы я, например, захотел развернуть веб-приложение в среде разработки, как бы это было?

Я также думал, что в действиях github я могу вводить данные из четырех сред, и перед запуском конвейера я могу выбрать: [dev,qa,stg,prd] и разверните новый ресурс в dev RG.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я буду сохранять файловую структуру максимально простой. С папкой для необходимых модулей для службы, main.bicep и файлом необходимых параметров для каждой среды.

.
├── modules
│   ├── storage-account.bicep
│   ├── resource-group.bicep
│   ├── webapp.bicep
│   ├── functionapp.bicep
│   └── cosmosdb.bicep
├── main.bicep
└── env
    ├── dev.parameters.json
    ├── qa.parameters.json
    ├── stg.parameters.json
    └── prd.parameters.json

main.bicep должен содержать имя службы с опцией передачи параметров, которые необходимо добавить из файла параметров для каждой среды.

param storageAccountParams object
//rest parameter expected

var serviceName = 'prettyservice'

module storageAccount 'modules/storage-account.bicep' = {
  name: '${serviceName}--storage-account'
  params: {
    storageAccount: storageAccountParams
    /// other expected parameters for storage-account module
  }
}

// other resource definition referencing the modules like the storage account above

затем ваши файлы параметров для каждой среды: пример dev.parameters.json

using './main.bicep'

param storageAccountParams = {
  name: "bvtprettystorweu"
  type: "Standard_LRS"
/// other values for the object expected by the storage module
}

Не используйте один репозиторий для размещения всей инфраструктуры, которой вы управляете, а используйте один репозиторий для каждого приложения/сервиса. Например, приведенная выше инфраструктура связана с одним сервисом «prettyservice». Это помогает упростить управление и зачастую избежать поломок.

Ваш конвейер для развертывания, если таргетинг на группу ресурсов, будет таким, как указание конкретного параметра для среды.

az deployment group create \
  --name $DEPLOYMENT_NAME \
  --resource-group $RESOURCE_GROUP \
  --template-file $TEMPLATE_FILE \
  --parameters @$PARAMETERS_FILE

Теперь мы готовы к развертыванию с помощью действия GitHub. Просмотрите страницу:

Другие вопросы по теме