community.proxmox.proxmox module – Management of instances in Proxmox VE cluster
Note
This module is part of the community.proxmox collection (version 1.3.0).
You might already have this collection installed if you are using the ansible package.
It is not included in ansible-core.
To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install community.proxmox.
You need further requirements to be able to use this module,
see Requirements for details.
To use it in a playbook, specify: community.proxmox.proxmox.
Synopsis
- Allows you to create/delete/stop instances in Proxmox VE cluster. 
- The module automatically detects containerization type (lxc for PVE 4, openvz for older). 
Requirements
The below requirements are needed on the host that executes this module.
- proxmoxer >= 2.0 
- requests 
Parameters
| Parameter | Comments | 
|---|---|
| Specify the target host of the Proxmox VE cluster. Uses the  | |
| Specify the password to authenticate with. Uses the  | |
| Specify the target port of the Proxmox VE cluster. Uses the  | |
| Specify the token ID. Uses the  | |
| Specify the token secret. Uses the  | |
| Specify the user to authenticate with. Uses the  | |
| ID of the container to be cloned. 
 The type of clone created is defined by the  This operator is only supported for Proxmox clusters that use LXC containerization (PVE version >= 4). | |
| Type of the clone created. 
 
 
 Choices: 
 | |
| Specify number of cores per socket. | |
| Number of allocated cpus for instance. | |
| CPU weight for a VM. | |
| Specify the description for the container. Only used on the configuration web interface. This is saved as a comment inside the configuration file. | |
| This option was previously described as “hard disk size in GB for instance” however several formats describing a lxc mount are permitted. Older versions of Proxmox will accept a numeric value for size using the  Additional options are available by using some combination of the following key-value pairs as a comma-delimited list  See https://pve.proxmox.com/wiki/Linux_Container for a full description. This option is mutually exclusive with  | |
| Specify a hash/dictionary of the  See https://pve.proxmox.com/wiki/Linux_Container#pct_mount_points for a full description. | |
| 
 Mutually exclusive with  | |
| 
 The value of any given option must be a string, for example  | |
| 
 The size is given in GiB. Required only if  | |
| 
 Mutually exclusive with  | |
| 
 If not defined, the module will check if one exists. If not, a new volume will be created. If defined, the volume must exist under that name. Required only if  | |
| Specifies a list of features to be enabled. For valid options, see https://pve.proxmox.com/wiki/Linux_Container#pct_options. Some features require the use of a privileged container. | |
| Forcing operations. Can be used only with states  With  With  With states  When specifying  Choices: 
 | |
| Script that will be executed during various steps in the containers lifetime. | |
| Specifies the address the container will be assigned. | |
| Memory size in MB for instance. | |
| Specify additional mounts (separate disks) for the container. As a hash/dictionary defining mount points. See https://pve.proxmox.com/wiki/Linux_Container#pct_mount_points for a full description. This Option is mutually exclusive with  | |
| 
 Mutually exclusive with  | |
| 
 | |
| 
 | |
| 
 The value of any given option must be a string, for example  | |
| 
 The size is given in GiB. Required only if  | |
| 
 Mutually exclusive with  | |
| 
 If not defined, the module will check if one exists. If not, a new volume will be created. If defined, the volume must exist under that name. Required only if  | |
| Specifies additional mounts (separate disks) for the container. As a hash/dictionary defining mount points as strings. This Option is mutually exclusive with  | |
| Sets DNS server IP address for a container. | |
| Specifies network interfaces for the container. As a hash/dictionary defining interfaces. | |
| Proxmox VE node on which to operate. Only required for  For every other states it will be autodiscovered. | |
| Specifies whether a VM will be started during system bootup. Choices: 
 | |
| The template for VM creating. Required only for  | |
| Specifies the  If set to  Choices: 
 | |
| The instance root password. | |
| Add the new VM to the specified pool. | |
| Public key to add to /root/.ssh/authorized_keys. This was added on Proxmox 4.2, it is ignored for earlier versions. | |
| Remove container from all related configurations. For example backup jobs, replication jobs, or HA. Related ACLs and Firewall entries will always be removed. Used with  Choices: 
 | |
| Sets DNS search domain for a container. | |
| Specifies the startup order of the container. Use  Use  Use  | |
| Indicate desired state of the instance. Choices: 
 | |
| Target storage. This option is mutually exclusive with  Default:  | |
| Swap memory size in MB for instance. | |
| List of tags to apply to the container. Tags must start with  Tags are only available in Proxmox 7+. | |
| Timeout for operations. Default:  | |
| Timezone used by the container, accepts values like  The special value  | |
| Indicate if the container should be unprivileged. Choices: 
 | |
| If  If  The default changed from  Choices: 
 | |
| If  This should only be used on personally controlled sites using self-signed certificates. Uses the  Choices: 
 | |
| Specifies the instance ID. If not set the next available ID will be fetched from ProxmoxAPI. | 
Attributes
| Attribute | Support | Description | 
|---|---|---|
| Action group: community.proxmox.proxmox | Use  | |
| Support: none | Can run in  | |
| Support: none | Will return details on what has changed (or possibly needs changing in  | 
See Also
See also
- community.proxmox.proxmox_vm_info
- Retrieve information about one or more Proxmox VE virtual machines. 
Examples
- name: Create new container with minimal options
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
- name: Create new container with minimal options specifying disk storage location and size
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    disk: 'local-lvm:20'
- name: Create new container with minimal options specifying disk storage location and size via disk_volume
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    disk_volume:
      storage: local
      size: 20
- name: Create new container with hookscript and description
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    hookscript: 'local:snippets/vm_hook.sh'
    description: created with ansible
- name: Create new container automatically selecting the next available vmid.
  community.proxmox.proxmox:
    node: 'uk-mc02'
    api_user: 'root@pam'
    api_password: '1q2w3e'
    api_host: 'node1'
    password: '123456'
    hostname: 'example.org'
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
- name: Create new container with minimal options with force(it will rewrite existing container)
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    force: true
- name: Create new container with minimal options use environment PROXMOX_PASSWORD variable(you should export it before)
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
- name: Create new container with minimal options defining network interface with dhcp
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    netif:
      net0: "name=eth0,ip=dhcp,ip6=dhcp,bridge=vmbr0"
- name: Create new container with minimal options defining network interface with static ip
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    netif:
      net0: "name=eth0,gw=192.168.0.1,ip=192.168.0.2/24,bridge=vmbr0"
- name: Create new container with more options defining network interface with static ip4 and ip6 with vlan-tag and mtu
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    netif:
      net0: "name=eth0,gw=192.168.0.1,ip=192.168.0.2/24,ip6=fe80::1227/64,gw6=fe80::1,bridge=vmbr0,firewall=1,tag=934,mtu=1500"
- name: Create new container with minimal options defining a mount with 8GB
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    mounts:
      mp0: "local:8,mp=/mnt/test/"
- name: Create new container with minimal options defining a mount with 8GB using mount_volumes
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    mount_volumes:
      - id: mp0
        storage: local
        size: 8
        mountpoint: /mnt/test
- name: Create new container with minimal options defining a cpu core limit
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    cores: 2
- name: Create new container with minimal options and same timezone as proxmox host
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    timezone: host
- name: Create a new container with nesting enabled and allows the use of CIFS/NFS inside the container.
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    features:
      - nesting=1
      - mount=cifs,nfs
- name: >
    Create a linked clone of the template container with id 100. The newly created container with be a
    linked clone, because no storage parameter is defined
  community.proxmox.proxmox:
    vmid: 201
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    clone: 100
    hostname: clone.example.org
- name: Create a full clone of the container with id 100
  community.proxmox.proxmox:
    vmid: 201
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    clone: 100
    hostname: clone.example.org
    storage: local
- name: Update container configuration
  community.proxmox.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    netif:
      net0: "name=eth0,gw=192.168.0.1,ip=192.168.0.3/24,bridge=vmbr0"
    update: true
- name: Start container
  community.proxmox.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: started
- name: >
    Start container with mount. You should enter a 90-second timeout because servers
    with additional disks take longer to boot
  community.proxmox.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: started
    timeout: 90
- name: Stop container
  community.proxmox.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: stopped
- name: Stop container with force
  community.proxmox.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    force: true
    state: stopped
- name: Restart container(stopped or mounted container you can't restart)
  community.proxmox.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: restarted
- name: Convert container to template
  community.proxmox.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: template
- name: Convert container to template (stop container if running)
  community.proxmox.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: template
    force: true
- name: Remove container
  community.proxmox.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: absent
- name: >-
    Create a new container automatically selecting the next available vmid
    using a non-root API token
  community.proxmox.proxmox:
    node: 'uk-mc02'
    api_token_id: 'svc-tkn'
    api_token_secret: '81c09a2a-0359-4ba1-8153-8cb3cd02509b'
    api_user: 'remoteapiuser@pam'
    api_host: 'node1'
    password: '123456'
    hostname: 'example.org'
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
- name: >-
    Create a new container automatically selecting the next available vmid
    and providing a public key for the root account the Ansible host can use
    to connect to the new container
  community.proxmox.proxmox:
    node: 'uk-mc02'
    api_user: 'root@pam'
    api_password: '1q2w3e'
    api_host: 'node1'
    password: '123456'
    hostname: 'example.org'
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    pubkey: 'ssh-ed25519 AAAAC3NzaC1...hBWA ansibleuser@ansiblehost'
