Skip to main content

Use this tool to deploy cloud-init enabled images from various Linux distributions on Proxmox.

Proxmox does not support cloud-init enabled images out of the box. It’s possible to create template from manually installed VMs. However, with the availability of ready to deploy images from most major Linux vendors, why should you install a VM manually?

How it works

cloud-init depends on two things:

  1. A minimal base installation of the distribution, usually in the form of a raw or qcow2 image. I call this a cloud image.

  2. The cloud-init package installed in the image.

cloud-init was originally made for Amazon EC2 and OpenStack. These platforms have native support for cloud-init, and provide a datasource that cloud-init can use to configure the VM. However, there are few alternative datasources available that will work, even if the platform itself has no native support for cloud-init.

proxmox-deploy uses the NoCloud datasource. For this approach, the VM must have a copy of the cloud image as the first disk, and a read-only vfat or iso9660 filesystem as the second disk. On this second disk, there must be two files: user-data and meta-data.

proxmox-deploy takes care of generating the user-data and meta-data files based on user input. proxmox-deploy also takes care of creating a Proxmox VM and uploading the cloud image and cloud-init image into the proper datastore. All that’s left afterwards is turning on the VM.

How to install

All dependencies are installable using pip. To install globally, execute as root:

# pip install proxmox-deploy

Or to install into a virtualenv (as a normal user):

$ virtualenv env
$ . env/bin/activate
$ pip install proxmox-deploy

Make sure to activate your virtualenv before using or upgrading the tool later:

$ . env/bin/activate

To later upgrade it:

$ pip install --upgrade proxmox-deploy

How to use

After installing, simply use:

$ proxmox-deploy --proxmox-host <hostname> --cloud-images-dir <images directory>

And answer the interactive questions.

Tested cloud images

I have tested proxmox-deploy with the following cloud images:

Distribution

Version

Status

Ubuntu

14.04 15.10 16.04

The -amd64-disk1.img images work.

Fedora Server

23

The qcow2 image works.

openSUSE

13.2

The -OpenStack-Guest.x86_64.qcow2 image works, provided the VM has at least 512 MB RAM. The minimal disk size is 10 GB. However, the first NIC is called eth1, so make sure to select eth1 to configure. There is no suse user, login as root.

CentOS

6

7

The CentOS 6 image fails to boot, hanging at “Booting from hard disk”.

The CentOS 7 -GenericCloud.qcow2.xz image works. The minimal disk size will be 8G.

Debian

8

Neither the qcow2 nor the raw image works. The first boot results in a kernel panic and subsequent boots won’t run cloud-init, rendering the VM unreachable.

FreeBSD

10.1 cloud

10.1 vm

Does not work, cloudbase-init-bsd has no support for the NoCloud datasource.

The official VM images boot at least, but cloud-init is not available. It will boot with with DHCP and a default user/password.

All distributions provide a default user with the name of the distro (ubuntu, fedora, centos, debian, freebsd), except openSUSE which only has a root user.

Dependencies

  • Proxmox VE 4.1 or later

  • Python 2.7

  • proxmoxer as Proxmox API client

  • openssh-wrapper for communicating with the Proxmox API and executing commands.

  • Jinja2 for generating the user-data and meta-data files.

  • configobj for reading configuration files.

  • pytz for timezone names.

  • genisoimage (Linux) or mkisofs (FreeBSD) command.

Do note that we need to access the Proxmox server via SSH, to perform the various tasks. We also use the pvesh and pvesm commands over SSH to interface with the Proxmox API and datastores respectively. proxmox-deploy will not ask for passwords to login, so a proper SSH agent and SSH key access must be configured before hand.

Changelog

0.4.0

  • Support for volumes on zfspool stores.

  • Allow specifying an empty VLAN id.

  • Allow specifying a different SSH port for connecting to Proxmox.

0.3

  • Support for volumes on nfs and lvm-thin data stores.

  • Always enable serial console on new VMs. This fixes deploying Ubuntu 16.04 cloud images.

0.2

  • Support for cloud-init Chef handoff (no autorun yet).

  • Improve EnumQuestion output by listing and sorting options.

  • Add option for automatically starting VMs after deployment.

  • Choose defaults for node and storage selection.

  • Support FreeBSD mkisofs command.

0.1

  • Initial release

License

proxmox-deploy is licensed under the GPLv3 license.

Metadata

Release files for proxmox-deploy 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for proxmox-deploy 0.4.0
File Size Uploaded
proxmox-deploy-0.4.0.tar.gz 18.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for proxmox-deploy 0.4.0
File Interpreter ABI Platform
proxmox_deploy-0.4.0-py2-none-any.whl Python 2 none any Details

Total release size: 46.3 kB

Release files / proxmox-deploy-0.4.0.tar.gz

Download URL proxmox-deploy-0.4.0.tar.gz
Size 18.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e1a7884ca9b4825e4b94658e0fe612f21f8781eb2b92e34df10aa5e67afab2f8
BLAKE2b-256 checksum
How to use checksums
c441f4ca6341ddb8e08441cf28f03f92613aec18963535bf81834bcb235c2ab6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / proxmox_deploy-0.4.0-py2-none-any.whl

Download URL proxmox_deploy-0.4.0-py2-none-any.whl
Size 27.7 kB
Tags Python 2
SHA-256 checksum
How to use checksums
4665a9a4842681799c8b9a31f8cd74f031aa29893da1bdcfbfbbea6c5d75fbac
BLAKE2b-256 checksum
How to use checksums
c5ee41847dee4c94fbae8f86012d81eeb98cba954e56a1388b75c546c627331d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3

3 release files

0.2

3 release files

0.1

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page