i have created VM from the windows Template in Vsphere
and i want to execute PowerShell Script on that, here i am using file to copy a script and execute it but i am getting error, i have kept my script on root path.
Error log: GitHub - athirumalairaja/terraform.log
Getting this error:
Error: file provisioner error
with null_resource.remote-exec,
on main.tf line 92, in resource “null_resource” “remote-exec”:
92: provisioner “file” {
timeout - last error: http response error: 401 - invalid content type
2023-07-12T15:09:55.787+0530 [TRACE] statemgr.Filesystem: removing lock metadata file .terraform.tfstate.lock.info
2023-07-12T15:09:55.787+0530 [TRACE] statemgr.Filesystem: unlocked by closing terraform.tfstate
2023-07-12T15:09:55.793+0530 [DEBUG] provider.stdio: received EOF, stopping recv loop: err=“rpc error: code = Unavailable desc = error reading from server: EOF”
2023-07-12T15:09:55.818+0530 [DEBUG] provider: plugin process exited:
path=.terraform/providers/registry.terraform.io/hashicorp/null/3.2.1/windows_amd64/terraform-provider-null_v3.2.1_x5.exe pid=20472
2023-07-12T15:09:55.818+0530 [DEBUG] provider: plugin exited
provider "vsphere" {
vsphere_server = var.vsphere_server
user = var.vsphere_username
password = var.vsphere_password
allow_unverified_ssl = var.vsphere_insecure
}
data "vsphere_datacenter" "datacenter" {
name = var.vsphere_datacenter
}
data "vsphere_network" "network" {
name = var.vsphere_network
datacenter_id = data.vsphere_datacenter.datacenter.id
}
data "vsphere_compute_cluster" "cluster" {
name = var.vsphere_cluster
datacenter_id = data.vsphere_datacenter.datacenter.id
}
data "vsphere_resource_pool" "pool" {
name = format("%s%s", data.vsphere_compute_cluster.cluster.name, "/Resources")
datacenter_id = data.vsphere_datacenter.datacenter.id
}
data "vsphere_datastore" "datastore" {
name = var.vsphere_datastore
datacenter_id = data.vsphere_datacenter.datacenter.id
}
data "vsphere_virtual_machine" "template" {
name = var.vsphere_template
datacenter_id = data.vsphere_datacenter.datacenter.id
}
resource "vsphere_virtual_machine" "vm" {
name = var.vm_name
num_cpus = var.vm_cpus
memory = var.vm_memory
firmware = var.vm_firmware
efi_secure_boot_enabled = var.vm_efi_secure_boot_enabled
guest_id = data.vsphere_virtual_machine.template.guest_id
datastore_id = data.vsphere_datastore.datastore.id
resource_pool_id = data.vsphere_resource_pool.pool.id
network_interface {
network_id = data.vsphere_network.network.id
}
disk {
label = "disk0"
size = data.vsphere_virtual_machine.template.disks[0].size
eagerly_scrub = data.vsphere_virtual_machine.template.disks[0].eagerly_scrub
thin_provisioned = data.vsphere_virtual_machine.template.disks[0].thin_provisioned
}
clone {
template_uuid = data.vsphere_virtual_machine.template.id
customize {
timeout = 20
windows_options {
computer_name = var.vm_name
time_zone = 045
workgroup = "WORKGROUP"
admin_password = var.vm_admin_password
}
network_interface {
ipv4_address = var.vm_ipv4_address
ipv4_netmask = var.vm_ipv4_netmask
}
ipv4_gateway = var.vm_ipv4_gateway
dns_suffix_list = var.vm_dns_suffix_list
dns_server_list = var.vm_dns_server_list
}
}
lifecycle {
ignore_changes = [
clone[0].template_uuid,
]
}
}
resource "null_resource" "remote-exec" {
connection {
type = "winrm"
user = "Administrator"
password = var.vm_admin_password
host = vsphere_virtual_machine.vm.default_ip_address
}
provisioner "file" {
source = "test.ps1"
destination = "C:/Users/Administrator/Desktop/test.ps1"
}
provisioner "remote-exec" {
inline = [
"powershell -ExecutionPolicy Unrestricted -File 'C:/Users/Administrator/Desktop/test.ps1'"
]
}
}