Terragrunt и выходные данные при создании базы данных mssql

модули/tf-sqlserver-module/main.tf:

resource "azurerm_mssql_server" "sqlserver" {
  administrator_login = var.admin_username
  administrator_login_password = var.admin_pw
  name                = local.sql_full_name
  resource_group_name = var.rg_sql_name
  location            = var.location
  version             = "12.0"  # Choose the desired SQL Server version
  azuread_administrator {
    login_username    = var.azure_ad_admin_user
    object_id         = var.azure_ad_object_id
  }
  tags = {
    project           = "${var.project_tag}"
    environment       = "${var.environment_tag}"
  }
  identity {
    type = "SystemAssigned"
  }
}

модули/tf-sqlserver-module/outputs.tf:

output "sql_server_id" {
  description = "ID of the created Azure SQL Server"
  value       = azurerm_mssql_server.sqlserver.id
}

output "sql_server_fqdn" {
  description = "Fully qualified domain name (FQDN) of the SQL Server"
  value       = azurerm_mssql_server.sqlserver.fully_qualified_domain_name
}

output "azure_ad_admin_user" {
  description = "Azure AD Admin User Principal Name"
  value       = var.azure_ad_admin_user
}

groups/tf-sqlserver-module/variables.tf, содержащий все необходимые переменные.

в sqldb-dev/terragrunt.hcl

...
dependency "sql_srv" {
  config_path = "../sqlserver-dev"
  mock_outputs = {
    sql_server_id = "tempid"
  }
}

inputs = {
  db_prefix = local.db_prefix
  location = local.location
  collation = local.collation
  project_tag = local.project
  environment_tag = local.environment
  sql_server_id = dependency.sql_srv.outputs.sql_server_id
  branch = "dev"
}

sqlserver-dev/terragrunt.hcl:

Я получаю эту ошибку для базы данных Unsupported attribute; This object does not have an attribute named "sql_server_id".

Я пытаюсь создать среду interragrunt. Ожидаемый результат должен заключаться в том, что sqldb получает данные из модуля.

Вместо того, чтобы ссылаться на него из блока зависимостей, можете ли вы попробовать ссылаться на него непосредственно из блока terraform main.tf output. @Faux_Clef

Jahnavi 07.05.2024 12:07

Как мне это сделать?

Faux_Clef 08.05.2024 13:05
Как установить 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...
0
2
70
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ваш config_path должен быть ../modules/tf-sqlserver-module.

...
dependency "sql_srv" {
  config_path = "../modules/tf-sqlserver-module"
  mock_outputs = {
    sql_server_id = "tempid"
  }
}

inputs = {
  db_prefix = local.db_prefix
  location = local.location
  collation = local.collation
  project_tag = local.project
  environment_tag = local.environment
  sql_server_id = dependency.sql_srv.outputs.sql_server_id
  branch = "dev"
}

Это неправильно, мои модули terraform являются просто terraform и не содержат terragrunt.hcl: ``` time=2024-05-08T12:57:58+02:00 level=error msg=Error . … ./modules/tf-sqlserver-module/terragrunt.hcl: Система не может найти указанный файл. time=2024-05-08T12:57:58+02:00 level=error msg=Невозможно определить базовый код выхода, поэтому Terragrunt завершит работу с кодом ошибки 1 ```

Faux_Clef 08.05.2024 13:01
Ответ принят как подходящий

Я решил эту проблему, добавив блок данных в файл переменных.tf:

data "azurerm_mssql_server" "sqlserver" {
  resource_group_name = var.rg_sql_name
  name = local.sql_full_name
}

Output.tf получит данные следующим образом:

output "server_id" {
  description = "ID of the created Azure SQL Server"
  value       = data.azurerm_mssql_server.sqlserver.id
}

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

Похожие вопросы