Coder Social home page Coder Social logo

rundeck / rundeck Goto Github PK

View Code? Open in Web Editor NEW
5.3K 203.0 896.0 204.42 MB

Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts

Home Page: http://rundeck.org

License: Apache License 2.0

Shell 0.65% Java 21.42% Groovy 58.82% JavaScript 10.31% CSS 0.39% Batchfile 0.01% Dockerfile 0.07% Vue 4.08% HTML 0.04% TypeScript 1.51% Less 0.17% SCSS 2.53% Makefile 0.02%
rundeck devops deployment scheduler automation orchestration ansible audit sre operations

rundeck's Introduction

Rundeck

Travis Deb RPM War
Travis CI Download Download Download

Rundeck is an open source automation service with a web console, command line tools and a WebAPI. It lets you easily run automation tasks across a set of nodes.

See the Release Notes for the latest version information.

How To Build:

Primary build is supported with gradle. More info in the wiki.

Requirements: Java 1.8, NodeJs 16

Build with Gradle

Produces: rundeckapp/build/libs/rundeck-X.Y.war

./gradlew build

Docker Build

Uses the war artifact and produces a docker image.

Creates image rundeck/rundeck:SNAPSHOT, you can define -PdockerTags to add additional tags

./gradlew :docker:officialBuild

Documentation

Available online at https://docs.rundeck.com/docs

FAQ: https://github.com/rundeck/rundeck/wiki/FAQ

Development

Refer to the IDE Development Environment to get set up using IntelliJ IDEA or Eclipse/STS.

Do you have changes to contribute? Please see the Development wiki page.

License

Copyright 2023 Rundeck, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

rundeck's People

Contributors

ahonor avatar ahormazabal avatar ajafarvand avatar avelasquezr avatar carlosrfranco avatar chrismcg14 avatar darwisnarvaezdev avatar ehe-pd avatar fdevans avatar gschueler avatar imad6639 avatar jayas006 avatar jessemarple avatar jesus-osuna-m avatar joseortiz avatar jtobard avatar l2je avatar ltamaster avatar mathpl avatar miguelantonio avatar mishingo avatar noahcampbell avatar ocerda avatar protip avatar qualman avatar ronaveva avatar shigemk2 avatar sjrd218 avatar smartinellibenedetti avatar travisrd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rundeck's Issues

Enable/Disable Jobs from GUI/API

As for the current version of rundeck 1.3, there's no way to easily enable or disable from Web Console or using API. It would be nice to have this feature in the next release of rundeck. This way, it can greatly help to manage jobs. For example, we can disable certain scheduled jobs for the note maintenance.

  • Another feature I would like to see is to have rd-jobs to support delete function so we can easily delete a group of jobs without go to Web Console to click and delete them one by one. (NOTE: added in 1.4.4)

original LH ticket

Original Creator: chengkai liang

Local script option provider

I would like to have a way to call a local script/command which outputs JSON, and use this as an options provider. Most options provider scripts are run on the rundeck server anyway, and this would reduce the need for separate CGI infrastructure.

For example, I might want to pick out of a list of files to process in a directory. A local command could take ls output and format it into JSON. Would be much simpler to craft a ls/sed one-liner to do this than to set up a CGI script.

original LH ticket

Original Creator: Moses Lei

add field for a url to job creation page

We are using our wiki to create runbook like pages for each job we create in rundeck. Would it be possible to add a field below the description field where we can add a url for the specific wiki page for each job? Once saved it would be great if the link could be active and if clicked open a separate browser window so someone looking at the job can also see the job's wiki page.

Thanks

Ed

original LH ticket

Original Creator: Ed

Columnar view for Node resource listing

Provide a columnar view for Node resource listing. This should help alleviate the need to "dig down" into the node to access basic node info. Columnar view should also support:

  • Sorting
  • Filtering
  • Choose fields to display as a column

Compare to AWS' EC2 instance display for a pretty basic example of the idea.

(c/o botchagalupe)

original LH ticket

Original Creator: Alex-SF

Provide a way to generate an API token via the API

As an automater of rundeck tasks, including deployment and installation, I want to be able to create API tokens for nonhuman users.

This seems like it would be most easily achieved through the API; authenticate with username/password (over SSL, naturally), and then generate the token via an API call.

At present, we are constrained to screen-scraping to get the token for an automation user.

original LH ticket

Original Creator: Colin Panisset

rpm requires installation of "rundeck" repo

Hello!

I am working with rundeck behind a corporate firewall, where servers have no internet access. We install our packages via RedHat Satellite and clone RPM Repos for this case.

At the moment i am using the .jar variant but would rather prefer to keep rundeck updated via rpm's.
Might it be possible to remove the dependency in the rundeck-config package for "rundeck.rpm" which just installs the repo?
Unfortunately I cannot provide a patch, since I am not used to the rpm build procedures :-(

Thanks in advance!

Kind regards
Hannes

session conflict when using rundeck on same machine with another app server

Using firefox or safari, I have jenkins and rundeck colocated on same machine, in separate jvm's and separate app servers.
Jenkins is stand alone server and rundeck is rundeck-1.2.0-0.43 rpm on centos 55

If I hit the default page for jenkins, which has security turned on, it immediately results in getting logged off on rundeck.

I use the following url's on my vm:

rundeck: http://centos-55-64-vm7.local:4440/
jenkins: http://centos-55-64-vm7.local:8080/

original LH ticket

Original Creator: Charles Scott

Allow empty ${option.name} and eliminate special case handling in scripts

When trying to create a job which called a script with the calling convention "scriptname [option1] [option2]", after reading documentation 1.2.0, section 6.5, I realized that RunDeck does not handle a default option that is empty. For undefined options (ie in my case, a normal calling convention), I must update my scripts to handle RunDeck's expectation that ${option.name} will not be defined.

I'd like to propose that RunDeck handle an unsupplied optional option differently. Instead of not defining the option, requiring any called script to be update, just set the option to nothing. Perhaps a checkbox saying "Allow option to be empty". This would allow Rundeck to call existing scripts like my example above which is pretty standard.

If it did this, then one could configure a job step like this:

Path: /path/to/script
Commandline arguments: ${option.name}

Then scripts could be run as-is, and not have to be updated to deal with a nonexistent ${option.name}. If using variable replacement syntax the model would be to always reference it in quotes:

!/bin/sh

VAR1="@OPTION.NAME@"

When empty, it would resolve to
VAR1=""

IRC Chat attached

original LH ticket

Original Creator: Duck

Rundeck should be package aware

When handling the raw job definitions, rundeck should be aware of the underlying package mechanism.

For example, if a job is defined and owned by an rpm package, rundeck should be sensitive to this and:

  • Identify the version-release for the job
  • Track when a new package is available
  • Track if a job has changed from it's original definition in the rpm
  • Possibly allow the rpm to be repackaged with the changes

This will likely need to support dpkg as well and probably tgz for those without a packaging discipline.

original LH ticket

Original Creator: Noah Campbell

Provide linking of rundeck instances

This will provide visibility of configurations that may be used in downstream or upstream instances.

For example, if a job needs to be promoted from environment to another, or if it has changed between environments, then it can be flagged as such. The should help given confidence in that the script will succeed or fail.

original LH ticket

Original Creator: Noah Campbell

Custom Fields can't be used in a filter

Since 1.3 you are able to generate custom fields on the fly based on the input from your resource provider. These fields are shown in the UI but are not usable to create a filter.
According to Alex-SF (via IRC) this is an oversight and should be implemented.

original LH ticket

Original Creator: Marcello de Sousa

parsing options and shell metacharacters

In order to prevent shell expansion, we typically single quote them. In rundeck, single quoting does not appear to be sufficient and additional escaping of single quoting is needed:

  <command>
    <exec>MyCommand -buildstamp ${option.buildstamp} -myresource \'${option.resourcename}\'  -mytype  \'[^\.]*\'</exec>
  </command>

Perhaps this is a bug where the parser removes such quoting?

original LH ticket

Original Creator: Charles Scott

refrence job inheritance

When calling a reference job, there is no ability to pass dynamic filters to it, in effect having a type of inheritance or filter override.

In a scenario where you have a a job that executes on Nodes A,B,C, one at a time, the job will execute step one on NodeA, then the reference job will be called in step 2 which is going to execute on Nodes A,B,C (if that's the filter) and it's going to back to step 3 executing on NodeA. You should be able to pass a dynamic filter to to a reference job.

For example, a ${nodes.matched} or a ${node.current} dynamic variable that could be passed would resolve this issue. ${node.current} in particular I think would be more useful, specifically for a "Node-Oriented" workflows. The general scenario where this would be useful is where you have your scripts broken down into small jobs, which creates a lot of reusable components. This way you can create a "meta" job and target it to a set of nodes (tags), but execute sequentially.

Thanks,
Arthur

original LH ticket

Original Creator: Arthur Freyman

Each job needs to be addressable to monitoring solutions

SNMP for realtime would be nice, but a better approach is to provide plugins (which are typically written as shell scripts) that can plug into the monitoring solution.

  • Nagios
  • Munion
  • Ganglia

are OSS targets in the space.

The information that should be tracked is Avg Time for a job run, # Success, # Failures.

This should provide a network operations team with the resources to identify jobs that are running outside of normal execution.

original LH ticket

Original Creator: Noah Campbell

Filters should double as tags

When a filter is created by a user, it should be treated as user specific tag. This allows for complex criteria to be hidden behind a virtual tag definition.

original LH ticket

Original Creator: Noah Campbell

Running rundeck on SUSE

Here's an init script for the SUSE distribution that could be included in the source code :

@@@

!/bin/sh

BEGIN INIT INFO

Provides: rundeck

Required-Start: $syslog $remote_fs

Should-Start:

Required-Stop: $syslog $remote_fs

Should-Stop:

Default-Start: 3 5

Default-Stop: 0 1 2 6

Short-Description: Rundeck Server

Description: Start Rundeck Server

END INIT INFO

. /etc/rundeck/profile

prog="rundeckd"
BIN_FILE="${JAVA_HOME:-/usr}/bin/java"
BIN_OPTS="${RDECK_JVM} -cp ${BOOTSTRAP_CP}:/etc/rundeck com.dtolabs.rundeck.RunServer /etc/rundeck 4440"
PID_FILE=/var/run/rundeckd.pid
LOG_FILE=/var/log/rundeck/service.log
USER_NAME=rundeck

. /etc/rc.status
rc_reset

start() {
echo -n $"Starting $prog: "
/sbin/startproc -v -s -l ${LOG_FILE} -u ${USER_NAME} ${BIN_FILE} ${BIN_OPTS} > $PID_FILE
rc_status -v
}

stop() {
echo -n $"Stopping $prog: "
killproc -p $PID_FILE ${BIN_FILE}
rc_status -v
}

reload() {
echo -n $"Reloading $prog: "
## Stupid but not implemented really
$0 restart
rc_status -v
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
rc_status -v
;;
status)
echo -n "Checking for service $prog "
/sbin/checkproc -p ${PID_FILE} "${BIN_FILE}"
rc_status -v
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
rc_exit
@@@

original LH ticket

Original Creator: Claude Durocher

Display return code / filter by return code, colorize

When performing an ad-hoc command, please make it possible to display the return code returned by the remote host. Furthermore, allow for me to pass an argument that will show me just the output from instances that either succeeded or failed (0 or non-zero return code), and consider colorizing the output such that non-zero return codes are obvious.

Keep in mind that colorized output is problematic when run from cron, so dispatch should detect if it is being run from cron and suppress color output if there is no tty. A command-line flag to force colors on/off helps for cases where this detection fails.

original LH ticket

Original Creator: jhmartin

Add resource

Hi ,

I am new to rundeck and trying to learn more about rundeck.
I am able to successfully install runDeck .
Now I want to add new resources to my runDeck Server .
For adding resources ,I have added a newNode in the file resource.xml and also added my public_key to the remote machine .ssh folder.
Now the resource is visible on myRundeck site but I am not able to successfully run the adhoc commands on my rundeck Server and getting the following
error when i run the command "Authentication failure connecting to node: "machine_name". Make sure your resource definitions and credentials are up to date."

Can anyone tell me what all steps needs to be taken so as to successfully add the resource to your rundeck server and also run the commands to my newly added rundeck server .

In case you need any other information, please let me know .

Thanks ,
Ashish

original LH ticket

Original Creator: ASHISH JINDAL

Embedded scripts run from Windows fail on Unix

Given:
that you have Rundeck running on Windows
When:
you create a job with an "inline script" step
and the script is like:
#!/bin/bash

  echo hello

Then:
The script will fail because the script that is copied over has \r\n linefeeds
The error will be something like:
bash: /tmp/1312570144936-carver-dispatch-script.sh: /bin/bash^M: bad interpreter: No such file or directory

original LH ticket

Original Creator: Dave Tauzell

dispatch return code dependant on success threshold

When performing an ad-hoc command, consider allowing the user to set a 'error threshold' above which dispatch will itself return non-zero.

For example, if the threshold is 0 and the command runs on 5 hosts and fails on 1, dispatch returns non-zero. If the threshold is 1 and 1 hosts fails out of 5, dispatch returns 0.

This simplifies using dispatch in larger shell scripts that need to tolerate the failure of some cluster members during a cluster-wide procedure.

original LH ticket

Original Creator: jhmartin

Running steps in parallel

I have stuff that I'd like to do in parallel, but I'd also like to have the output tracked separately ... I run these tasks all on the same node.

In this case, the tasks are things like "Run these 20 commands to bring up new EC2 instances and let Chef auto-configure them" but that shouldn't really matter much.

original LH ticket

Original Creator: Bruce Mitchener

Tags should have predicates

A predicate is an algorithmic modification to a set of nodes/resources represented by a tag.

For example, given a tag web_array the following would be possible predicates.

web_array[10] grab 10 nodes

web_array[1%] grabs 1% of the nodes in the array

web_array[random] grab a random selection of nodes

It should also be noted that the predicates should be deterministic unless it's clear that it's not (like random). The condition is that the resource model does not change between invocations. Perhaps even more fine grain is that any nodes identified in a pervious run are attempted first (queried from the resource model) and only if they don't match exactly are new ones replenished.

original LH ticket

Original Creator: Noah Campbell

use nodes from filtered tags

A process that requires a mixture of both - steps to be dispatched to nodes and steps to be executed on the rundeck node.

I'd like to be able to have a step that executes another job and passes the node to the job id that is currently been executed.

This way there can be a mix of executing on the node, but also executing on the rundeck node using the former node as a value.

original LH ticket

Original Creator: Matt

keyfile as resources

I think using a global application ssh identity file may be restrictive in some conditions. I'm thinking about the following use cases:

a XML file (keys.xml) like

@@@

$HOME/.ssh/mysecretkey

@@@

with a special named default for the default key.

This way, it wil very easy to manage differents keys for a node by adding keyName attribute in a node definition, and if this attribut doesn't exists, the default key will be use.

original LH ticket

Original Creator: Bruno Bonfils

Timeout attribute for a workflow step / job

Feature request...

The ability to specify a configurable timeout against a specific workflow step or job that would fail the step if reached. Execution could still continue if "keep going" is set avoiding long delays, vica versa not setting this would ensure a fail if your script/command doesn't return within n seconds.

original LH ticket

Original Creator: Craig Dunn

improve i18n support in grails gsp files

Replace use of english text in gsp files with use of i18n messages. The English messages don't have to exist, since a default can be specified.

e.g. replace: "History" with '<g:message code="page.xxx.title.History" default="History"/>'

original LH ticket

Original Creator: Greg Schueler

dispatcher needs option to queue job but also observe log

Right now there are two options when running commands and jobs with dispatch and/or run:

  1. Queue the job. Spits back a URL where you can observe the output of the job.
  2. Don’t queue. Output comes back to the terminal.

We need an option where it’s queued, but the output also comes back to the terminal (as if you went to the URL and followed the output). This is important because we want to allow users not to use the GUI but also use the logging capabilities of the rundeck server.

I would go as far as to say this should be the default behavior, although I am not adamant on that point.

original LH ticket

This ticket has 0 attachment(s).

HTML formats in description

Hi

I understand the removal of html format from tag <description> and the removal of <additional> from rundeck for improve speed. But since rundeck is to be used for different kind of users and not only sysadmins and IT people I think it's important to have some small help in the job it self that explain how it works.

The html formats in the description if big enough would allow that, and will work as a kind of small pretty documentation of the job.

An example of that will be something like that (language is portuguese):

@@@
<![CDATA[Este comando realiza duas tarefas em
sequência. Em primeiro lugar obtém a actualização do servidor da GEDI
e em segundo lugar executa a actualização do SIAG

É obrigatório indicar o nº da actualização
no formato apropriado (e.g. "2.0.0-20101231.01")..
<br/

Atenção: Este comando não realiza os backups das bases de
dados.
]]>
@@@
Thanks,

Miguel Lamy

original LH ticket

Original Creator: Miguel Lamy

Reload node definitions from a job workflow

If I'm using a job to spin up new instances in EC2, it would be nice if the workflow could be something like:

  • Spin up new instances.
  • Reload node definitions from my resource provider (Chef).
  • Use those new nodes for subsequent steps in the job.

original LH ticket

Original Creator: Bruce Mitchener

Allow differentiation of unix user that ran a job using "run" command line tool

Right now, all jobs that are kicked off using the "run" command line tool are treated and logged as if they are executed by "admin" (or more specifically, the value of framework.server.username).

This means that command line users have access to all jobs all the time and their executions are not specifically logged as being from them.

We need a mechanism that allows the unix user to be passed to the rundeck server process so that:

  1. aclpolicy can limit the jobs that the unix user can do.
  2. the user can be logged in the rundeck database as the executor of the job.

This assumes a direct mapping between unix users and rundeck users (for example if they authenticated from the same source); it would be nice not to require a password in this case.

We should also have a way to pass any arbitrary username/password for the same kind of purposes; this could be configured locally per account (perhaps via environment variable); see #247 for a related issue.

original LH ticket

Original Creator: Moses Lei

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.