Author: David FinsterLast Updated: Tue, May 25, 2021
If you are new to the Vultr Marketplace, please see the documentation overview to get started.
Vultr Marketplace has a few technical requirements for your application.
When a customer deploys a Marketplace app, Vultr can expand your app to fill the filesystem but cannot shrink it. If you create a 20 GB Marketplace app, and the customer deploys an 80 GB subscription, Vultr will expand the app to fill the entire 80 GB filesystem. However, if you create an app with an 80 GB filesystem, customers cannot deploy the app on smaller Vultr instances.
Vultr Marketplace uses cloud-init to initialize the instance with network addresses, passwords, and startup scripts. These operating systems have the correct version of cloud-init pre-installed if you use Vultr's images:
Canonical added support for Vultr in cloud-init version 21.2. Until this version is available in your OS repository, please install Vultr's cloud-init. Please see the
install_cloud_init() function in our helper script on GitHub, or follow the steps below.
RHEL, CentOS, and other yum-based distributions should install as follows.
# cd /tmp # wget https://ewr1.vultrobjects.com/cloud_init_beta/cloud-init_rhel_latest.rpm # yum install -y cloud-init_rhel_latest.rpm
Debian must use this version. Do not compile from source or install from the Debian repositories.
# cd /tmp # wget https://ewr1.vultrobjects.com/cloud_init_beta/cloud-init_debian_latest.deb # apt-get update -y # apt-get install -y /tmp/cloud-init_debian_latest.deb
Ubuntu should use the universal build.
# cd /tmp # wget https://ewr1.vultrobjects.com/cloud_init_beta/cloud-init_universal_latest.deb # apt-get update -y # apt-get install -y /tmp/cloud-init_universal_latest.deb
Cloud-init may not correctly interface with NetworkManager on some distros, such as CentOS and RHEL. On these distributions, the network will not be configured correctly, and the boot process fails. If this occurs, disable NetworkManager, then install and enable the network-scripts package. NetworkManager must be disabled but does not need to be uninstalled.
The Marketplace requires the kernel option
vultr on Bare Metal instances. It's optional for cloud deployment, but it's a best practice to make your application compatible with both VPS and Bare Metal deployments. If your application is based on one of Vultr's OS images, this kernel option may already exist.
# grep 'vultr' /etc/default/grub
You may see
vultr in the output:
If there is no
vultr option, you must add it.
# nano /etc/default/grub
Find the line starting with GRUB_CMDLINE_LINUX_DEFAULT and add
vultr to the end.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vultr"
Save the file and close the editor.
Update grub. Check the documentation for your distribution to determine the correct procedure. Ubuntu/Debian systems may use the
CentOS/RHEL systems may use this one-line solution to add the kernel option.
# /sbin/grubby --update-kernel=ALL --args vultr
After installing the required software, create your provisioning scripts and include any Marketplace variables you've defined.
For more information, see this example script, which installs cloud-init on an apt-based system.
This guide is part of the Vultr Marketplace documentation. Please see the documentation overview for more information.