# RESOURCE-YAML

Updated February 25, 2011

# NAME

resource-yaml-v13 - describes the Rundeck resource model document Yaml format

The resource YAML document declares a resource model used by a Rundeck Project to define the set of Nodes that are available.

See http://yaml.org for more information about YAML.

# Structure

The resource format supports two structures: either a Yaml Sequence of Node definitions, or a Yaml Map of node names with Node definitions as values.

Example:

- somenode: ...
  ...
- somenode2: ...

OR

somenode:
   hostname: ...
   ...
somenode2:
   hostname: ...

In the second case, the nodename entry is not required.

# Node Definition

A Node definition consists of a Map with some required and some optional entries.

Required Entries:

nodename
Name of the node, this must be a unique Identifier across nodes within a project
hostname
Hostname of the node. This can be any IP Address or hostname to address the node. Since hostname is used to make SSH connections, it is possible to overload the value to include port number. (eg, hostname:port).
username
User name to connect to the node via SSH.

Optional Entries:

description
A description of the Node
tags
A literal with comma-separated tag strings, or a Sequence of literals. Tags are used for filtering nodes and often represent server role, environment, class, or group.
osFamily
OS Family
osArch
OS Architecture
osName
OS Name
osVersion
OS Version
editUrl
URL to an external resource model service.
remoteUrl
URL to an external resource model editor service.
sshport
The connection port to use, 22 by default
ssh-keypath
The path to the SSH key in the Rundeck Key store. For example: keys/ec2/west.pem
node-executor
The node executor plugin that you wish to use to issue commands to nodes (Script Execution, stub, openssh, etc.)
script-exec
Specifies the system command to run
script-exec-dir
Specifies the working directory for the execution
script-exec-shell
Specifies the shell to use to interpret the command, e.g. "bash -c" or "cmd.exe /c"
file-copier
The file copier you want to use to copy files to nodes (script execution, stub, openssh, etc.)
script-copy
Specifies the system command to execute
script-copy-remote-filepath
Specifies the full path of the copied file
Anything
Specify any custom attributes about node using a string value.

# Examples

Here's a node, Venkman.local, described with several of the required and optional attributes discussed above.

Venkman.local:
  description: Rundeck server node
  hostname: Venkman.local
  nodename: Venkman.local
  osArch: x86_64
  osFamily: unix
  osName: Mac OS X
  osVersion: 10.6.6
  tags: ''
  username: greg

Tags are very useful for node filtering and can be used to describe the role, environment, group, or class to which a node belongs. The Homestar.local example below describes a node that plays the role of a redis server in the production environment.

Homestar.local:
  description: The production redis server.
  hostname: Homestar.local
  nodename: Homestar.local
  osArch: x86_64
  osFamily: unix
  osName: Linux
  tags: 'redis_server,production'
  username: greg

Here's a node, bartholemew, that specifies some custom attributes (app-port, https-port):

bartholemew:
  description: Webapp node
  hostname: bartholemew
  nodename: bartholemew
  tags: 'web,app'
  username: greg
  app-port: 8080
  https-port: 8443

Here is the same two nodes but in the sequence style syntax:

- Homestar.local:
  description: The production redis server.
  hostname: Homestar.local
  nodename: Homestar.local
  tags: 'redis_server,production'
  username: greg
- bartholemew:
  description: Webapp node
  hostname: bartholemew
  nodename: bartholemew
  tags: 'web,app'
  username: greg
  app-port: 8080
  https-port: 8443