Configuring your instance during boot with a user data file

Overview

When using the OpenStack command line to create an instance, you can provide a user data file during boot to configure your instance. This allows you to set system variables or install packages during boot time.

This is possible due to cloud-init which is installed on several Linux systems by default. This description is from the cloud-init website:

"cloud-init is the Ubuntu package that handles early initialization of a cloud instance. It is installed in the Ubuntu Cloud Images and also in the official Ubuntu images available on EC2."

What is a user data file?

A user data file is a text file that you can include when running the openstack server create command. This file is used to customize your instance during boot. View the following page for a list of 'User Data Input Formats'.

You can place data in a local file and pass it through using the --user-data <user-data-file> parameter at instance creation. This shows how to pass a file named my-script.sh to an Ubuntu-16.04 image.

[user@localhost]$ openstack server create --flavor 300 \
                        --image 23f77038-51dc-40f3-8714-50612b0efb24 \
                        --key-name myKey \
                        --security-group 29afef85-b89f-43a0-babf-6a5bb5cc7bed \
                        --user-data my-script.sh \
                        myNewServer

What does an example user data script look like?

This simple example shows how to install pip3 during instance creation.

#!/bin/sh

# Example script to run at boot
# This installs pip3
apt update
apt -y install python3-pip
pip3 install --upgrade pip

Now when you log into the instance, pip3 is already installed.

This form is only for article feedback. If you require assistance, please contact support. Do not include passwords, account numbers, or other private account details.

Did this article answer your questions?

Article last updated PST.

Still not finding what you're looking for?