Rundeck: Operational tasks Automation

Somebody who likes to code
Search for a command to run...

Somebody who likes to code
No comments yet. Be the first to comment.
Google processes tens of thousands of code changes every day across a codebase of hundreds of millions of lines. The secret isn't magic tooling — it's a documented, principled approach to code review

Amazon Simple Notification Service (SNS) looks straightforward on the surface — publish a message, deliver it to subscribers — but the gap between a topic that "works in dev" and one that is productio

Amazon Simple Queue Service (SQS) is deceptively simple to get started with, but surprisingly easy to misconfigure in ways that cause silent message loss, runaway costs, duplicate processing storms, o

HTTP API is the right default choice for the majority of .NET serverless workloads. At 70% less cost than REST API, lower latency, and native JWT authorization, it covers most production requirements

AWS Lambda has become a cornerstone of modern serverless architectures, but writing a function that "just works" is very different from writing one that is performant, cost-effective, secure, and read

Once our software is released to production, we enter a new stage of the software development life cycle, Operations and Maintenance:
The maintenance stage is the final, and continuous, stage of iterating and building upon your software solution as it operates and progresses in a production environment. This could include bug fixes, upgrading security protocols, updating features and specifications, among many others.
This stage involves several tasks that require people, knowledge, and time. Hopefully, in many cases, those tasks can be automated (or part of them), and here is where Rundeck comes to the rescue:
Rundeck is runbook automation that gives you and your colleagues self-service access to the processes and tools they need to get their job done.
When used for incident management, Rundeck will help you have shorter incidents and fewer escalations.
When used for general operations work, Rundeck will help alleviate the time-consuming and repetitive toil that currently consumes too much of your team's time.
In Rundeck, you define workflows (called Jobs) from any of your existing tools or scripts and trigger those from Web UI, API, CLI, or by schedule. To understand the idea, we will set up a job to restart an Azure Web App every day at night.
Let's start creating the Azure Web App (run the commands line by line):
az login
az group create -l eastus -n MyResourceGroup
az appservice plan create -g MyResourceGroup -n MyPlan --sku B1
az webapp create -n "MyWebApp-24f12674-a141-43d9-a29d-9eb3e7bc5aca" -g MyResourceGroup -p MyPlan -r "dotnet:6"
Remember that the Azure Web App name must be unique, change it if you get an error. Automated tools that use Azure services should have restricted permissions. For this reason, Azure offers the service principal concept. Run az account show --query id command and replace <SUBSCRIPTION_ID> with the result in the following command (save the results in a safe place):
az ad sp create-for-rbac --scopes /subscriptions/<SUBSCRIPTION_ID> --role "contributor"
Run the following command to start Rundeck:
docker run --name local-rundeck -p 4440:4440 -d rundeck/rundeck:4.5.0
Let's go inside the container:
docker exec -it local-rundeck bash
Once in the container, we will proceed to install the Azure CLI (this could take a couple of minutes):
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Let's open http://127.0.0.1:4440/user/login and use as username and password the word admin:

Create a Project:


Go to the Jobs menu and create a new one:


Go to the Workflow tab (here is where we define what our job will do):

In our case, we are going to create two steps (command type), one to login against Azure:
az login --service-principal -u <SERVICE_PRINCIPAL_APPID> -p <SERVICE_PRINCIPAL_PASSWORD> --tenant <SERVICE_PRINCIPAL_TENANT>

And the second to execute the restart itself:
az webapp restart -n MyWebApp-24f12674-a141-43d9-a29d-9eb3e7bc5aca -g MyResourceGroup

Go to the Schedule tab to set up when is going to run:

Let's test our first job by running it manually through the web UI:



Minutes later, we can check the Activity Log on Azure to see the restart:

Here, you can find the official documentation. Thanks, and happy coding.