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
Example shell script
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 server, pip3 is already installed.