Настройка среды Bicep

Bicep поддерживает необязательный файл конфигурации с именем bicepconfig.json. В этом файле можно добавить значения, настраивающие процесс разработки Bicep. Этот файл объединяется с файлом конфигурации по умолчанию. Дополнительные сведения см. в разделе "Общие сведения о процессе слияния". Чтобы настроить конфигурацию, создайте файл конфигурации в том же каталоге или родительском каталоге файлов Bicep. Если есть несколько родительских каталогов, содержащих bicepconfig.json файлы, Bicep использует конфигурацию из ближайшей. Дополнительные сведения см. в разделе "Общие сведения о процессе разрешения файлов".

Сведения о настройке параметров расширения Bicep см. в расширении VS Code и Bicep.

Создание файла конфигурации в Visual Studio Code

Для создания файла конфигурации можно использовать любой текстовый редактор.

Чтобы создать bicepconfig.json файл в Visual Studio Code, откройте палитру команд ([CTRL/CMD]+[SHIFT]+P), а затем выберите Bicep: Создать файл конфигурации Bicep. Дополнительные сведения см. в разделе "Создание файла конфигурации Bicep".

Screenshot of how to create Bicep configuration file in VS Code.

Расширение Bicep для Visual Studio Code поддерживает intellisense для файла bicepconfig.json . Используйте IntelliSense для обнаружения доступных свойств и значений.

Screenshot of the intellisense support in configuring bicepconfig.json.

Общие сведения о процессе слияния

Файл bicepconfig.json проходит рекурсивный процесс слияния вниз с файлом конфигурации по умолчанию. Во время процесса объединения Bicep проверяет каждый путь в обеих конфигурациях. Если путь отсутствует в конфигурации по умолчанию, путь и его связанное значение добавляются в окончательный результат. И наоборот, если путь существует в конфигурации по умолчанию с другим значением, значение bicepconfig.json из этого значения имеет приоритет в объединенном результате.

Рассмотрим сценарий, в котором конфигурация по умолчанию определена следующим образом:

{
  "cloud": {
    ...
    "credentialPrecedence": [
      "AzureCLI",
      "AzurePowerShell"
    ]
  },
  "moduleAliases": {
    "ts": {},
    "br": {
      "public": {
        "registry": "mcr.microsoft.com",
        "modulePath": "bicep"
      }
    }
  },
  ...
}

bicepconfig.json И определяется следующим образом:

{
  "cloud": {
    "credentialPrecedence": [
      "AzurePowerShell",
      "AzureCLI"
    ]
  },
  "moduleAliases": {
    "br": {
      "ContosoRegistry": {
        "registry": "contosoregistry.azurecr.io"
      },
      "CoreModules": {
        "registry": "contosoregistry.azurecr.io",
        "modulePath": "bicep/modules/core"
      }
    }
  }
}

Результирующая объединенная конфигурация будет:

{
  "cloud": {
    ...
    "credentialPrecedence": [
      "AzurePowerShell",
      "AzureCLI"
    ]
  },
  "moduleAliases": {
    "ts": {},
    "br": {
      "public": {
        "registry": "mcr.microsoft.com",
        "modulePath": "bicep"
      },
      "ContosoRegistry": {
        "registry": "contosoregistry.azurecr.io"
      },
      "CoreModules": {
        "registry": "contosoregistry.azurecr.io",
        "modulePath": "bicep/modules/core"
      }
    }
  },
  ...
}

В предыдущем примере значение cloud.credentialPrecedence заменяется, а значение cloud.moduleAliases.ContosoRegistry и cloud.moduleAliases.CoreModules добавляется в объединенную конфигурацию.

Общие сведения о процессе разрешения файлов

Файл bicepconfig.json можно поместить в тот же каталог или родительский каталог файлов Bicep. Если есть несколько родительских каталогов, содержащих bicepconfig.json файлы, Bicep использует файл конфигурации из ближайшего. Например, в заданной структуре папок, в которой каждая папка имеет bicepconfig.json файл:

A diagram showing resolving `bicepconfig.json` found in multiple parent folders.

При компиляции main.bicep в папке childbicepconfig.json используется файл в папке child . Файлы конфигурации в папке parent и root папке игнорируются. child Если папка не содержит файл конфигурации, Bicep ищет конфигурацию в папкеparent, а затем папкуroot. Если файл конфигурации не найден в любой из папок, Bicep по умолчанию использует значения по умолчанию.

В контексте файла Bicep, вызывающего несколько модулей, каждый модуль проходит компиляцию с помощью ближайшего bicepconfig.json. Затем основной файл Bicep компилируется соответствующим образом bicepconfig.json. В следующем сценарии modA.bicep компилируется с помощью bicepconfig.json папки A , modB.bicep компилируется с bicepconfig.jsonB помощью папки и, наконец, main.bicep компилируется с помощью bicepconfig.jsonroot папки.

A diagram showing resolving `bicepconfig.json` found in multiple parent folders with the module scenario.

В отсутствие bicepconfig.json файла в A папках и B папках все три файла Bicep компилируются с помощью bicepconfig.json найденных в папке root файлов. Если bicepconfig.json в папках нет, процесс компиляции по умолчанию использует значения по умолчанию.

Настройка модулей Bicep

При работе с модулями можно добавлять псевдонимы для путей модуля. Эти псевдонимы упрощают работу с файлом Bicep, так как вам не нужно повторять сложные пути. Вы также можете настроить приоритет облачных профилей и учетных данных для проверки подлинности в Azure из интерфейса командной строки Bicep и Visual Studio Code. Учетные данные используются для публикации модулей в реестрах и для восстановления внешних модулей в локальном кэше при использовании функции вставки ресурсов. Дополнительные сведения см. в разделе Добавление параметров модуля в конфигурацию Bicep.

Настройка правил Linter

Анализатор кода Bicep проверяет файлы Bicep на наличие синтаксических ошибок и нарушений рекомендаций. Можно переопределить параметры по умолчанию для проверки файлов Bicep, изменив bicepconfig.json. Дополнительные сведения см. в разделе Добавление параметров анализатора кода в конфигурацию Bicep.

Включение экспериментальных функций

Экспериментальные функции можно включить, добавив следующий раздел в bicepconfig.json файл.

Ниже приведен пример включения функций "compileTimeImports" и userDefinedFunctions.

{
  "experimentalFeaturesEnabled": {
    "compileTimeImports": true,
    "userDefinedFunctions": true
  }
}

Сведения о текущем наборе экспериментальных функций см. в разделе "Экспериментальные функции".

Следующие шаги