StackScripts
Need a way to quickly get a LAMP stack up and running that's automatically tuned, tweaked and optimized for you? Ever wished there was a way to deploy a Wordpress stack that worked right out of the box? How about an easy way to deploy a cluster of identically configured Linodes?
StackScripts™ provide a flexible way to customize our distribution templates. They're very easy to use — find a StackScript, answer its questions, and click deploy. When the deployment is first booted, the script is executed and does its thing. You can even watch its progress by viewing the console.
StackScripts can be private to your account, shared to the Linode community, or chosen from our library of open source StackScripts. The Linode Manager Users and Grants permission system enables you to restrict who can use or edit your private StackScripts. The Linode API can even manage StackScripts, so management can be rolled into your existing workflow.
A StackScript can be written in any language that the target template distro has an interpreter installed. The only requirement is the script starts with a shebang on the first line.
StackScripts are fully integrated into the Linode Manager. A script can specify User Defined Fields (UDFs) using StackScript Markup Language (SSML) that the Linode Deployment Wizard will prompt the user to populate when performing the deployment. UDF name/value pairs are passed as environment variables when your StackScript is executed.
SSML defines four types of questions: text input, password input, drop-down "combo" boxes, and a list select. Fields have a name and a label, plus optional attributes:
If a default attribute is given to the UDF question, it is considered optional; otherwise, a value must be entered during deployment. If the name contains "password", a password input box is used.
The entire script is parsed for UDFs, so stick them anywhere in the script.
They begin with <udf and end with > and contain name/value attributes in-between.
The above SSML would produce the following form on the Linode Deployment Wizard.
It is possible to reference the path of other StackScripts by using the ssinclude tag. For example:
This would do two things: when the disk image is deployed with your StackScript, the contents of StackScriptID 7 would also be deployed.
The <ssinclude> tag within your StackScript would be substituted for the path of where StackScript 7 was placed.
StackScripts that are included are not processed for UDFs or other includes, and their distribution list is ignored. The user deploying the StackScript must have the 'use' grant for all StackScripts it references.