community.general.proxmox (0.1.1) — module

management of instances in Proxmox VE cluster

Authors: Sergei Antipov (@UnderGreen)

preview | supported by community

Install collection

Install with ansible-galaxy collection install community.general:==0.1.1


Add to requirements.yml

  collections:
    - name: community.general
      version: 0.1.1

Description

allows you to create/delete/stop instances in Proxmox VE cluster

Starting in Ansible 2.1, it automatically detects containerization type (lxc for PVE 4, openvz for older)


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Create new container with minimal options
- 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'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Create new container automatically selecting the next available vmid.
- 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'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Create new container with minimal options with force(it will rewrite existing container)
- 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: yes
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Create new container with minimal options use environment PROXMOX_PASSWORD variable(you should export it before)
- 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'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Create new container with minimal options defining network interface with dhcp
- 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"}'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Create new container with minimal options defining network interface with static ip
- 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"}'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Create new container with minimal options defining a mount with 8GB
- 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/"}'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Create new container with minimal options defining a cpu core limit
- 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
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Start container
- proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: started
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Start container with mount. You should enter a 90-second timeout because servers with additional disks take longer to boot.
- proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: started
    timeout: 90
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Stop container
- proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: stopped
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Stop container with force
- proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    force: yes
    state: stopped
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Restart container(stopped or mounted container you can't restart)
- proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: restarted
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Remove container
- proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: absent

Inputs

    
cpus:
    default: 1
    description:
    - numbers of allocated cpus for instance

disk:
    default: 3
    description:
    - hard disk size in GB for instance

node:
    description:
    - Proxmox VE node, when new VM will be created
    - required only for C(state=present)
    - for another states will be autodiscovered

pool:
    description:
    - Proxmox VE resource pool

swap:
    default: 0
    description:
    - swap memory size in MB for instance

vmid:
    description:
    - the instance id
    - if not set, the next available VM ID will be fetched from ProxmoxAPI.
    - if not set, will be fetched from PromoxAPI based on the hostname

cores:
    default: 1
    description:
    - Specify number of cores per socket.

force:
    default: 'no'
    description:
    - forcing operations
    - can be used only with states C(present), C(stopped), C(restarted)
    - with C(state=present) force option allow to overwrite existing container
    - with states C(stopped) , C(restarted) allow to force stop instance
    type: bool

netif:
    description:
    - specifies network interfaces for the container. As a hash/dictionary defining interfaces.

state:
    choices:
    - present
    - started
    - absent
    - stopped
    - restarted
    default: present
    description:
    - Indicate desired state of the instance

memory:
    default: 512
    description:
    - memory size in MB for instance

mounts:
    description:
    - specifies additional mounts (separate disks) for the container. As a hash/dictionary
      defining mount points

onboot:
    default: 'no'
    description:
    - specifies whether a VM will be started during system bootup
    type: bool

pubkey:
    description:
    - Public key to add to /root/.ssh/authorized_keys. This was added on Proxmox 4.2,
      it is ignored for earlier versions

storage:
    default: local
    description:
    - target storage

timeout:
    default: 30
    description:
    - timeout for operations

api_host:
    description:
    - the host of the Proxmox VE cluster
    required: true

api_user:
    description:
    - the user to authenticate with
    required: true

cpuunits:
    default: 1000
    description:
    - CPU weight for a VM

hostname:
    description:
    - the instance hostname
    - required only for C(state=present)
    - must be unique if vmid is not passed

password:
    description:
    - the instance root password
    - required only for C(state=present)

ip_address:
    description:
    - specifies the address the container will be assigned

nameserver:
    description:
    - sets DNS server IP address for a container

ostemplate:
    description:
    - the template for VM creating
    - required only for C(state=present)

api_password:
    description:
    - the password to authenticate with
    - you can use PROXMOX_PASSWORD environment variable

searchdomain:
    description:
    - sets DNS search domain for a container

unprivileged:
    default: 'no'
    description:
    - Indicate if the container should be unprivileged
    type: bool

validate_certs:
    default: 'no'
    description:
    - enable / disable https certificate verification
    type: bool