The process of setting up and configuring a new server or service to make it ready for use.
Startup Scripts for Vultr instances are files that run custom commands when your instances boot. The scripts automate repetitive tasks like installing software, configuring settings, querying third-party services, and more. These scripts are suitable when provisioning multiple Cloud Compute instances because they save time.
Follow this guide to manage Startup Scripts for Vultr Instances using the Vultr Customer Portal, API, CLI, or Terraform.
Send a POST
request to the Create Startup Script endpoint and encode the Startup script to Base64 format.
$ curl "https://api.vultr.com/v2/startup-scripts" \
-X POST \
-H "Authorization: Bearer ${VULTR_API_KEY}" \
-H "Content-Type: application/json" \
--data '{
"name" : "Sample-Script",
"type" : "pxe",
"script" : "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
}'
Visit the Create Startup Script endpoint to view additional attributes to add to your request.
Send a GET
request to the List Startup Scripts endpoint to view all scripts.
$ curl "https://api.vultr.com/v2/startup-scripts" \
-X GET \
-H "Authorization: Bearer ${VULTR_API_KEY}"
Create a new scripts.yaml
file.
$ nano scripts.yaml
Enter your Startup scripts into the file.
mkdir ~/my-apps
chmod 700 ~/my-apps
Save the file.
Convert the file contents to Base64 and note the output. For instance, bWtkaXIgfi9teS1hcHBzCmNobW9kIDcwMCB+L215LWFwcHM=
.
$ echo -n "$(<scripts.yaml)" | base64
Create a new Startup script.
$ vultr-cli script create \
--name Sample-Script \
--type boot \
--script bWtkaXIgfi9teS1hcHBzCmNobW9kIDcwMCB+L215LWFwcHM=
List all scripts.
$ vultr-cli script list
Get the details of a specific script by specifying a script ID.
$ vultr-cli script get script_id
Run vultr-cli script create --help
to view all options.
Create a startup script and apply.
resource "vultr_startup_script" "boot" {
name = "Sample-Script"
type = "boot" # boot | pxe
script = <<-EOT
#!/bin/sh
mkdir -p /opt/my-apps
chmod 700 /opt/my-apps
EOT
}
Attach the script to an instance via user_data
or by setting script_id
.
resource "vultr_instance" "server" {
region = "ewr"
plan = "vc2-2c-4gb"
label = "scripted"
# Option A: user_data cloud-init
user_data = <<-EOT
#cloud-config
runcmd:
- echo "Hello from cloud-init" > /root/hello.txt
EOT
# Option B: associate the startup script
script_id = vultr_startup_script.boot.id
}
Apply the configuration and observe the following output:
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.