Skip to main content

proxmox-deploy is cli-based deployment tool for Proxmox

Project description

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

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

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

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

  • 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.

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.

License

proxmox-deploy is licensed under the GPLv3 license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

proxmox-deploy-0.1.tar.gz (16.4 kB view details)

Uploaded Source

Built Distributions

proxmox_deploy-0.1-py2.7.egg (41.9 kB view details)

Uploaded Source

proxmox_deploy-0.1-py2-none-any.whl (25.4 kB view details)

Uploaded Python 2

File details

Details for the file proxmox-deploy-0.1.tar.gz.

File metadata

File hashes

Hashes for proxmox-deploy-0.1.tar.gz
Algorithm Hash digest
SHA256 6983f12752e5b8cb48ca80a138f430401ab33895d2699a5712014e92d8206165
MD5 850ab97a4e68eed2d130582bd286d524
BLAKE2b-256 15b295d3389dac8b3cae5fb0636dbe5c48ef57cbe7a3545e5d40b38a790128fb

See more details on using hashes here.

File details

Details for the file proxmox_deploy-0.1-py2.7.egg.

File metadata

File hashes

Hashes for proxmox_deploy-0.1-py2.7.egg
Algorithm Hash digest
SHA256 05747e55f82172e4507390208719022d08b7a06a2465acf52d806e8f1972fd35
MD5 aa94f7e8f6d881245f33e3f8d3c8cdc5
BLAKE2b-256 8f843f4b2351f44a6b232fe3160eebf55effe63a8660bf48505e1be4973df528

See more details on using hashes here.

File details

Details for the file proxmox_deploy-0.1-py2-none-any.whl.

File metadata

File hashes

Hashes for proxmox_deploy-0.1-py2-none-any.whl
Algorithm Hash digest
SHA256 e06094830d51c3d9a6c66900007dc3843a63893e50a47d7ab1c003aca4c6faf1
MD5 2f4ff81acb72aa495fb313ac24f5af9d
BLAKE2b-256 97f1dd15c058a1bad6f8acaf7ca80ca4fd01dfa449f29b3ac5573224097a95f1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page