- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在下载 .war 文件。我想将其部署到应用程序服务上。为此,我创建了一个容器并将 .war 文件部署到该容器上。我不确定应用程序服务和存储之间的连接如何工作。我尝试了以下代码:
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "rg2" {
name = "resoursegrpthree"
location = "East US"
}
resource "azurerm_virtual_network" "virtunet1" {
name = "virnetxample"
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.rg2.location
resource_group_name = azurerm_resource_group.rg2.name
}
resource "azurerm_subnet" "snet1" {
name = "sunetxample"
resource_group_name = azurerm_resource_group.rg2.name
virtual_network_name = azurerm_virtual_network.virtunet1.name
address_prefixes = ["10.0.1.0/24"]
delegation {
name = "delegationapp2"
service_delegation {
name = "Microsoft.Web/serverFarms"
actions = ["Microsoft.Network/virtualNetworks/subnets/action"]
}
}
}
resource "azurerm_app_service_plan" "azurewebapp2" {
name = "example-appservice-plan"
location = azurerm_resource_group.rg2.location
resource_group_name = azurerm_resource_group.rg2.name
kind = "Linux"
reserved = true
sku {
tier = "Standard"
size = "B1"
}
}
resource "azurerm_app_service" "appservice2" {
name = "terraformappsvc"
location = azurerm_resource_group.rg2.location
resource_group_name = azurerm_resource_group.rg2.name
app_service_plan_id = azurerm_app_service_plan.azurewebapp2.id
site_config {
java_version = "1.8"
java_container = "TOMCAT"
java_container_version = "9.0"
remote_debugging_enabled = true
}
app_settings = {
"WEBSITE_WEBDEPLOY_USE_SCM" = "true"
}
connection_string {
name = "ExampleDB"
type = "SQLServer"
value = "Server=myserver;User Id=myuser;Password=mypassword;Initial Catalog=mydb;"
}
}
resource "azurerm_storage_account" "storagesecond2" {
name = "accountstoragsec2"
resource_group_name = azurerm_resource_group.rg2.name
location = azurerm_resource_group.rg2.location
account_tier = "Standard"
account_replication_type = "LRS"
}
resource "azurerm_storage_container" "storageofwebapp" {
name = "webappcontainer"
storage_account_name = azurerm_storage_account.storagesecond2.name
container_access_type = "private"
}
resource "azurerm_storage_blob" "blobexample" {
name = "ram.war"
storage_account_name = azurerm_storage_account.storagesecond2.name
storage_container_name = azurerm_storage_container.storageofwebapp.name
type = "Block"
source = "C:/Users/s***/Downloads/My_App.war"
}
resource "azurerm_app_service_virtual_network_swift_connection" "netswixam" {
app_service_id = azurerm_app_service.appservice2.id
subnet_id = azurerm_subnet.snet1.id
}
上面的代码成功创建了容器,我下载的文件位于容器中。但是,当我单击应用程序服务域 URL 时,无法打开该应用程序。谁可以帮我这个事?提前致谢。
最佳答案
I try to write the Terraform Code on How to deploy a war file from local computer downloads onto the Azure app service
仅依靠 Terraform 不足以促进将 .war
文件从 Azure Blob 存储部署到 Azure Web 应用。虽然 Terraform 擅长建立和设置基础设施,但建议使用额外的部署脚本来有效地编排部署过程。
但是之前需要注意这些步骤
.war
文件位于 Azure Blob 存储中。.war
文件的脚本。这是一个使用curl的基本示例:
#!/bin/bash
# Variables
WEBAPP_NAME="your_webapp_name"
RESOURCE_GROUP="your_resource_group"
WAR_FILE_URL="https://your_storage_account.blob.core.windows.net/your_container/your_file.war?${SAS_TOKEN}"
# Get publishing profile for the Web App
PUBLISH_PROFILE=$(az webapp deployment list-publishing-profiles --name $WEBAPP_NAME --resource-group $RESOURCE_GROUP --query "[?publishMethod=='MSDeploy'].{user:userName,pass:userPWD}" -o tsv)
# Extract username and password
USERNAME=$(echo $PUBLISH_PROFILE | awk '{print $1}')
PASSWORD=$(echo $PUBLISH_PROFILE | awk '{print $2}')
# Use Kudu REST API to deploy the war file
curl -X POST -u $USERNAME:$PASSWORD \
-H "Content-Type: application/json" \
-d "{\"packageUri\":\"$WAR_FILE_URL\"}" \
"https://$WEBAPP_NAME.scm.azurewebsites.net/api/wardeploy"
我的地形配置:
data "azurerm_resource_group" "rg2"{
name = "bolliv"
}
resource "azurerm_virtual_network" "virtunet1" {
name = "virnetxample"
address_space = ["10.0.0.0/16"]
location = data.azurerm_resource_group.rg2.location
resource_group_name = data.azurerm_resource_group.rg2.name
}
resource "azurerm_subnet" "snet1" {
name = "sunetxample"
resource_group_name = data.azurerm_resource_group.rg2.name
virtual_network_name = azurerm_virtual_network.virtunet1.name
address_prefixes = ["10.0.1.0/24"]
delegation {
name = "delegationapp2"
service_delegation {
name = "Microsoft.Web/serverFarms"
actions = ["Microsoft.Network/virtualNetworks/subnets/action"]
}
}
}
resource "azurerm_app_service_plan" "azurewebapp2" {
name = "example-appservice-plan"
location = data.azurerm_resource_group.rg2.location
resource_group_name = data.azurerm_resource_group.rg2.name
kind = "Linux"
reserved = true
sku {
tier = "Standard"
size = "B1"
}
}
resource "azurerm_storage_account" "storagesecond2" {
name = "accountstoragsecvk"
resource_group_name = data.azurerm_resource_group.rg2.name
location = data.azurerm_resource_group.rg2.location
account_tier = "Standard"
account_replication_type = "LRS"
}
data "azurerm_storage_account_sas" "test" {
connection_string = "${azurerm_storage_account.testsa.primary_connection_string}"
https_only = true
resource_types {
service = true
container = false
object = false
}
services {
blob = true
queue = false
table = false
file = false
}
start = "2018-03-21"
expiry = "2020-03-21"
permissions {
read = true
write = true
delete = false
list = false
add = true
create = true
update = false
process = false
}
}
output "sas_url_query_string" {
value = data.azurerm_storage_account_sas.test.sas"
}
resource "azurerm_storage_container" "storageofwebapp" {
name = "webappcontainer"
storage_account_name = azurerm_storage_account.storagesecond2.name
//container_access_type = "public"
}
resource "azurerm_storage_blob" "blobexample" {
name = "demovk.war"
storage_account_name = azurerm_storage_account.storagesecond2.name
storage_container_name = azurerm_storage_container.storageofwebapp.name
type = "Block"
source = "C:/Users/v-bolliv/Downloads/demovk.war"
}
resource "azurerm_app_service_virtual_network_swift_connection" "netswixam" {
app_service_id = azurerm_app_service.appservice2.id
subnet_id = azurerm_subnet.snet1.id
}
resource "azurerm_app_service" "appservice2" {
name = "terraformappsvk"
location = data.azurerm_resource_group.rg2.location
resource_group_name = data.azurerm_resource_group.rg2.name
app_service_plan_id = azurerm_app_service_plan.azurewebapp2.id
site_config {
java_version = "1.8"
java_container = "TOMCAT"
java_container_version = "9.0"
remote_debugging_enabled = true
}
app_settings = {
"WEBSITE_WEBDEPLOY_USE_SCM" = "true"
}
connection_string {
name = "ExampleDB"
type = "SQLServer"
value = "Server=myserver;User Id=myuser;Password=mypassword;Initial Catalog=mydb;"
}
provisioner "local-exec" {
command = "./deploy_war.sh"
environment = {
SAS_TOKEN = data.azurerm_storage_account_sas.example.sas
}
}
}
输出:
根据要求完成配置后,Azure 和 blob 之间就会建立连接,这使您可以访问所需的 Java 应用程序。
关于azure - Terraform代码如何将本地计算机下载的war文件部署到Azure应用程序服务上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76948888/
有什么方法可以将 Terraform 模板输出用于另一个 Terraform 模板的输入? 例如:我有一个创建 ELB 的 Terraform 模板,我有另一个 Terraform 模板,它将创建一个
我正在使用 Terraform 在 Azure 中设置虚拟网络。 我有几个 VNet,每个 VNet 都有自己的网络安全组 100% 在 Terraform 中管理,在运行 Terraform 之前不
resources and data sources在 terraform 文档中 link ,谁能解释一下它们的区别以及可以使用它们的示例场景 最佳答案 Data Sources :允许 Terra
terraform plan 等命令如何知道/决定使用哪些文件? -help 显示了一个 DIR-OR-PLAN 参数,但没有显示如何使用它: $ terraform -help plan Usage
我在尝试运行使用 terraform lock 的 terraform 脚本时收到以下错误消息。 *Acquiring state lock. This may take a few moments.
我想简化这样的构造 variable "google" { type = object({ project = string region = string
这是一个场景 - 您开发用于研发组织的 terraform 模块。它们已经被一两个微服务使用,转化为十几个 pod。您确定了重构机会,例如将某些功能提取到其自己的 terraform 模块中。很好,但
Terraform 是否支持条件属性?我只想根据变量的值使用属性。 例子: resource "aws_ebs_volume" "my_volume" { availability_zone =
我想将此作为功能请求发布,但我想在发布之前看看是否有其他人找到了一些聪明的方法。或者也许 Hashicorp 的某个人可以告诉我这将是 future 的一个功能 在运行 terraform apply
我在 terraform 的变量插值中遇到了麻烦。这是我的 terraform 配置的样子。即内置函数内的变量 variable "key" {} ssh_keys { pat
运行 terraform 并等待需要很长时间。 所以我想运行它来排除需要最长执行时间的 rds 或者我只想运行 ec2 资源。 有没有办法在 terraform 中做这样的事情? 最佳答案 您可以使用
terraform 是否提供这样的功能来覆盖变量值?假设我已经声明了下面给出的两个变量。 variable "foo" {} variable "bar" { default = "false"} f
我正在为 Terraform Associate Certification 做准备考试。我在 Udemy 上进行了一次练习考试,并收到了一个关于自动安装社区提供程序的问题。但是,根据实际 terra
我有很多使用 Terraform 的 gcp-provider 用 Terraform 0.11 编写的 Terraform 模块,并希望将其升级到 Terraform 0.12。 为此,我需要保留系
我的项目有 2 个存储库。静态网站和服务器。我希望网站由 cloudfront 和 s3 托管,服务器在 elasticbeanstalk 上。我知道这些资源至少需要了解 Route53 资源才能在同
我能有这样的资源吗 resource "foo" "bar.baz"{ ... } 或者以后 . 会把我搞砸吗?特别是,是否允许这样做: resource "foo" "other"{ ...
我能有这样的资源吗 resource "foo" "bar.baz"{ ... } 或者以后 . 会把我搞砸吗?特别是,是否允许这样做: resource "foo" "other"{ ...
运行时terraform init使用 Terraform 时 0.11.3我们收到以下错误: Initializing provider plugins... - Checking for avai
我正在尝试将项目的 CLI 工作区迁移到 Terraform Cloud。我正在使用 Terraform 版本 0.14.8 并遵循官方指南 here . $ terraform0.14.8 work
尝试在Azure Pipeline中将terraform init作为任务运行时,错误指出 spawn C:\hostedtoolcache\windows\terraform\0.12.7\x64\
我是一名优秀的程序员,十分优秀!