terraform / azureの奇妙なエラー「必要な引数がありません」

BarrySDCA

AzureのWindowsVMでコマンドを実行するための非常に単純なスクリプトを作成しました。しかし、私はこれらのエラーを受け取っています:

エラー:必要な引数がありません

.terraform \ modules \ run_command \ main.tfの23行目、リソース "azurerm_virtual_machine_extension" "linux":23:リソース "azurerm_virtual_machine_extension" "linux" {

引数「virtual_machine_id」が必要ですが、定義が見つかりませんでした。

エラー:サポートされていない引数

.terraform \ modules \ run_command \ main.tf行26、リソース "azurerm_virtual_machine_extension" "linux":26:location
= "$ {data.azurerm_resource_group.main.location}"

ここでは、「場所」という名前の引数は想定されていません。

エラー:サポートされていない引数

.terraform \ modules \ run_command \ main.tf行27、リソース "azurerm_virtual_machine_extension" "linux":27:
resource_group_name = "$ {data.azurerm_resource_group.main.name}"

ここでは、「resource_group_name」という名前の引数は想定されていません。

エラー:サポートされていない引数

.terraform \ modules \ run_command \ main.tf行28、リソース "azurerm_virtual_machine_extension" "linux":28:
virtual_machine_name = "$ {data.azurerm_virtual_machine.main.name}"

ここでは、「virtual_machine_name」という名前の引数は想定されていません。

エラー:必要な引数がありません

.terraform \ modules \ run_command \ main.tf行37、リソース "azurerm_virtual_machine_extension" "windows":37:リソース "azurerm_virtual_machine_extension" "windows" {

引数「virtual_machine_id」が必要ですが、定義が見つかりませんでした。

エラー:サポートされていない引数

.terraform \ modules \ run_command \ main.tf行40、リソース "azurerm_virtual_machine_extension" "windows":40:location
= "$ {data.azurerm_resource_group.main.location}"

ここでは、「場所」という名前の引数は想定されていません。

エラー:サポートされていない引数

.terraform \ modules \ run_command \ main.tf行41、リソース "azurerm_virtual_machine_extension" "windows":41:
resource_group_name = "$ {data.azurerm_resource_group.main.name}"

ここでは、「resource_group_name」という名前の引数は想定されていません。

エラー:サポートされていない引数

.terraform \ modules \ run_command \ main.tf行42、リソース "azurerm_virtual_machine_extension" "windows":42:
virtual_machine_name = "$ {data.azurerm_virtual_machine.main.name}"

ただし、「予期しない」引数を削除すると、欠落しているという別のエラーが発生します。

何かアドバイス?どうもありがとう

provider "azurerm" {
  tenant_id       = "..."
  subscription_id = "..."
  features {}
}
# <https://registry.terraform.io/modules/innovationnorway/vm-run-command/azurerm/latest>
module "run_command" {
  source               = "innovationnorway/vm-run-command/azurerm"
  resource_group_name  = "dc-rg"
  virtual_machine_name = "AD1"
  os_type              = "windows"

  script = <<EOF
Install-Module -Name PSWindowsUpdate -Force -AllowClobber
Get-WUInstall -WindowsUpdate -AcceptAll -UpdateType Software -IgnoreReboot
Get-WUInstall -MicrosoftUpdate -AcceptAll -IgnoreUserInput -IgnoreReboot
EOF
}

前もって感謝します。大変感謝いたします。

リポジトリで見つけたrun_commandのコードを含めるように編集しました。

run-command main.tf:

locals {
  settings_windows = {
    script   = "${compact(concat(list(var.command), split("\n", var.script)))}"
    fileUris = "${var.file_uris}"
  }

  settings_linux = {
    commandToExecute = "${var.command}"
    fileUris         = "${var.file_uris}"
    script           = "${base64encode(var.script)}"
  }
}

data "azurerm_resource_group" "main" {
  name = "${var.resource_group_name}"
}

data "azurerm_virtual_machine" "main" {
  name                = "${var.virtual_machine_name}"
  resource_group_name = "${data.azurerm_resource_group.main.name}"
}

resource "azurerm_virtual_machine_extension" "linux" {
  count                      = "${lower(var.os_type) == "linux" ? 1 : 0}"
  name                       = "${var.virtual_machine_name}-run-command"
  location                   = "${data.azurerm_resource_group.main.location}"
  resource_group_name        = "${data.azurerm_resource_group.main.name}"
  virtual_machine_name       = "${data.azurerm_virtual_machine.main.name}"
  publisher                  = "Microsoft.CPlat.Core"
  type                       = "RunCommandLinux"
  type_handler_version       = "1.0"
  auto_upgrade_minor_version = true
  protected_settings         = "${jsonencode(local.settings_linux)}"
  tags                       = "${var.tags}"
}

resource "azurerm_virtual_machine_extension" "windows" {
  count                      = "${lower(var.os_type) == "windows" ? 1 : 0}"
  name                       = "${var.virtual_machine_name}-run-command"
  location                   = "${data.azurerm_resource_group.main.location}"
  resource_group_name        = "${data.azurerm_resource_group.main.name}"
  virtual_machine_name       = "${data.azurerm_virtual_machine.main.name}"
  publisher                  = "Microsoft.CPlat.Core"
  type                       = "RunCommandWindows"
  type_handler_version       = "1.1"
  auto_upgrade_minor_version = true
  settings                   = "${jsonencode(local.settings_windows)}"
  tags                       = "${var.tags}"
}

実行コマンドvariables.tf:

variable "resource_group_name" {
  description = "The name of the resource group."
}

variable "virtual_machine_name" {
  description = "The name of the virtual machine."
}

variable "os_type" {
  description = "Specifies the operating system type."
}

variable "command" {
  default     = ""
  description = "Command to be executed."
}

variable "script" {
  default     = ""
  description = "Script to be executed."
}

variable "file_uris" {
  type        = "list"
  default     = []
  description = "List of files to be downloaded."
}

variable "timestamp" {
  default     = ""
  description = "An integer, intended to trigger re-execution of the script when changed."
}

variable "tags" {
  default     = {}
  description = "A mapping of tags to assign to the extension."
}
ナンシー・シオン

Terraformテンプレートazurerm_virtual_machine_extensionの引数リファレンスでは、引数virtual_machine_nameは廃止され、に置き換えられていvirtual_machine_idます。最新のTerraformを使用している場合

Terraform v0.14.4
+ provider registry.terraform.io/hashicorp/azurerm v2.43.0

モジュールをローカルにダウンロードしてから、関連するコードを手動で変更しsource、terraform init / plan / applyを実行するときにローカルパスとしてを変更できます。

さらに、非推奨の補間式がそのモジュールでまだ使用されていることがわかりましたTerraform 0.11以前では、すべての非定数式を補間構文で提供する必要がありましたが、このパターンはTerraform0.12以降では非推奨になりました。

たとえば、パスにモジュールコードをコピーしたと仮定します./modules/run_command次に、必要に応じて関連コードを変更します。

子モジュールrun_command内main.tf

resource "azurerm_virtual_machine_extension" "windows" {
  count                      = lower(var.os_type) == "windows" ? 1 : 0
  name                       = "${var.virtual_machine_name}-run-command"
  
  virtual_machine_id         = data.azurerm_virtual_machine.main.id
  publisher                  = "Microsoft.CPlat.Core"
  type                       = "RunCommandWindows"
  type_handler_version       = "1.1"
  auto_upgrade_minor_version = true
  settings                   = jsonencode(local.settings_windows)
  tags                       = var.tags
}

親モジュール内main.tf

module "run_command" {
  source               = "./modules/run_command"
  resource_group_name  = "dc-rg"
  virtual_machine_name = "AD1"
  os_type              = "windows"

  script = <<EOF
Install-Module -Name PSWindowsUpdate -Force -AllowClobber
Get-WUInstall -WindowsUpdate -AcceptAll -UpdateType Software -IgnoreReboot
Get-WUInstall -MicrosoftUpdate -AcceptAll -IgnoreUserInput -IgnoreReboot
EOF
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

terraformのaws_config_remediation_configurationリソースに引数がありません

分類Dev

NeutralinoJS:エラー:必要な引数 'name'がありません

分類Dev

Terraformエラー:subnet_idsvpcモジュールの属性値タイプが正しくありません

分類Dev

terraformで出力変数を使用する場合、「モジュールの有効な出力ではありません」

分類Dev

エラー:属性値のタイプが正しくありません-Terraform datasource(aws_ip_ranges)

分類Dev

Terraformの動的JSON

分類Dev

このTerraformバージョンと互換性のあるプロバイダー「azure」プラグインはありません。Azurerm -1.28Terraform-

分類Dev

Terraform aws_route53_recordで「エイリアスターゲット名がターゲットゾーン内にありません」というエラーが表示されるのはなぜですか?

分類Dev

Terraform aws:エラー設定ファイルが見つかりません

分類Dev

Terraform Azure VMSSHキー

分類Dev

タイプエラー:複数の.pyファイルで必要な位置引数がありません

分類Dev

djangoでこのエラーが発生する "login()に必要な位置引数が1つありません: 'user'"

分類Dev

Pythonエラー "<method>に1つの必要な位置引数がありません: 'self'"

分類Dev

Azure、terraformレポートnetwork_interface_idは、内部ロードバランサーを作成するときにリストではなく、単一の値である必要があります

分類Dev

Azure Devops-Terraformタスクがエラーで失敗する:無効なバックエンド構成引数

分類Dev

Error: spawn terraform ENOENT during Azure Pipeline Terraform

分類Dev

Add azure SQL user with terraform

分類Dev

Terraform Azure VM SSH Key

分類Dev

Hashicorp Terraform RemoteStateとAzure

分類Dev

Terraform JSON「1:1:不正な文字」エラー

分類Dev

Terraform上のAWSLambda VPC

分類Dev

AzureStackのterraform構成

分類Dev

クラス変数-1つの必要な位置引数がありません

分類Dev

terraform try()関数が見つかりません

分類Dev

Terraform:JSONパスクエリがterraformで機能しない

分類Dev

Terraformエラー「クエリが結果を返しませんでした」

分類Dev

Terraformエラー「クエリが結果を返しませんでした」

分類Dev

「billingAccounts / XXXXXXXXXXXXXXXXXXXXXXXX」の権限がありません:billing.resourceAssociations.create Terraform(GCP)

分類Dev

ルートで奇妙なエラーが発生し、「必要なキーがありません」レール4

Related 関連記事

  1. 1

    terraformのaws_config_remediation_configurationリソースに引数がありません

  2. 2

    NeutralinoJS:エラー:必要な引数 'name'がありません

  3. 3

    Terraformエラー:subnet_idsvpcモジュールの属性値タイプが正しくありません

  4. 4

    terraformで出力変数を使用する場合、「モジュールの有効な出力ではありません」

  5. 5

    エラー:属性値のタイプが正しくありません-Terraform datasource(aws_ip_ranges)

  6. 6

    Terraformの動的JSON

  7. 7

    このTerraformバージョンと互換性のあるプロバイダー「azure」プラグインはありません。Azurerm -1.28Terraform-

  8. 8

    Terraform aws_route53_recordで「エイリアスターゲット名がターゲットゾーン内にありません」というエラーが表示されるのはなぜですか?

  9. 9

    Terraform aws:エラー設定ファイルが見つかりません

  10. 10

    Terraform Azure VMSSHキー

  11. 11

    タイプエラー:複数の.pyファイルで必要な位置引数がありません

  12. 12

    djangoでこのエラーが発生する "login()に必要な位置引数が1つありません: 'user'"

  13. 13

    Pythonエラー "<method>に1つの必要な位置引数がありません: 'self'"

  14. 14

    Azure、terraformレポートnetwork_interface_idは、内部ロードバランサーを作成するときにリストではなく、単一の値である必要があります

  15. 15

    Azure Devops-Terraformタスクがエラーで失敗する:無効なバックエンド構成引数

  16. 16

    Error: spawn terraform ENOENT during Azure Pipeline Terraform

  17. 17

    Add azure SQL user with terraform

  18. 18

    Terraform Azure VM SSH Key

  19. 19

    Hashicorp Terraform RemoteStateとAzure

  20. 20

    Terraform JSON「1:1:不正な文字」エラー

  21. 21

    Terraform上のAWSLambda VPC

  22. 22

    AzureStackのterraform構成

  23. 23

    クラス変数-1つの必要な位置引数がありません

  24. 24

    terraform try()関数が見つかりません

  25. 25

    Terraform:JSONパスクエリがterraformで機能しない

  26. 26

    Terraformエラー「クエリが結果を返しませんでした」

  27. 27

    Terraformエラー「クエリが結果を返しませんでした」

  28. 28

    「billingAccounts / XXXXXXXXXXXXXXXXXXXXXXXX」の権限がありません:billing.resourceAssociations.create Terraform(GCP)

  29. 29

    ルートで奇妙なエラーが発生し、「必要なキーがありません」レール4

ホットタグ

アーカイブ