The main utilities of Rose are intended to run on a Unix/Linux system. They are known to work on RHEL6, and a number of systems including the ones documented under metomi-vms. Web based Rose utilities require a web browser compliant to Bootstrap 3. See Bootstrap Getting Started for detail.
The source code for Rose is available via github. You can download a compressed tar file containing the latest version or a released version. To install Rose, un-pack the tar file into an appropriate location on your system. Add the bin/ directory into your PATH environment variable. Once you have done this you should now have access to the Rose user utilities, assuming that you have met the requirements described below:
used by: rose
.
tested with version: 4.1.2 and 4.2.10.
used by: rose
.
tested with version: 2.6.6 and 2.7.X.
used by: rose
config-edit
and rosie go
.
tested with version: 2.16 (with GTK 2.18.9 and 2.20.1).
minimum version required: 2.12.
remark: Some degraded functionality with versions prior to 2.16.
used by: Rose Bush and Rosie web service.
tested with version: 3.2.2.
used by: rose
suite-run
, rose macro
, Rose
Bush and Rosie web service.
tested with version: 2.6.
minimum version required: 2.6.
used by: Rosie web service client.
tested with version: 2.4.2.
minimum version required: 2.4.2.
remark: Development of this module is moving extremely fast, and it may not be easy to find a package for a compatible version in your Linux distribution. It may be necessary to do some manual installation by downloading a release tar ball, which should have all its dependencies embedded.
used by: Rosie web service.
tested with version: 0.7.9.
minimum version required: 0.6.9.
used by: Rose, as the supported suite engine.
tested with version: See Rose Changes for compatible cylc versions for this release of Rose.
minimum version required: See Rose Changes for compatible cylc versions for this release of Rose.
additional requirements: Pygraphviz (for details see the cylc documentation).
used by: Rosie, as the version control system.
tested with version: 1.8.10.
minimum version required: 1.8.
used by: Rosie, as the normal
wrapper on top of Subversion; rose
suite-run
recognises FCM location keywords
in file configurations; rose app-run
has built-in applications for running fcm
make
.
tested with version: See Rose Changes for compatible FCM versions for this release of Rose.
minimum version required: See Rose Changes for compatible FCM versions for this release of Rose.
used by: Rose test battery, which
is a wrapper of the prove
command
that comes with the TAP::Harness
Perl module.
tested with version: 5.10.1.
minimum version required: 5.10.1
Whilst you can install and use Rose & cylc on a single host (i.e. machine), most installations are likely to be more complex. There are actually five sets of hosts to consider when installing Rose & cylc. You may not need all of these on your site. Each host has slightly different requirements as follows:
Each user can just run their suites on the
host where they issue the rose
suite-run
command. However, the local host
may not meet the necessary requirements for
connectivity (to the hosts running the tasks) or
for availability (the host needs to remain up for
the duration of the suite). Therefore, Rose can
be configured to run the suites on remote hosts.
If multiple hosts are available, the least loaded
of the available hosts will be used.
Installation requirements:
Connectivity requirements:
Installation requirements:
Connectivity requirements:
Installation requirements:
Connectivity requirements:
Installation requirements:
Connectivity requirements:
Typically you will only need a single host but you can have multiple repositories on different hosts if you require this.
Installation requirements:
Note: this section has assumed that you wish to use Rose & cylc (including their respective GUIs) and use Rosie to store your suites. However, there are many ways of using Rose. For instance:
Hopefully the detailed system requirements section above should help you to determine what is needed according to your particular usage.
lib/bash/rose_init_site: If you do not have root access to install the required Python libraries, you may need to edit this file to ensure Python libraries are included in the PYTHONPATH environment variable. For example, if you have installed some essential Python libraries in your HOME directory, you can add a lib/bash/rose_init_site file with the following contents:
# Essential Python libraries installed under # "/home/daisy/usr/lib/python2.6/site-packages/" if [[ -n "${PYTHONPATH:-}" ]]; then PYTHONPATH="/home/daisy/usr/lib/python2.6/site-packages:${PYTHONPATH}" else PYTHONPATH="/home/daisy/usr/lib/python2.6/site-packages" fi export PYTHONPATH
etc/rose.conf: You should add/edit this file to meet the requirement of your site. Examples can be found at the etc/rose.conf.example file in your Rose distribution.
Rosie is a suite storage and discovery system.
Rosie stores suites using Subversion repositories, with databases behind a web interface for suite discovery and lookup.
If users at your site are able to access Rosie services on the Internet or if someone else has already configured Rosie services at your site, all you need to do is configure the client to talk to the servers. Refer to the Configuring a Rosie Server section if you need to configure a Rosie server for your site.
To set up the Rosie client for the site,
add/modify the [rosie-id]
section of
etc/rose.conf. E.g.:
[rosie-id] prefix-default=x prefixes-ws-default=x myorg prefix-location.x=https://somehost.on.the.internet/svn/roses-x prefix-web.x=https://somehost.on.the.internet/trac/roses-x/intertrac/source: prefix-ws.x=https://somehost.on.the.internet/rosie/x prefix-location.myorg=svn://myhost.myorg/roses-myorg prefix-web.myorg=http://myhost.myorg/trac/roses-myorg/intertrac/source: prefix-ws.myorg=http://myhost.myorg/rosie/myorg
Check the following:
curl -I
https://somehost.on.the.internet/rosie/x
. It
should return a HTTP code 200. If you are prompted
for a username and a password, you may need to have
access to a keyring to cache the authentication
information.rosie hello
--prefix=x
. It should return a greeting,
e.g. Hello user.You may want to deploy configuration
metadata for projects using Rose in a globally
readable location at your site, so that they can be
easily accessed by users when using Rose utilities
such as rose config-edit
or rose
macro
.
If the source tree of a project is version controlled under a trusted Subversion repository, it is possible to automatically deploy their configuration metadata. Assuming that the projects follow our recommendation and store Rose configuration metadata under the rose-meta/ directory of their source tree, you can:
crontab
job to regularly
update the working copies.For example, suppose you want to deploy Rose configuration metadata under /etc/rose-meta/ at your site. You can do:
# Deployment location DEST='/etc/rose-meta' cd "${DEST}" # Assume only Rose metadata configuration directories under "rose-meta/" URL1='https://somehost/foo/main/trunk/rose-meta' URL2='https://anotherhost/bar/main/trunk/rose-meta' # ... # Checkout a working copy for each metadata configuration directory for URL in "${URL1}" "${URL2}"; do for NAME in $(svn ls "${URL}"); do svn checkout -q "${URL}/${NAME}" done done # Set up a crontab job to update the working copies, e.g. every 10 minutes crontab -l || true >'crontab.tmp' { echo '# Update Rose configuration metadata every 10 minutes' echo "*/10 * * * * svn update -q ${DEST}/*" } >>'crontab.tmp' crontab 'crontab.tmp' rm 'crontab.tmp' # Finally add the root level "meta-path" setting to site's "rose.conf" # E.g. if Rose is installed under "/opt/rose/": { echo '[]' echo "meta-path=${DEST}" } >>'/opt/rose/etc/rose.conf'
See also Metadata Location.
Rose Bush provides an intranet web service at your site for users to view their suite logs using a web browser. Depending on settings at your site, you may or may not be able to set up this service.
You can start an ad-hoc Rose Bush web server by running:
setsid /path/to/rose/bin/rose bush start 0</dev/null 1>/dev/null 2>&1 &
You will find the access and error logs under ~/.metomi/rose-bush*.
Alternatively you can run the Rose Bush web service under Apache mod_wsgi. To do this you will need to set up an Apache module configuration file (typically in /etc/httpd/conf.d/rose-wsgi.conf) containing the following (with the paths set appropriately):
WSGIPythonPath /path/to/rose/lib/python WSGIScriptAlias /rose-bush /path/to/rose/lib/python/rose/bush.py
Use the Apache log at e.g. /var/log/httpd/ to debug problems. See also Configuring Rosie Server below.
You should only need to configure and run your own Rosie service if you do not have access to Rosie services on the Internet, or if you need a private Rosie service for your site. Depending on settings at your site, you may or may not be able to set up this service.
You will need to select a machine to host the Subversion repositories. This machine will also host the web server and databases.
Login to your host, create one or more Subversion FSFS repositories.
If you want to use FCM for your version control, you should set a special property on the repository to allow branching and merging with FCM in the Rosie convention. For example, if your repository is served from HOST_AND_PATH (e.g. myhost001/svn-repos) with given repository base name NAME (e.g. roses_foo), change into a new directory and enter the following commands:
svn co -q "svn://${HOST_AND_PATH}/${NAME}/" svn ps fcm:layout -F - "${NAME}" <<'__FCM_LAYOUT__' depth-project = 5 depth-branch = 1 depth-tag = 1 dir-trunk = trunk dir-branch = dir-tag = level-owner-branch = level-owner-tag = template-branch = template-tag = __FCM_LAYOUT__ svn ci -m 'fcm:layout: defined.' "${NAME}" rm -fr "${NAME}"
Add the following hook scripts to the repository:
pre-commit
#!/bin/bash exec /path/to/rose/sbin/rosa svn-pre-commit "$@"
post-commit
#!/bin/bash exec /path/to/rose/sbin/rosa svn-post-commit "$@"
You should replace /path/to/rose/ with the location of your Rose installation.
Make sure the hook scripts are executable.
The rosa svn-post-commit
command in
the post-commit hook is used to populate a database
with the suite discovery information as suites are
committed to the repository. Edit the
[rosie-db] settings in
etc/rose.conf to point to your host
machine and provide relevant paths such as the
location for your repository and database.
Once you have done that, create the Rosie database by running:
/path/to/rose/sbin/rosa db-create
Make sure that the account that runs the repository hooks has read/write access to the database and database directory.
You can test that everything is working using the built-in web server. Edit the [rosie-ws] settings in etc/rose.conf to configure the web server's log directory and port number. Start the web server by running:
setsid /path/to/rose/bin/rosie disco start 0</dev/null 1</dev/null 2>&1 &
Check that the server is up and running using
curl
or a local web browser. E.g. If you
have configured the server's port to be 1234, you can
do:
curl -I http://localhost:1234/
It should return a HTTP code 200.
Alternatively you can run the Rosie web service under Apache mod_wsgi. To do this you will need to set up an Apache module configuration file (typically in /etc/httpd/conf.d/rose-wsgi.conf) containing the following (with the paths set appropriately):
WSGIPythonPath /path/to/rose/lib/python WSGIScriptAlias /rosie /path/to/rose/lib/python/rosie/ws.py
Use the Apache log at e.g. /var/log/httpd/ to debug problems. See also Configuring Rose Bush below.
Hopefully, you should now have a working Rosie service server. Configure the client settings by editing the [rosie-id] settings in etc/rose.conf. If you are using the built-in web server, you should ensure that you include the port number in the URL. E.g.:
[rosie-id] prefix-ws.foo=http://127.0.0.1:1234/foo
You should now be able to talk to the Rosie web service server using the Rosie web service client. Test by doing:
rosie hello
To test that everything is connecting together, create your first suite in the repository by doing:
rosie create
which will create the first suite in your repository, with an ID ending in aa000 - e.g. foo-aa000. Locate it by running:
rosie lookup 000
You can define a special suite in each Rosie repository that provides some additional repository-specific data and metadata. The suite ID will end with ROSIE - e.g. foo-ROSIE.
This can be created by running rosie create
--meta-suite
.
You can extend the list of search keys used in the
Rosie discovery interfaces (such as rosie
go
). Create a text file at the root of a
ROSIE suite working copy called
rosie-keys.
Add a space-delimited list of search keys into the file - for example:
sub-project experiment model
Run fcm add -c
and fcm
commit
. After the commit, these will be added
to the list of Rosie interface search keys.
You can continue to modify the list by changing the file contents and committing.