Terraform Provider for Proxmox
A Terraform Provider which adds support for Proxmox solutions.
Requirements
Building the Provider
Clone repository to: $GOPATH/src/github.com/danitso/terraform-provider-proxmox
$ mkdir -p $GOPATH/src/github.com/danitso; cd $GOPATH/src/github.com/danitso
$ git clone git@github.com:danitso/terraform-provider-proxmox
Enter the provider directory, initialize and build the provider
$ cd $GOPATH/src/github.com/danitso/terraform-provider-proxmox
$ make init
$ make build
Using the Provider
If you're building the provider, follow the instructions to install it as a plugin. After placing it into your plugins directory, run terraform init
to initialize it.
Configuration
Arguments
virtual_environment
- (Optional) This is the configuration block for the Proxmox Virtual Environmentendpoint
- (Required) The endpoint for the Proxmox Virtual Environment APIinsecure
- (Optional) Whether to skip the TLS verification step (defaults tofalse
)password
- (Required) The password for the Proxmox Virtual Environment APIusername
- (Required) The username for the Proxmox Virtual Environment API
Data Sources
Virtual Environment
Datastores (proxmox_virtual_environment_datastores)
Arguments
node_name
- (Required) A node name
Attributes
active
- Whether the datastore is activecontent_types
- The allowed content typesdatastore_ids
- The datastore idsenabled
- Whether the datastore is enabledshared
- Whether the datastore is sharedspace_available
- The available space in bytesspace_total
- The total space in bytesspace_used
- The used space in bytestypes
- The storage types
Group (proxmox_virtual_environment_group)
Arguments
group_id
- (Required) The group id
Attributes
acl
- The access control listpath
- The pathpropagate
- Whether to propagate to child pathsrole_id
- The role id
comment
- The group commentmembers
- The group members as a list withusername@realm
entries
Groups (proxmox_virtual_environment_groups)
Arguments
This data source doesn't accept arguments.
Attributes
comments
- The group commentsgroup_ids
- The group ids
Nodes (proxmox_virtual_environment_nodes)
Arguments
This data source doesn't accept arguments.
Attributes
cpu_count
- The CPU count for each nodecpu_utilization
- The CPU utilization on each nodememory_available
- The memory available on each nodememory_used
- The memory used on each nodenames
- The node namesonline
- Whether a node is onlinessl_fingerprints
- The SSL fingerprint for each nodesupport_levels
- The support level for each nodeuptime
- The uptime in seconds for each node
Pool (proxmox_virtual_environment_pool)
Arguments
pool_id
- (Required) The pool id
Attributes
comment
- The pool commentmembers
- The pool membersdatastore_id
- The datastore idid
- The member idnode_name
- The node nametype
- The member typevm_id
- The virtual machine id
Pools (proxmox_virtual_environment_pools)
Arguments
This data source doesn't accept arguments.
Attributes
pool_ids
- The pool ids
Role (proxmox_virtual_environment_role)
Arguments
role_id
- (Required) The role id
Attributes
privileges
- The role privileges
Roles (proxmox_virtual_environment_roles)
Arguments
This data source doesn't accept arguments.
Attributes
privileges
- The role privilegesrole_ids
- The role idsspecial
- Whether the role is special (built-in)
User (proxmox_virtual_environment_user)
Arguments
user_id
- (Required) The user id.
Attributes
acl
- The access control listpath
- The pathpropagate
- Whether to propagate to child pathsrole_id
- The role id
comment
- The user commentemail
- The user's email addressenabled
- Whether the user account is enabledexpiration_date
- The user account's expiration datefirst_name
- The user's first namegroups
- The user's groupskeys
- The user's keyslast_name
- The user's last name
Users (proxmox_virtual_environment_user)
Arguments
This data source doesn't accept arguments.
Attributes
comments
- The user commentsemails
- The users' email addressesenabled
- Whether a user account is enabledexpiration_dates
- The user accounts' expiration datesfirst_names
- The users' first namesgroups
- The users' groupskeys
- The users' keyslast_names
- The users' last namesuser_ids
- The user ids
Version (proxmox_virtual_environment_version)
Arguments
This data source doesn't accept arguments.
Attributes
keyboard_layout
- The keyboard layoutrelease
- The release numberrepository_id
- The repository idversion
- The version string
Resources
Virtual Environment
File (proxmox_virtual_environment_file)
Arguments
datastore_id
- (Required) The datastore idnode_name
- (Required) The node nameoverride_file_name
- (Optional) The file name to use in the datastore (leave undefined to use source file name)source
- (Required) A path to a local file or a URLtemplate
- (Required) Whether this is a container template (vztmpl
instead ofiso
)
Attributes
file_name
- The datastore file name
Group (proxmox_virtual_environment_group)
Arguments
acl
- (Optional) The access control list (multiple blocks supported)path
- The pathpropagate
- Whether to propagate to child pathsrole_id
- The role id
comment
- (Optional) The group commentgroup_id
- (Required) The group id
Attributes
members
- The group members as a list withusername@realm
entries
Pool (proxmox_virtual_environment_pool)
Arguments
comment
- (Optional) The pool commentpool_id
- (Required) The pool id
Attributes
members
- The pool membersdatastore_id
- The datastore idid
- The member idnode_name
- The node nametype
- The member typevm_id
- The virtual machine id
Role (proxmox_virtual_environment_role)
Arguments
privileges
- (Required) The role privilegesrole_id
- (Required) The role id
Attributes
This resource doesn't expose any additional attributes.
User (proxmox_virtual_environment_user)
Arguments
acl
- (Optional) The access control list (multiple blocks supported)path
- The pathpropagate
- Whether to propagate to child pathsrole_id
- The role id
comment
- (Optional) The user commentemail
- (Optional) The user's email addressenabled
- (Optional) Whether the user account is enabledexpiration_date
- (Optional) The user account's expiration datefirst_name
- (Optional) The user's first namegroups
- (Optional) The user's groupskeys
- (Optional) The user's keyslast_name
- (Optional) The user's last namepassword
- (Required) The user's passworduser_id
- (Required) The user id
Attributes
This resource doesn't expose any additional attributes.
Developing the Provider
If you wish to work on the provider, you'll first need Go installed on your machine (version 1.13+ is required). You'll also need to correctly setup a GOPATH, as well as adding $GOPATH/bin
to your $PATH
.
To compile the provider, run make build
. This will build the provider and put the provider binary in the $GOPATH/bin
directory.
$ make build
...
$ $GOPATH/bin/terraform-provider-proxmox
...
If you wish to contribute to the provider, the following requirements must be met,
- All tests must pass using
make test
- The Go code must be formatted using Gofmt
- Dependencies are installed by
make init
Testing the Provider
In order to test the provider, you can simply run make test
.
$ make test
Tests are limited to regression tests, ensuring backwards compability.