0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-07-01 19:12:59 +00:00

Continued work on VM resource

This commit is contained in:
Dan Petersen 2019-12-27 19:36:12 +01:00
parent 08e389dac8
commit f69339966a
4 changed files with 55 additions and 29 deletions

View File

@ -334,6 +334,7 @@ This resource doesn't expose any additional attributes.
* `gateway` - (Optional) The IPv6 gateway (must be omitted when `dhcp` is used as the address)
* `user_account` - (Required) The user account configuration
* `keys` - (Required) The SSH keys
* `password` - (Optional) The SSH password
* `username` - (Required) The SSH username
* `cpu` - (Optional) The CPU configuration
* `cores` - (Optional) The number of CPU cores (defaults to `1`)

View File

@ -12,6 +12,7 @@ resource "proxmox_virtual_environment_vm" "example" {
user_account {
keys = ["${trimspace(tls_private_key.example.public_key_openssh)}"]
password = "proxmoxtf"
username = "ubuntu"
}
}
@ -43,3 +44,7 @@ resource "tls_private_key" "example" {
algorithm = "RSA"
rsa_bits = 2048
}
output "resource_proxmox_virtual_environment_vm_example_id" {
value = "${proxmox_virtual_environment_vm.example.id}"
}

View File

@ -15,35 +15,36 @@ import (
)
const (
dvResourceVirtualEnvironmentVMAgentEnabled = false
dvResourceVirtualEnvironmentVMAgentTrim = false
dvResourceVirtualEnvironmentVMAgentType = "virtio"
dvResourceVirtualEnvironmentVMCDROMEnabled = false
dvResourceVirtualEnvironmentVMCDROMFileID = ""
dvResourceVirtualEnvironmentVMCloudInitDNSDomain = ""
dvResourceVirtualEnvironmentVMCloudInitDNSServer = ""
dvResourceVirtualEnvironmentVMCPUCores = 1
dvResourceVirtualEnvironmentVMCPUHotplugged = 0
dvResourceVirtualEnvironmentVMCPUSockets = 1
dvResourceVirtualEnvironmentVMDescription = ""
dvResourceVirtualEnvironmentVMDiskDatastoreID = "local-lvm"
dvResourceVirtualEnvironmentVMDiskEnabled = true
dvResourceVirtualEnvironmentVMDiskFileFormat = "qcow2"
dvResourceVirtualEnvironmentVMDiskFileID = ""
dvResourceVirtualEnvironmentVMDiskSize = 8
dvResourceVirtualEnvironmentVMKeyboardLayout = "en-us"
dvResourceVirtualEnvironmentVMMemoryDedicated = 512
dvResourceVirtualEnvironmentVMMemoryFloating = 0
dvResourceVirtualEnvironmentVMMemoryShared = 0
dvResourceVirtualEnvironmentVMName = ""
dvResourceVirtualEnvironmentVMNetworkDeviceBridge = "vmbr0"
dvResourceVirtualEnvironmentVMNetworkDeviceEnabled = true
dvResourceVirtualEnvironmentVMNetworkDeviceMACAddress = ""
dvResourceVirtualEnvironmentVMNetworkDeviceModel = "virtio"
dvResourceVirtualEnvironmentVMNetworkDeviceVLANID = -1
dvResourceVirtualEnvironmentVMOSType = "other"
dvResourceVirtualEnvironmentVMPoolID = ""
dvResourceVirtualEnvironmentVMVMID = -1
dvResourceVirtualEnvironmentVMAgentEnabled = false
dvResourceVirtualEnvironmentVMAgentTrim = false
dvResourceVirtualEnvironmentVMAgentType = "virtio"
dvResourceVirtualEnvironmentVMCDROMEnabled = false
dvResourceVirtualEnvironmentVMCDROMFileID = ""
dvResourceVirtualEnvironmentVMCloudInitDNSDomain = ""
dvResourceVirtualEnvironmentVMCloudInitDNSServer = ""
dvResourceVirtualEnvironmentVMCloudInitUserAccountPassword = ""
dvResourceVirtualEnvironmentVMCPUCores = 1
dvResourceVirtualEnvironmentVMCPUHotplugged = 0
dvResourceVirtualEnvironmentVMCPUSockets = 1
dvResourceVirtualEnvironmentVMDescription = ""
dvResourceVirtualEnvironmentVMDiskDatastoreID = "local-lvm"
dvResourceVirtualEnvironmentVMDiskEnabled = true
dvResourceVirtualEnvironmentVMDiskFileFormat = "qcow2"
dvResourceVirtualEnvironmentVMDiskFileID = ""
dvResourceVirtualEnvironmentVMDiskSize = 8
dvResourceVirtualEnvironmentVMKeyboardLayout = "en-us"
dvResourceVirtualEnvironmentVMMemoryDedicated = 512
dvResourceVirtualEnvironmentVMMemoryFloating = 0
dvResourceVirtualEnvironmentVMMemoryShared = 0
dvResourceVirtualEnvironmentVMName = ""
dvResourceVirtualEnvironmentVMNetworkDeviceBridge = "vmbr0"
dvResourceVirtualEnvironmentVMNetworkDeviceEnabled = true
dvResourceVirtualEnvironmentVMNetworkDeviceMACAddress = ""
dvResourceVirtualEnvironmentVMNetworkDeviceModel = "virtio"
dvResourceVirtualEnvironmentVMNetworkDeviceVLANID = -1
dvResourceVirtualEnvironmentVMOSType = "other"
dvResourceVirtualEnvironmentVMPoolID = ""
dvResourceVirtualEnvironmentVMVMID = -1
mkResourceVirtualEnvironmentVMAgent = "agent"
mkResourceVirtualEnvironmentVMAgentEnabled = "enabled"
@ -65,6 +66,7 @@ const (
mkResourceVirtualEnvironmentVMCloudInitIPConfigIPv6Gateway = "gateway"
mkResourceVirtualEnvironmentVMCloudInitUserAccount = "user_account"
mkResourceVirtualEnvironmentVMCloudInitUserAccountKeys = "keys"
mkResourceVirtualEnvironmentVMCloudInitUserAccountPassword = "password"
mkResourceVirtualEnvironmentVMCloudInitUserAccountUsername = "username"
mkResourceVirtualEnvironmentVMCPU = "cpu"
mkResourceVirtualEnvironmentVMCPUCores = "cores"
@ -291,6 +293,12 @@ func resourceVirtualEnvironmentVM() *schema.Resource {
Description: "The SSH keys",
Elem: &schema.Schema{Type: schema.TypeString},
},
mkResourceVirtualEnvironmentVMCloudInitUserAccountPassword: {
Type: schema.TypeString,
Optional: true,
Description: "The SSH password",
Default: dvResourceVirtualEnvironmentVMCloudInitUserAccountPassword,
},
mkResourceVirtualEnvironmentVMCloudInitUserAccountUsername: {
Type: schema.TypeString,
Required: true,
@ -680,6 +688,12 @@ func resourceVirtualEnvironmentVMCreate(d *schema.ResourceData, m interface{}) e
cloudInitConfig.SSHKeys = &sshKeys
}
password := cloudInitUserAccountBlock[mkResourceVirtualEnvironmentVMCloudInitUserAccountPassword].(string)
if password != "" {
cloudInitConfig.Password = &password
}
username := cloudInitUserAccountBlock[mkResourceVirtualEnvironmentVMCloudInitUserAccountUsername].(string)
cloudInitConfig.Username = &username

View File

@ -191,12 +191,18 @@ func TestResourceVirtualEnvironmentVMSchema(t *testing.T) {
mkResourceVirtualEnvironmentVMCloudInitUserAccountUsername,
})
testOptionalArguments(t, cloudInitUserAccountSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitUserAccountPassword,
})
testSchemaValueTypes(t, cloudInitUserAccountSchema, []string{
mkResourceVirtualEnvironmentVMCloudInitUserAccountKeys,
mkResourceVirtualEnvironmentVMCloudInitUserAccountPassword,
mkResourceVirtualEnvironmentVMCloudInitUserAccountUsername,
}, []schema.ValueType{
schema.TypeList,
schema.TypeString,
schema.TypeString,
})
cpuSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMCPU)