Custom Scripts¶
You can write your custom scripts in Java or JavaScript. Inside these scripts, a set of client libraries for Jelastic API methods calling is available. You can bind your scripts to the onAfterReturn event to execute the required actions.
Intercontainer Scripts¶
In order to execute a shell script inside of a container, use the ExecuteShellCommands (cmd) action.
Examples:
-
Executing bash script from URL.
cmd [cp]: curl -fsS http://example.com/script.sh | /bin/bash -s arg1 arg2
{ "cmd [cp]": "curl -fsS http://example.com/script.sh | /bin/bash -s arg1 arg2" }
Restoring MySQL database.
cmd [mysql5]: curl -fsS http://example.com/script.sh | /bin/bash -s '${nodes.sqldb.password}' 'http://example.com/dump.sql' '${user.appPassword}'
{
"cmd [mysql5]": "curl -fsS http://example.com/script.sh | /bin/bash -s '${nodes.sqldb.password}' 'http://example.com/dump.sql' '${user.appPassword}'"
}
script.sh
:
#!/bin/bash
USER="root"
PASSWORD="$1"
DUMP_URL="$2"
DUMP_PATH="/var/lib/mysql/dump.sql"
NEW_USER_NAME="test"
NEW_USER_PASS="$3"
NEW_DB_NAME="test"
curl -fs ${DUMP_URL} -o ${DUMP_PATH} 2>&1
mysql -u${USER} -p${PASSWORD} << END
CREATE DATABASE ${NEW_DB_NAME};
GRANT USAGE ON *.* TO ${NEW_USER_NAME}@localhost IDENTIFIED BY '${NEW_USER_PASS}';
GRANT ALL PRIVILEGES ON ${NEW_USER_NAME}.* to ${NEW_DB_NAME}@localhost;
USE ${NEW_DB_NAME};
\. ${DUMP_PATH}
END
Here, ${nodes.sqldb.password}
is available only for the install installation type when a SQL node is created.
Top Level Scripts¶
Using a script action.
Java¶
script:
- type: java
params:
greeting: Hello World!
script: |
return hivext.local.GetParam("greeting");
{
"script": [
{
"type" : "java",
"params" : {
"greeting" : "Hello World!"
},
"script" : "return hivext.local.GetParam(\"greeting\");"
}
]
}
JavaScript¶
script: |
return getParam('greeting');
greeting: Hello World!
{
"script": "return getParam('greeting');",
"greeting": "Hello World!"
}
What's next?
-
See how to create your custom Add-Ons
-
Find out how to handle Custom Responses
-
Explore how to customize Visual Settings
-
Examine a bunch of Samples with operation and package examples
-
See Troubleshooting for helpful tips and specific suggestions