Foreword

The following is a primer on creating RightScale scripts that execute with attachments.

Overview

Creating RightScale scripts can be a little daunting at first, but with a little time and effort one can quickly ramp up from beginner to expert.  The examples show here will be executed on a Linux CentOS instance.

Basic Script

So let’s go over some RightScale script basics.  First let’s start by creating a new script.  Click the Design->RightScripts menu option.

Design -> RightScripts
Design -> RightScripts

Next click the “New” button.

New Button
New Button

Now you should be looking at the “New RightScript” screen.  Here we will give the script a name, enter a description, identify input values and write the actual script to be executed on the client machine.

New RightScript Screen
New RightScript Screen

Let’s begin by entering a name and description for the RightScript.  Enter any name and description you want.

It’s important to note here, that changing the RightScript name, will not affect any instance you have the scripts attached to.  In other words, once you attach a script to an instance, if you decide to rename that script later, feel free to do so with no consequences.  The next time you see the script on the instance, it will have the updated name, there’s no need to go back and re-add it.

Inputs will be used to dynamically get values entered from the user or from a predefined value.  I’ll explain this more in detail in a little while.  First let’s create a simple script.  Let’s create a simple script that copies a file from one location to the other.  Enter the following into the script field:

cp /tmp/file1 /tmp/file2

Now I know that this is extremely simple, but we’ll build from this.  So the script when executed get’s run against the default interpreter, in this instance BASH, and it copies a file that does not exist called file1 to the same directory and names it file2.  Pretty useless, but now let’s make it a bit more useful.  Let’s say we wanted to have a utility to copy any file from one location to another from within the RightScale interface.  Let’s modify the script to do so.  Change the script to the following:

cp $FROM_LOCATION $TO_LOCATION

Now click the “Identify” button located just above the script field.  Did you see what happened?  RightScale realizes that the variables $FROM_LOCATION and $TO_LOCATION are not defined and offers them as input values to be input by the user and the time of execution.  In other words, when you decide to execute this script, it will prompt the user for the value of the $FROM_LOCATION variable and the $TO_LOCATION variable.

By default, the input types are Any, meaning any free text value.  You can if you wish change the type to be a dropdown and set a distinct set of values from the user to choose from.  But for this example let’s leave it as any.

Now this example is a bit more useful.  We can now pretty much move any file from one location to another through the RightScale interface.  But what about if we wanted to have a file uploaded and then copied out to a directory.  Let’s try that shall we?  First let’s modify the script a bit to use an uploaded attachment:

Attachment Script

cp $ATTACH_DIR/* $TO_LOCATION

Next let’s hit the “Identify” button again.  Notice, the $FROM_LOCATION input field disappears because it is no longer needed, but where is the $ATTACH_DIR input variable.  The $ATTACH_DIR input variable is defined by RightScale to allow you to access any attachments you decide to upload to the script.  Let’s try this and see how it works.

Let’s first enter a description for the $TO_LOCATION field we’ve added.  This will allow users to understand what the input field is to be used for.  For now enter this in the TO_LOCATION description field:

“Enter the destination for the attached file. (ie. /tmp)”

Then click the “Save” button.  You should now be presented with the tabbed interface to your script.

Scripts
Scripts

Next click the “Attachments” tab.

Attachments
Attachments

Here we will click the “Choose File” button and upload a file attachment to our script.  Create a simple text file called test.txt, click “Choose File”, select the newly created file test.txt and finally click “Upload”.  You should then see the file listed about the “Upload file” area.

Attachment Uploaded
Attachment Uploaded

Finally let’s try running the script to see how it works.

Executing The Script

To execute the script, we’ll need to select a running instance to have the script act upon.  First let’s get our deployments and select and instance.  Do this by selecting Manage->Deployments.

Manage -> Deployments
Manage -> Deployments

Then click on the server template you want to execute the script on from the list of servers.  Now click on the “Scripts” tab for your selected server template.

Template Scripts
Template Scripts

Next click the “Add Script” button under the “Operational Scripts” area.

Select A Script Dialog
Select A Script Dialog

You should now be presented with the “Select a script” dialog.  Click “Unpublished” and click on your newly created script, then click the “Select” button.  This action will attach the script to the server template and make it executable on running instances built off this template.  To execute the script, Go back to your Manage->Deployments screen and select the actual running server, click the “Scripts” tab, then click the blue “Run” button located to the right of the script.

Once the “Run” button has been clicked, the “Queued”, “Status” and “Completed” status will appear in the top left status pane.  If all goes well, you’ll have a successfully created and run script.  You can verify this by clicking on the “Completed” status when it appears.  Or by opening a terminal into to instance and verifying the appearance of the test.txt file.


2 Comments

mican_x91 · January 18, 2012 at 9:53 am

Hi, I’m a complete newbie to RightScale. I was wondering if I can create my own script to install Tomcat in a server as to avoid paying for a rightscript that does this. Thank you very much, I appreciate any help.

GodLikeMouse · January 18, 2012 at 6:28 pm

Hi mican_x91, sure can. I’ve done this quite a few times myself. My approach is to create a shell script that grabs the required libraries and installs from my own controlled server. Then all you have to do is spin up the instance, wget the shell script file, then execute it. Let the shell script do all the work for you. Hope this helps.

Leave a Reply

Avatar placeholder

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