Best practice, if any, for workflows? #482
Replies: 3 comments 8 replies
-
Hey there! Thank you for your interest in Cronicle. Workflows are indeed coming! It's one of the major features being introduced in Cronicle 2.0 (which is being renamed to Orchestra). It is due for release this year (2022). I have to be honest, this is the first I've heard of rundeck, so I need to do some research and see what it can do, so I understand exactly what you mean by "usability and flexibility". Orchestra Workflows will be an ordered "sequence" of jobs, which is implemented in the UI as a flexible list, with drag-drop reordering, and options you can set for each job. Also, jobs can easily pass data and files to the next job in the list, and control the flow (skip, jump around). Are these the kinds of features you are looking for? I see that rundeck has a text-based workflow editor with an actual interpreted language for decision making and tree branching: I have to say, this is much different than the workflow implementation in Orchestra. I don't want my users to have to learn a new language to use the product. While this offers great flexibility, it is also a huge leap in complexity, and will be a barrier for new users. Orchestra's workflow implementation is much simpler -- the UI is basically a reorderable list of jobs to run. However, the flexibility is there under the covers. Each job can control the flow by sending commands back to the workflow controller. An individual job can:
You can also insert delays between jobs, and add decisions in the UI based on job outcomes. Each job can also trigger actions like notifications and web hooks. Oh, and each job in a workflow can itself be another workflow (workflowception). You can also choose to run workflow jobs in parallel instead of in sequence, but you lose out on the chaining features in that case. Parallel mode is mainly for "multiplexing" (running a single job on multiple servers in parallel). Please let me know if these features will suffice for your needs, or if I need to implement something else that rundeck provides. Thank you! -- Joe |
Beta Was this translation helpful? Give feedback.
-
Update: I dug further into some rundeck videos, and I found a more traditional workflow sequence editor here: I guess the interpreted language editor is optional, and they also provide a job list. The latter is more akin to what Orchestra will provide, although I must say my UI will be much prettier 😉 |
Beta Was this translation helpful? Give feedback.
-
Hooo boy, I've never jumped into the Rundeck DSL. I primarily use shell commands within a workflow, as shown in your second comment. Passing data from step to step is also a nice thing to have, but not anything I require (yet). It sounds like the 2.0 release will absolutely be what I'm looking for, at least functionally speaking. What's pictured in your second comment are the individual tasks in a workflow, and, if I'm understanding you correctly, Cronicle exclusively schedules and runs those constituent tasks until the 2.0 release where they will be able to be launched as a bundled sequence of tasks (perhaps configurable in a DAG, like OpsWise?). From what I currently understand, tasks are written against plugins. For my purposes, I almost exclusively use local shell commands, albeit they are "local" to the destination server. Rundeck facilitates this as running on a "node" without needing anything actually installed (other than an SSH key) on the destination server. A node is simply a configuration string for a destination server to execute things on using SSH. I'm sure a Cronicle plugin could do effectively the same thing -- like a "Remote Shell Script" instead of "Shell Script". Otherwise it could just, within the shell script, issue "ssh user@targetserver command" or some such. Not ideal, but workable. Otherwise, ultimately, it looks like Cronicle can have an agent on the destination server as a slave, and the scheduled task could simply target that particular agent. This is honestly the correct way to do it, with the master server handling all the actual scheduling, but it's super nice not to have to install things on other servers. The UI and job structuring remains a concern, albeit this is purely from my point of ignorance on basically all things Cronicle. I went as far as sitting down and playing with the category-based arbitrary concurrency and queuing and that's about it. One of the major, major boons of Rundeck is the approachability of the UI for a standard user. Right now, my jobs are sorted out in a Context->Source->JobName style tree/folder view. I find this extremely approachable for non-tech savvy users needing to utilize the automation system to launch jobs. An example of this tree sorting would be CarType->CarCountry->CarMake->CarModel, so we'd have sedan, coupe, truck at the root level. A user would log in and see just these three things. They need to do something with coupes, so they expand coupe. Now they see American, Asian, European. They need to do something with an American car, so they expand American, and now they see Ford, Chevy, Dodge, etc.. you get the idea. From a support/maintenance standpoint, I can be told "hey, something's wrong with the Ford Focus job" and I'd be able to quickly and easily navigate to that job. "Categories" in Cronicle are a start to this, but I would like to see more powerful sorting of jobs to reduce visual noise to a user. My system currently runs about 2,000 job executions per 24 hours across around 160 jobs that organize about 400 tasks -- these are very tiny numbers, for reference. As it stands in Cronicle, I'd need to nebulously chain these 400 tasks into their 160 jobs, but if a user wanted to fire off one of those 160 jobs? They'd need to (know how to) find the "first" job in that chain and kick that off. No go. I want to show them these digested categories -- further, I want to use these digested categories so I can maintain jobs that much easier! That's how Rundeck does the UI. Airflow is a half step ahead of where Cronicle currently is with its tagging/chiclet display for jobs. I would be interested in any sort of available alpha/beta of the 2.0 release should it be available. I'd love to do a proof of concept in our stack to see how it meshes with our needs. |
Beta Was this translation helpful? Give feedback.
-
I've been hunting for a good automation system for a while now. Cronicle seems flexible in the right ways, but the missing key here is the concept of workflows.
Cronicle seems to be built around scheduling specific tasks, and sure a task can call a second task, which can call a third, and so on, but this kind of setup is buried and nightmarish to support in a production setting where there are hundreds of jobs each with a half dozen steps.
Basically, I'm looking for the usability and flexibility of something like rundeck, but with the arbitrary job/task level concurrency and queuing of Cronicle. Is what I'm looking for beyond the scope of Cronicle?
Beta Was this translation helpful? Give feedback.
All reactions