Azure трубопроводов и терраформных модулей в репо azure - PullRequest
0 голосов
/ 26 февраля 2020

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

Для вызова модулей

module "Webapp" {

source = "git::https://__PAT__@dev.azure.com/organisationname/Infrastructure/_git/Modules//Webapp"
resource_group_name = azurerm_resource_group.service.name
location            = azurerm_resource_group.service.location

все это работает, но у меня есть пара вопросов, на которые я не могу ответить. В файле артефакта я ожидал увидеть только файлы модулей в папке Webapp (в папке модулей), но вместо этого у меня есть весь репозиторий, а во втором модуле у меня такой же, еще одна копия всего репо. Модули по-прежнему работают, поскольку они указывают на папку WebApp структуры репо.

Я включил пару рисунков, один из которых показывает репозиторий модуля, который содержит мои папки для каждого модуля. а второй - это пи c артефакта, и, как вы можете видеть, весь репозиторий дважды копируется в каждый из каталогов модулей.

Почему это происходит? и как мне просто скачать папку модуля, а не весь модуль? enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

спасибо за помощь

Вот файл main.tf.

# Provider 
provider "azurerm" {

}


# Backend
terraform {
  backend "azurerm" {

  }
}


# Resource Group for the Service

resource "azurerm_resource_group" "service" {
  name     = var.resource_group_name
  location = var.location

}


# Module - Web App

module "Webapp" {
  # source = "../../../modules/WebApp"
source="git::https://Pattoken@dev.azure.com/organisationname/Infrastructure/_git/Modules//WebApp"
  resource_group_name = azurerm_resource_group.service.name
  location            = azurerm_resource_group.service.location
  securitybackend_storage_account_name = var.securitybackend_storage_account_name
  securitybackend_key = var.securitybackend_key
  # App Service Plan

  app_service_plan = var.app_service_plan
  kind             = var.kind
  skutier          = var.skutier
  skusize          = var.skusize
  capacity         = var.capacity

  # App Service

  name                = var.app_service
  app_settings        = var.app_settings
  secure_app_settings = var.secure_app_settings
  connection_strings  = var.connection_strings

  # Custom hostnames

  custom_hostnames = var.custom_hostnames

  # Key Vault Certificate

  require_certificate  = var.require_certificate
  certificate_name     = var.certificate_name
  certificate_location = var.certificate_location
  certificate_password = var.certificate_password

  # App Service certificate

  app_service_certificate_name = var.app_service_certificate_name
  key_vault_secret_id          = var.key_vault_secret_id
}


# Module - SQL 

module "SQL" {
  #source = "../../../modules/SQL"
  source="git::https://Pattoken@dev.azure.com/Organisationname/Infrastructure/_git/Modules//SQL"
  securitybackend_storage_account_name = var.securitybackend_storage_account_name
  securitybackend_key = var.securitybackend_key
  # Server Settings

  location                = azurerm_resource_group.service.location
  sql_server_name         = var.sql_server_name
  resource_group_name     = azurerm_resource_group.service.name
  sql_version             = var.sql_version
  sql_administrator_login = lower(var.sql_administrator_login)
  # administrator_login_password = var.administrator_login_password
  sqlpassword = var.sqlpassword
  require_random_sql_password = var.require_random_sql_password
  # Database Settngs

  database_name                             = var.database_name
  database_collation                        = var.database_collation
  database_edition                          = var.database_edition
  database_requested_service_objective_name = var.database_requested_service_objective_name
  max_size_bytes                            = var.max_size_bytes

  # SQL Firewall
  allow_azure_ip_access = var.allow_azure_ip_access
  custom_sql_firewall_rules = var.custom_sql_firewall_rules
}

У меня вроде есть работа, где я клонирую репозиторий, а затем просто source = "../../../modules/WebApp", но я все же хотел бы решить проблему. Я не вижу, что я делаю не так.

Также Если кто-то знает, как получить доступ к репозиториям azure devops, используя сертификаты, а не токены PAT. Я не могу понять, куда я положил публичные c и закрытые ключи? Я где-то читал, что храню личный токен в учетной записи хранения, но не уверен, куда его можно загрузить в агенте сборки, чтобы он мог аутентифицироваться.

Любая помощь очень ценится. Russ

0 голосов
/ 28 февраля 2020

Я протестировал репо модуля terraform и сгенерировал артефакт в конвейере сборки, папка модуля является обычной в артефакте и не копирует весь репозиторий. В вашем случае, я думаю, это может быть связано с тем, что вы выполнили какую-то специальную операцию с источником. Вы можете проверить и поделиться своим определением сборки и образцом терраформы.

enter image description hereenter image description here

как мне просто скачать папка модуля, а не весь модуль

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

enter image description here

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