This repository documentation for Cesium Ops, a new age recurring tasks and IT workflow orchestration engine architected for the cloud. Cesium Ops is a code workflow automation platform (as opposed to no-code or low-code workflow automation platform) that allows you to write scripts in your favorite technologies and remotely execute them inside your environment in response to various events.
Cesium Ops helps you solve 2 key problems:
Examples for recurring workflows include data extraction, data movement (using FTP or S3 etc), data processing, periodic restacking, security scans etc.
Examples of IT request automation include scripts for handling things like resetting user LDAP credentials, user VPN access, granting ssh access to machines and reverting them after a set period etc. These scripts can be triggered programatically from the cloud through integrations with cloud based on service management tools like Jira.
This section explains some of the key things required to work with Cesium Ops.
Cesium Ops is designed to run in a hybrid model with the core orchestration service running as a SaaS service that is run and managed by us and a light weight daemon deployed on your infrastructure to run and track processes. This allows you to focus on using Cesium to solve key business problems while leaving the operational aspects of running the services and the database to us. The cloud component is refered to as Cesium core
, Cesium Cloud
or core scheduler
in this documentation.
To run tasks and workflows inside your datacenter or cloud infrastructure, we do not require you to open any ports in your network or firewall. Cesium uses messages and queues to communicate commands and statuses across different systems.
The user needs to download a Task Executor and run it as a daemon process on any system in your infrastructure. The tasks and workflows will be executed on this machine by the task executor.
The core entities in Cesium are:
The workspace is a way of organizing task executor and workflow into logical groups for easier management. If you have multiple teams within your company using Cesium , then you can try to create a workspace per team. Or if you are running workflows for different purposes, you can group them by purpose.
The task executor (sometimes also refered to as Tex
in the documentation) is a software that must be downloaded and run on your infrastructure. The task executor:
Every task executor must be associated with a workspace. The task executor requires internet access to work correctly. The task executor initiates outbound network connections from the machine it is running on to the core scheduler in the cloud. Tex never accepts incoming requests from the internet and does not require you to open any ports in your network.
Following are the requirements for running Tex:
The task executor can be run on Windows or any flavor of Linux. Here are the recommended best practices to run tex securely:
/opt/cesium/tex/
on linux)Use the following steps to run tex:
/opt/cesium/tex
.TEX_HOME
.TEX_HOME
there is a folder called config with a single config file under it called tex-config.properties
. Update the config values from the values you get from the file you downloaded earlier.texId: ahasadadaasea
password: ek12this-is-a-secret-value
tenantRefId: 9abcd31l-1234-5678-1234-286dd73aec45
$TEX_HOME/bin/start-cesium-tex.sh
. This will start tex as a background process and will write out logs under the logs folder. You can safely exit the user and the shell where you started the tex instance.$TEX_HOME/bin/start-cesium-tex.vbs
You can download tex from this page.
The workflow is the most important entity in Cesium. When setting up the workflow you must input:
Once a workflow is configured, Cesium core scheduler creates a Workflow Run and sends out commands to execute the workflow. This happens irrespective of whether the task executor is running or not. If the task executor is running, it receives the messages and runs the specific workflow. The task executor sends periodic update on the status of the workflow run. You can also trigger a workflow to run on demand by using the dropdown in the actions column on the workflows page.
A worfklow trigger is an event that kicks off the execution of a workflow. There are 3 main types of triggers that Cesium supports today:
This is a workflow that is expected to run at a regular time based frequency. These workflows can be configured using a cron expression.
Workflows that use this trigger type are dependent on another workflow. When you select this option, the UI will show a dropdown containing the workflow that this workflow can be triggered by.
A workflow triggered by another workflow can be triggered in 2 modes:
A mannually run workflow can only be triggered in 2 ways:
Examples of an API integration is the Jira App from Cesium that allows you to run a workflow in response to a webhook event from Jira. Read more about it in the Jira Integration page.
One special feature of manually triggered workflows is that they are allowed to have input variables that be added to the workflow defintion. These inputs can be passed to individual tasks in the workflow definition as variables.
The workflow definition is the heart of the workflow. This is a Cesium specific way of representing an acyclic graph of tasks that need to be executed. The worflow definition is built using a graphical user interface.
A workflow definition is made up of 0 or more inputs and 1 or more tasks.
Inputs are a way to pass variables to a workflow run dynamically at the time of the worklow being triggered. Inputs are only allowed for manually triggered workflows.
They can be passed as values to your tasks by adding them as args using the format ${inputs[<input_name>]}
where <input_name>
is the name given to the input.
A task in the workflow definition refers to a process that needs to be kicked off by tex.
A task type can one of a set of predefined types that Cesium supports. The current supported task types are:
Each task type needs to be configured appropriately based on the configuration it requires. But there are some attributes that are common across all the task types.
Here is an explanation for each common attribute:
Name | Type | Meaning |
---|---|---|
name (required) |
String | A descriptive name for this particular task. This will be shown in the UI in the workflow run details. Ideally this should be all small characters, with no spaces in between |
taskType (required) |
Enumeration | This is set when you choose the task type from the drop down |
dependsOn (optional) |
Multiselect dropdown | When adding multiple tasks in a workflow flow, you can define dependencies on the tasks so that they run in a specific order. If no depedency is specified, Tex might run them in any order including in parallel. |
The current supported task types are:
This is used to run:
Attributes:
command
: the command that needs to be run like cat
, /usr/bin/backup_mysql.sh
(which is the command or the bash script that needs to be run). This can be an absolute path to a file already on the machine where tex runs or a relative path to the python script inside the code artifact zip file.args
: an array of strings that are passed to the executable as parameters. After each parameter, hit “enter” to add the stirng to the argument.This task type is used to run python scripts. Tex currently only supports running python3 scripts. If your task requires specific python libraries, you can define a requirements.txt
in the code artifact zip file which lists all dependencies in the standard format.
Tex will create a virtual env for this workflow which live inside the workflow folder. The virtual env will be activated each time this task needs to be executed.
The attributes of a python task are:
script
(Required): The script to the python script that needs to be executed. This can be an absolute path to a file already on the machine where tex runs or a relative path to the python script inside the code artifact zip file.args
(optional): an array of strings that are passed to the bash script as parameters.Requirements:
python
on Windows and python3
on *nix.requirements.txt
to manage dependencies, pip3
and venv
must be available.Docker is a containerization technology. Using this task type you can run any docker image. The attributes required to configure a docker run are:
Requirements:
A workflow refers to a single run of the workflow. A workflow run is created whenever it is time to execute it (based on the configured cron) or it is executed on demand. Each workflow run will have the following attributes:
You can view the workflow run of a specific workflow by choosing the View History
action in the workflows list or by clicking on the View History
button on the details of a specific workflow.
In workflow history, you can click on any row to see the details of a specific workflow run. The workflow run should show you the following details:
A workflow run goes through the following lifecycle:
tex
to execute it.Expired
and is not pickedup for execution.