我正在尝试为 terraform 中的应用程序服务创建自定义主机名绑定,并且我正在使用以下配置
resource "azurerm_app_service_custom_hostname_binding" "webapp_fqdn" {
for_each = local.apsvc_fqdns_locations
hostname = each.value.fqdn
app_service_name = azurerm_app_service.webapp[each.value.apsvc_location_key].name
resource_group_name = var.regional_web_rg[each.value.location].name
ssl_state = "SniEnabled"
thumbprint = azurerm_app_service_certificate.cert[each.value.certificate_location_key].thumbprint
}
resource "azurerm_app_service_certificate" "cert" {
for_each = local.certificates_locations
name = each.value.certificate_name
resource_group_name = var.regional_web_rg[each.value.location].name
location = each.value.location
key_vault_secret_id = data.azurerm_key_vault_secret.cert[each.value.certificate_name].id
}
Run Code Online (Sandbox Code Playgroud)
代码失败(偶尔),并显示以下错误“找不到名称为 6CAC9XXXX 的证书”。出现错误时,我可以进入门户并看到以下内容
如果我通过运行以下命令通过 Az PowerShell 模块创建这些资源
Set-AzWebApp -Name app508-resc-aa1-web-centralus-showcase-apsvc -ResourceGroupName app508-resc-aa1-web-centralus -HostNames @("showcase-aa1.np.dayforcehcm.com")
New-AzWebAppSSLBinding -ResourceGroupName app508-resc-aa1-web-centralus -WebAppName app508-resc-aa1-web-centralus-showcase-apsvc -Thumbprint "6CAC9XXXX" -Name "showcase-aa1.np.dayforcehcm.com"
Run Code Online (Sandbox Code Playgroud)
它工作得很好并且资源被正确创建。看起来 terraform 尝试使用一个资源 azurerm_app_service_custom_hostname_binding 创建主机名和自定义主机名绑定,那么这是我面临的某种竞争条件还是我使用了错误的资源?
我正在运行以下 PowerShell 代码,我需要保持原始哈希表键的顺序。
function New-GetServiceConnectionTask( $serviceConnectionId)
{
@{
environment = @{ }
taskId = '0a9fdc5e-3f3a-4d3d-9f63-a4f007f9a1fe'
version = "1.*"
name = 'Get Service Endpoint Credentials'
refName = ''
enabled = $true
alwaysRun = $false
continueOnError = $false
timeoutInMinutes = 0
definitionType = 'task'
overrideInputs = @{ }
condition = 'succeeded()'
inputs = @{
connectedServiceNameARM = $serviceConnectionId
}
}
}
New-GetServiceConnectionTask xxx | ConvertTo-Json -Depth 99
Run Code Online (Sandbox Code Playgroud)
函数返回
{
"version": "1.*",
"refName": "",
"definitionType": "task",
"overrideInputs": {},
"name": "Get Service Endpoint Credentials",
"environment": …Run Code Online (Sandbox Code Playgroud) 我正在本地计算机上运行 .net core 应用程序。\n以下是连接到 mongo db 的代码
\npublic BookService(IBookstoreDatabaseSettings settings)\n {\n var client = new MongoClient("mongodb://admin:password@localhost:27017");\n var database = client.GetDatabase("BookstoreDb");\n\n _books = database.GetCollection<Book>(settings.BooksCollectionName);\n }\nRun Code Online (Sandbox Code Playgroud)\n另外我正在运行以下 docker compose 文件
\nversion: '3'\nservices: \n mongodb:\n image: mongo\n ports:\n - 27017:27017\n environment:\n - MONGO_INITDB_ROOT_USERNAME=admin\n - MONGO_INITDB_ROOT_PASSWORD=password\n mongo-express:\n image: mongo-express\n ports:\n - 8081:8081\n environment:\n - ME_CONFIG_MONGODB_ADMINUSERNAME=admin\n - ME_CONFIG_MONGODB_ADMINPASSWORD=password\n - ME_CONFIG_MONGODB_SERVER=mongodb\nRun Code Online (Sandbox Code Playgroud)\n当我使用 dotnet run 运行应用程序,然后请求 http://localhost:5001/api/books 时。一切都工作得很好,API 能够访问 mongo 数据库。
\n接下来,我使用标准 .net core Docker 文件对我的应用程序进行容器化
\nFROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env\nWORKDIR /app\n\n# …Run Code Online (Sandbox Code Playgroud)