0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-08-22 19:38:35 +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) * `gateway` - (Optional) The IPv6 gateway (must be omitted when `dhcp` is used as the address)
* `user_account` - (Required) The user account configuration * `user_account` - (Required) The user account configuration
* `keys` - (Required) The SSH keys * `keys` - (Required) The SSH keys
* `password` - (Optional) The SSH password
* `username` - (Required) The SSH username * `username` - (Required) The SSH username
* `cpu` - (Optional) The CPU configuration * `cpu` - (Optional) The CPU configuration
* `cores` - (Optional) The number of CPU cores (defaults to `1`) * `cores` - (Optional) The number of CPU cores (defaults to `1`)

View File

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

View File

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