Tutorials Initialization Scripts

Initialization Scripts

Newly deployed cloud servers usually require some steps to set up. Everyone has their own list of things to go through from adding new user accounts to running updates and installing common applications. With Initialization scripts, you can automate the tasks you would otherwise perform again and again when booting up a new host.

Initialization scripts

Test hosting on UpCloud!

Adding scripts

You can manage your scripts with the Initialization scripts feature at your UpCloud control panel under your Account section. Click the Add new button at the top of the page to open the editor window.

Add initialization script

Copy any pre-existing script you might have into the script text field, or write a new script straight in the browser. Name your scripts so that you can easily distinguish between them. Once you are done, click the Update script button at the bottom to save the changes.

Deploying with a script

The Initialization scripts are supported by all of our public Linux templates. After adding any SSH keys you may wish to use, you can find the option to load your previously saved initialization scripts.

Selecting one of your stored scripts will bring it to the edit field below. You can make any last-minute changes to the script still before deployment, or you can write a completely new script right on the spot. Once you are done making changes, click the Create button as usual to deploy the new server. The server will perform the actions dictated by the script during the first boot up saving your considerable time and effort.

Using initialization script at deployment

Testing new initialization scripts is also easy thanks to the extremely fast deployment to any of the UpCloud availability zones. If your script didn’t perform as expected, you can always delete the server and deploy it again. Iterating your scripts will let you fine-tune the tasks at boot up and be running again within seconds.

Writing scripts

Initialization scripts support anything a regular Linux shell script would.  Depending on your choice of distribution, the default shell might use different implementations, but the principles remain the same. Below is an example of how to have the server automatically run the update and upgrade routines as also seen in the picture above.

# Run the commands in a noninteractive mode
export DEBIAN_FRONTEND=noninteractive
# Update source list and log the output to file
apt-get update > /tmp/init-script.log
# Upgrade available software packages with default options when available
apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" -y upgrade >> /temp/init-script.log

CoreOS has its own initialization script format using a setup file cloud-config. A program called coreos-cloudinit reads the config file at boot, which allows a new node to e.g. be automatically updated and restarted.

    reboot-strategy: "reboot"
  - name: "elroy"
    passwd: "$6$5s2u6/jR$un0AvWnqilcgaNB3Mkxd5yYv6mTlWfOoCYHZmfi3LDKVltj.E8XNKEcwWm..."
      - "sudo"
      - "docker"
      - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0g+ZTxC7weoIJLUafOgrm+h..."

It is also possible to enter a URL in an initialization script. If the script contains an address, the deployment process will attempt to fetch the script and use it instead. This allows greater flexibility including dynamically updating the initialization script between deployments.

Editor-in-chief and Technical writer at UpCloud since 2015. Cloud enthusiast writing about server technology and software.

4 thoughts on “Initialization Scripts

    1. Hi Dave, thanks for the comment. CoreOS is developed so fast that documentation had difficulty to keep up with all the changes. We’ve updated the example init script to remove references to deprecated services.

  1. I can’t make it work..i got a really simple bash script that updates the repos and install docker..just that..but looking the logs looks like the server starts before that the script can finish ..by the way how i use the URL initialization script method..thanks

    1. Hi there, thanks for the comment. The initialization script is executed once the server has started and run on the background. Note that longer processes such as updates may take a few minutes to complete. The output from running the init script is saved to /var/log/upcloud_userdata.log

      As for the URL method, you just need to make the initialization script available online without password protection. Then enter the URL of your script in the initialization script field.

Leave a Reply

Your email address will not be published. Required fields are marked *


Helsinki (HQ)

In the capital city of Finland, you will find our headquarters, and our first data centre. This is where we handle most of our development and innovation.


London was our second office to open, and a important step in introducing UpCloud to the world. Here our amazing staff can help you with both sales and support, in addition to host tons of interesting meetups.


Singapore was our 3rd office to be opened, and enjoys one of most engaged and fastest growing user bases we have ever seen.


Seattle is our 4th and latest office to be opened, and our way to reach out across the pond to our many users in the Americas.