Я создаю сервер Azure SQL в Azure:
У меня есть variables.tf
файл, в котором в данный момент находится пароль администратора:
variable "sql_server_admin_password" {
description = "admin password"
default = "xxxx"
}
Затем я ссылаюсь на это в основном файле:
resource "azurerm_sql_server" "main" {
name = var.sql_server_name
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
version = "12.0"
administrator_login = var.sql_server_admin_login
administrator_login_password = var.sql_server_admin_password
}
Я не хочу регистрировать этот файл в системе контроля версий.
Есть ли способ Terraform добавить имя пользователя и пароль администратора в переменные среды?
решение1
В зависимости от того, как настроено ваше развертывание. Вы можете сгенерировать пароль (random_password) и сохранить его в безопасности в keyvault и ссылаться на него в дальнейшем при развертывании вашего SQL. Вы также можете ссылаться на существующий keyvault secret, чтобы использовать его в качестве пароля.
Некоторые ссылки по теме от Terraform:
Создание хранилища ключей в Terraform:https://www.terraform.io/docs/providers/azurerm/r/key_vault.html
Извлеките секрет из существующего хранилища ключей Azure: https://www.terraform.io/docs/providers/azurerm/d/key_vault_secret.html
Информацию, связанную с Azure Key Vault, можно найти здесь:https://azure.microsoft.com/en-us/services/key-vault/
решение2
В качестве самого простого варианта можно удалить значение переменной по умолчанию и передавать переменную при выполнении terraform plan
или apply
. Просто export TF_SQL_SERVER_ADMIN_PASSWORD=<password>
и запускать команды terraform. Кроме того, ее можно безопасно передавать во время сборок. Интеграция Azure KeyVault или HashiCorp Vault для извлечения переменных — более сложный, но более безопасный способ.