layout | page_title | sidebar_current | description |
---|---|---|---|
rightscale |
Rightscale: CWF Process |
docs-rightscale-resource-cwf_process |
Create and maintain a RightScale CloudWorkFlow process. |
Use this resource to create or destroy RightScale CloudWorkFlow processes.
Creating the CWF process runs it synchronously and returns the output values (if any). If the CWF process fails, the Terraform script fails too.
Destroying the resource deletes the corresponding CWF process. Destroying a running process causes it to end in error.
It is NOT possible to update a CWF process.
This example CWF process looks for all servers whose names start with "db-slave-" and executes the specified RightScript on them, returning the number of servers that have been affected.
resource "rightscale_cwf_process" "run_executable_by_prefix" {
parameters = [
{ "kind" = "string"
"value" = "db-slave-" },
{ "kind" = "string"
"value" = "/api/right_scripts/1018361003" }
]
source = <<EOF
define main($instance_prefix, $rightscript_href) return $instances_affected do
@instances = rs_cm.instances.get(filter: ["name==" + $instance_prefix, "state==operational"])
@instances.run_executable(right_script_href: $rightscript_href)
$instances_affected = size(@instances)
end
EOF
}
output "cwf_status" {
value = "${rightscale_cwf_process.run_executable_by_prefix.status}"
}
output "cwf_servers_affected" {
value = "${rightscale_cwf_process.run_executable_by_prefix.outputs["$instances_affected"]}"
}
The following arguments are supported:
source
- (Required) Source code to be executed, written in RCL (RightScale CloudWorkFlow Language). Several functions can be defined but the entry function should be calledmain
. Example:
source = <<EOF
define adder($n1, $n2) return $res do
$res = $n1 + $n2
end
define main($a, $b) return $result do
call adder($a, $b) retrieve $tmp
$result = "The total is " + $tmp
end
EOF
parameters
- Parameters for the RCL function. It consists of an array of values corresponding to the values being passed to the function defined in the "source" field in order of declaration. The values are defined as string maps with the "kind" and "value" keys. "kind" contains the type of the value being passed, could be one of "array", "boolean", "collection", "datetime", "declaration", "null", "number", "object", "string". The "value" key contains the value For example:
parameters = [
{ "kind" = "string"
"value" = "db-slave-" },
{ "kind" = "number"
"value" = "42" }
]
Note that the "value" key should always be a string (regardless of the type specified in "kind"). These are several examples on how to pass arrays:
parameters = [
{ "kind" = "array"
"value" = "[ 22.3, 9.7, 10 ]" },
{ "kind" = "array"
"value" = "[ \"It\", \" works!\" ]" },
{ "kind" = "array"
"value" = "${jsonencode(var.zones)}" },
]
The following attributes are exported:
-
status
- Process status, one of "completed", "failed", "canceled" or "aborted". -
error
- Process execution error if any. -
outputs
- Process outputs if any. This is a TypeMap, one particular output can be accessed viaoutputs["$var"]
, see "Example Usage" section.