Я следую этому руководству, чтобы создавать индексы, индексаторы и источники данных Azure AI Search: https://medium.com/expert-thinking/mastering-azure-search-with-terraform-a-how-to-guide -7edc3a6b1ee3
Я хочу иметь возможность создать службу поиска Azure AI с помощью Terraform, а затем использовать созданный ею ключ API для использования в моем провайдере restapi.
С использованием:
терраформ v.1.7.1
хашикорп/азурерм v3.95.0
мастеркард/рестапи v1.19.0
среда/dev/main.tf
module "main" {
source = "../.."
environment = var.environment
az_subscription_id = var.az_subscription_id
other_modules_vars = .....
azure_search_api_key = [how to get this after creating the azure search?]
}
main.tf:
module "az-search" {
source = "./modules/az-search"
environment = var.environment
az_resource_group_name = var.az_resource_group_name
az_resource_group_location = var.az_resource_group_location
providers = {
azurerm = azurerm.sub
}
}
провайдеры.tf:
provider "azurerm" {
alias = "sub"
subscription_id = var.az_subscription_id
features {}
}
provider "restapi" {
uri = "https://some-search.search.windows.net"
write_returns_object = true
debug = true
headers = {
"api-key" = [how do I get this from the created resource?]
"Content-Type" = "application/json"
}
create_method = "POST"
update_method = "PUT"
destroy_method = "DELETE"
}
az-search/main.tf
resource "azurerm_search_service" "search" {
name = "some-search"
resource_group_name = var.az_resource_group_name
location = var.az_resource_group_location
sku = var.sku
}
resource "restapi_object" "create_datasource" {
path = "/datasources"
query_string = "api-version=2023-10-01-Preview"
data = file(var.datasource_path)
id_attribute = "name"
}
Могу ли я получить ключ API из созданного ресурса, а затем вставить его в провайдер рестапи? Если нужна дополнительная информация, дайте мне знать, я только начинаю терраформирование и добавляю к предыдущему коду.
Как получить ключ API от службы поиска Azure AI, созданной в Terraform, чтобы использовать его в другом ресурсе?
Во-первых, ниже приведены два API_keys
ключа доступа: один primary
, а другой secondary
для управления доступом к API. Любой из способов будет полезен для доступа к сервису.
Итак, в terraform есть два конкретных атрибута , как для primary_APIkey
, так и для secondary_APIkey
.
Используйте блок выходов для получения ключа API из службы поиска Azure AI, который будет предоставлен поставщику API для отдыха, как показано ниже.
output "rest_api_key"{
value = azurerm_search_service.example.primary_key
sensitive = true
main.tf
:
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.108.0"
}
}
}
provider "azurerm"{
features{}
}
data "azurerm_resource_group" "example" {
name = "asha"
}
resource "azurerm_search_service" "example" {
name = "newsearchservicej"
resource_group_name = data.azurerm_resource_group.example.name
location = data.azurerm_resource_group.example.location
sku = "standard"
}
output "rest_api_key"{
value = azurerm_search_service.example.primary_key
sensitive = false
}
Примечание. Получите доступ к ключу API из блока output
и передайте его в коде там, где это необходимо.
Выход:
Я не верю, что версии плагинов Terraform, использующие самые последние SDK, позволяют назначать значения аргументов провайдера из атрибутов экспортированных ресурсов.