lea*_*ner 10 terraform-provider-azure
我有以下三个文件:main.tf、variables.tf 和 dev.auto.tfvars
main.tf中的片段
module "sql_vms" {
source = "git::git@github.com:xxxxxxxxxxxx/terraform-modules//azure/"
rg_name = var.resource_group_name
location = module.resource_group.external_rg_location
vnet_name = var.virtual_network_name
subnet_name = var.sql_subnet_name
app_nsg = var.application_nsg
vm_count = var.count_vm
base_hostname = var.sql_host_basename
sto_acc_suffix = var.storage_account_suffix
vm_size = var.virtual_machine_size
vm_publisher = var.virtual_machine_image_publisher
vm_offer = var.virtual_machine_image_offer
vm_sku = var.virtual_machine_image_sku
vm_img_version = var.virtual_machine_image_version
username = var.username
password = var.password
}
Run Code Online (Sandbox Code Playgroud)
来自variables.tf的片段
variable "app_subnet_name" {
type = string
}
variable "sql_subnet_name" {
type = string
}
Run Code Online (Sandbox Code Playgroud)
来自dev.auto.tfvars的片段
app_subnet_name = "subnet_1"
sql_subnet_name = "subnet_2"
application_nsg = "test_nsg"
Run Code Online (Sandbox Code Playgroud)
但是,我收到如下错误
Error: Unsupported argument
on main.tf line 7, in module "sql_vms":
7: subnet_name = var.sql_subnet_name
An argument named "subnet_name" is not expected here.
Error: Unsupported argument
on main.tf line 8, in module "sql_vms":
8: app_nsg = var.application_nsg
An argument named "app_nsg" is not expected here.
Run Code Online (Sandbox Code Playgroud)
我的模块目录结构如下所示
$ ls -R terraform-modules/
terraform-modules/:
aws azure gcp
terraform-modules/aws:
alb ec2-instance-rhel
terraform-modules/aws/alb:
terraform-modules/aws/ec2-instance-rhel:
main.tf
terraform-modules/azure:
compute resourcegroup sqlserver
terraform-modules/azure/compute:
main.tf README.md variable.tf
terraform-modules/azure/resourcegroup:
data.tf outputs.tf variables.tf
terraform-modules/azure/sqlserver:
main.tf README.md variables.tf
terraform-modules/gcp:
compute
terraform-modules/gcp/compute:
main.tf
Run Code Online (Sandbox Code Playgroud)
知道这里出了什么问题吗?
Cyc*_*ave 16
如果您开始使用 Terraform,如果您的模块参数引用资源属性而不是变量名称,您将收到错误消息(“此处不需要名为“example”的参数”),请参阅下面的示例:
您想要从模块调用的 Terraform 模块“example_mod.tf”的示例:
variable "sg_name" { } # Usually in a separate file
variable "sg_desc" { } # called variables.tf
resource "example_resource" "example_name" {
name = var.sg_name
description = var.sg_desc
...
}
Run Code Online (Sandbox Code Playgroud)
正确方法:
module "my_module" {
source = "./modules/example_mod.tf"
sg_name = "whatever" # NOTE the left hand side "sg_name" is the variable name
sg_desc = "whatever"
...
}
Run Code Online (Sandbox Code Playgroud)
错误的方式:(给出错误“此处不需要名为“name”的参数”)
module "my_module" {
source = "./modules/example_mod.tf"
name = "whatever" # WRONG because the left hand side "name" is a resource property
description = "whatever" # WRONG for the same reason
...
}
Run Code Online (Sandbox Code Playgroud)
我认为问题在于您没有引用源代码中的确切模块。我看到源代码中有三个模块:
source = "git::git@github.com:xxxxxxxxxxxx/terraform-modules//azure/"
Run Code Online (Sandbox Code Playgroud)
他们是compute、resourcegroup和sqlserver。但您想将它们加载到一个模块中。所以它找不到模块的相关变量。我也不认为这是加载所有模块的正确方法。我建议您一一加载模块,如下所示:
module "compute" {
source = "git::git@github.com:xxxxxxxxxxxx/terraform-modules//azure/compute"
...
}
module "resourcegroup" {
source = "git::git@github.com:xxxxxxxxxxxx/terraform-modules//azure/resourcegroup"
...
}
module "sqlserver" {
source = "git::git@github.com:xxxxxxxxxxxx/terraform-modules//azure/sqlserver"
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56029 次 |
| 最近记录: |