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]
コメントを追加