From a487f00ec6f68e2d4e4c6aa70dc25577f5f91e6b Mon Sep 17 00:00:00 2001 From: Stephen Joyner Date: Tue, 30 Apr 2019 12:31:21 -0500 Subject: [PATCH] Add payload caching for OSS repo. Update manifest models. --- .../repository/manifest/ManifestEntry.groovy | 7 ++-- .../manifest/RundeckManifestEntry.groovy | 18 ++++++---- repository-client/build.gradle | 2 +- .../RundeckOfficialManifestService.groovy | 22 +++++++++--- .../repository/RundeckHttpRepository.groovy | 4 ++- .../RundeckOfficialManifestServiceTest.groovy | 34 +++++++++++++++++-- .../RundeckHttpRepositoryTest.groovy | 3 +- 7 files changed, 73 insertions(+), 17 deletions(-) diff --git a/repository-api/src/main/groovy/com/rundeck/repository/manifest/ManifestEntry.groovy b/repository-api/src/main/groovy/com/rundeck/repository/manifest/ManifestEntry.groovy index 7dd2103..af197b4 100644 --- a/repository-api/src/main/groovy/com/rundeck/repository/manifest/ManifestEntry.groovy +++ b/repository-api/src/main/groovy/com/rundeck/repository/manifest/ManifestEntry.groovy @@ -68,7 +68,7 @@ class ManifestEntry { final ManifestEntry that = (ManifestEntry) o - if (id != that.id) { + if (getId() != that.getId()) { return false } @@ -76,6 +76,9 @@ class ManifestEntry { } int hashCode() { - return (id != null ? id.hashCode() : 0) + return (getId() != null ? getId().hashCode() : 0) } + + String getInstallId() { return id } + boolean getInstallable() { return true } } diff --git a/repository-api/src/main/groovy/com/rundeck/repository/manifest/RundeckManifestEntry.groovy b/repository-api/src/main/groovy/com/rundeck/repository/manifest/RundeckManifestEntry.groovy index d95e983..26b491e 100644 --- a/repository-api/src/main/groovy/com/rundeck/repository/manifest/RundeckManifestEntry.groovy +++ b/repository-api/src/main/groovy/com/rundeck/repository/manifest/RundeckManifestEntry.groovy @@ -20,7 +20,11 @@ class RundeckManifestEntry extends ManifestEntry { Map record = [:] String getId() { - return record.object_id ?: record.post_id + return record.post_id + } + + String getInstallId() { + return record.object_id } String getName() { @@ -46,11 +50,11 @@ class RundeckManifestEntry extends ManifestEntry { String getSourceLink() { return record.source_link } -// -// String getArtifactType() { -// return artifactType -// } -// + + String getArtifactType() { + return record.artifact_type + } + String getSupport() { return record.taxonomies?.plugin_support_type?.join(" ") } @@ -71,6 +75,8 @@ class RundeckManifestEntry extends ManifestEntry { return record.binary_link } + boolean getInstallable() { return record.object_id } + // Long getLastRelease() { // return // } diff --git a/repository-client/build.gradle b/repository-client/build.gradle index 805b24b..be592fb 100644 --- a/repository-client/build.gradle +++ b/repository-client/build.gradle @@ -6,7 +6,7 @@ plugins { group = 'com.rundeck.repository' archivesBaseName = 'repository' -version = "0.9.0" +version = "0.9.1" // In this section you declare where to find the dependencies of your project repositories { diff --git a/repository-client/src/main/groovy/com/rundeck/repository/client/manifest/RundeckOfficialManifestService.groovy b/repository-client/src/main/groovy/com/rundeck/repository/client/manifest/RundeckOfficialManifestService.groovy index 846fc1f..354a8cb 100644 --- a/repository-client/src/main/groovy/com/rundeck/repository/client/manifest/RundeckOfficialManifestService.groovy +++ b/repository-client/src/main/groovy/com/rundeck/repository/client/manifest/RundeckOfficialManifestService.groovy @@ -18,6 +18,8 @@ package com.rundeck.repository.client.manifest import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.MapperFeature import com.fasterxml.jackson.databind.ObjectMapper +import com.google.common.cache.Cache +import com.google.common.cache.CacheBuilder import com.rundeck.repository.ResponseMessage import com.rundeck.repository.client.util.ArtifactUtils import com.rundeck.repository.manifest.ManifestEntry @@ -32,16 +34,24 @@ import okhttp3.Response import org.slf4j.Logger import org.slf4j.LoggerFactory +import java.util.concurrent.TimeUnit + class RundeckOfficialManifestService implements ManifestService { - private static Logger LOG = LoggerFactory.getLogger(HttpManifestSource) - private static ObjectMapper mapper = new ObjectMapper() + private static final String ARTIFACT_LIST = "artifact-list" + private static final Logger LOG = LoggerFactory.getLogger(HttpManifestSource) + private static final ObjectMapper mapper = new ObjectMapper() private OkHttpClient client = new OkHttpClient(); private final String serviceEndpoint + private Cache> cache - RundeckOfficialManifestService(String serviceEndpoint) { + RundeckOfficialManifestService(String serviceEndpoint, long cacheListTime, TimeUnit cacheUnit) { this.serviceEndpoint = serviceEndpoint if(LOG.traceEnabled) LOG.trace("service endpoint: ${serviceEndpoint}") + cache =CacheBuilder.newBuilder() + .maximumSize(1) + .expireAfterWrite(cacheListTime, cacheUnit) + .build() } @Override @@ -75,6 +85,9 @@ class RundeckOfficialManifestService implements ManifestService { @Override Collection listArtifacts(final Integer offset, final Integer max) { + Collection artifactList = cache.getIfPresent(ARTIFACT_LIST) + if(artifactList != null) return artifactList + artifactList = [] Response response try { Request rq = new Request.Builder() @@ -84,12 +97,13 @@ class RundeckOfficialManifestService implements ManifestService { response = client.newCall(rq).execute() if(response.isSuccessful()) { def map = mapper.readValue(response.body().byteStream(),HashMap) - Collection artifactList = [] + map.hits.each { hit -> RundeckManifestEntry entry = new RundeckManifestEntry() entry.record = hit artifactList.add(entry) } + cache.put(ARTIFACT_LIST,artifactList) return artifactList } else { LOG.error("listArtifacts http error: ${response.body().string()}") diff --git a/repository-client/src/main/groovy/com/rundeck/repository/client/repository/RundeckHttpRepository.groovy b/repository-client/src/main/groovy/com/rundeck/repository/client/repository/RundeckHttpRepository.groovy index 23ce57e..c9f93e2 100644 --- a/repository-client/src/main/groovy/com/rundeck/repository/client/repository/RundeckHttpRepository.groovy +++ b/repository-client/src/main/groovy/com/rundeck/repository/client/repository/RundeckHttpRepository.groovy @@ -32,6 +32,8 @@ import okhttp3.Response import org.slf4j.Logger import org.slf4j.LoggerFactory +import java.util.concurrent.TimeUnit + class RundeckHttpRepository implements ArtifactRepository { private static final String REPO_ENDPOINT = "https://api.rundeck.com/repo/v1/oss" @@ -49,7 +51,7 @@ class RundeckHttpRepository implements ArtifactRepository { RundeckHttpRepository(RepositoryDefinition repoDef) { this.rundeckRepositoryEndpoint = repoDef.configProperties.staging == true ? REPO_STAGING_ENDPOINT : REPO_ENDPOINT this.repositoryDefinition = repoDef - this.manifestService = new RundeckOfficialManifestService(this.rundeckRepositoryEndpoint) + this.manifestService = new RundeckOfficialManifestService(this.rundeckRepositoryEndpoint, 24, TimeUnit.HOURS) } @Override diff --git a/repository-client/src/test/groovy/com/rundeck/repository/client/manifest/RundeckOfficialManifestServiceTest.groovy b/repository-client/src/test/groovy/com/rundeck/repository/client/manifest/RundeckOfficialManifestServiceTest.groovy index ade7401..1010a42 100644 --- a/repository-client/src/test/groovy/com/rundeck/repository/client/manifest/RundeckOfficialManifestServiceTest.groovy +++ b/repository-client/src/test/groovy/com/rundeck/repository/client/manifest/RundeckOfficialManifestServiceTest.groovy @@ -19,6 +19,8 @@ import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.MockWebServer import spock.lang.Specification +import java.util.concurrent.TimeUnit + class RundeckOfficialManifestServiceTest extends Specification { def "List Artifacts"() { @@ -29,19 +31,47 @@ class RundeckOfficialManifestServiceTest extends Specification { String endpoint = httpServer.url("").toString() when: - RundeckOfficialManifestService svc = new RundeckOfficialManifestService(endpoint) + RundeckOfficialManifestService svc = new RundeckOfficialManifestService(endpoint, 24, TimeUnit.HOURS) def result = svc.listArtifacts(null,null) def entry = result.find { it.record.post_title == "*nixy Local Steps" } then: result.size() == 20 - entry.id == "def44eeac568" + entry.installId == "def44eeac568" entry.name == "nixy-local-steps" entry.display == "*nixy Local Steps" entry.description == "

Run local unix scripts for workflow steps for unixy Nodes.

\n" } + def "Test List Artifact Cache"() { + setup: + MockWebServer httpServer = new MockWebServer() + httpServer.start() + httpServer.enqueue(new MockResponse().setResponseCode(200).setBody(PAYLOAD)) + httpServer.enqueue(new MockResponse().setResponseCode(200).setBody(PAYLOAD2)) + String endpoint = httpServer.url("").toString() + + when: + RundeckOfficialManifestService svc = new RundeckOfficialManifestService(endpoint,5,TimeUnit.SECONDS) + def result = svc.listArtifacts(null,null) + def rq1 =httpServer.takeRequest() + def result1 = svc.listArtifacts(null,null) + Thread.sleep(7000) + def result2 = svc.listArtifacts(null,null) + def rq2 =httpServer.takeRequest() + + + then: + result.size() == 20 + result.hashCode() == result1.hashCode() + result.hashCode() != result2.hashCode() + rq1 + rq2 + + } + private static final String PAYLOAD = '{"hits":[{"post_id":393,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Docker Container","post_excerpt":"

Nodes and steps to do things for docker containers.

\\n","post_date":1555635756,"post_date_formatted":"April 19, 2019","post_modified":1555966832,"comment_count":0,"menu_order":0,"post_author":{"user_id":2,"display_name":"rundeck","user_url":"http://rundeck.wpengine.com","user_login":"rundeck"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/docker_facebook_share-1-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/docker-container/","post_mime_type":"","taxonomies":{"plugin_type":["File Copier","Node Execution","Resource","Step"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["File Copier","Node Execution","Resource","Step"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"3.0.x","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/docker","binary_link":"https://github.com/rundeck-plugins/docker/releases","object_id":"","current_version":"1.4.1","last_release":"04/12/2019","installs":"","artifact_type":null,"plugin_author":"Rundeck, Inc.","auto_installable":false,"post_slug":"docker-container","content":"Three providers in this plugin:\\n\\nResourceModelSource: Lists the containers as nodes\\nNodeExecutor: Execute a command in a container via Command step or Commands page.\\nWorkflowNodeSteps:\\n\\nexec\\ninspect\\nkill\\npause\\nunpause\\nstats\\n\\n\\n\\nTo build and install\\nRun the following commands to install the plugins:\\n\\nResource Model Mapping and Tags\\nMapping attributes from default values\\nWith the \\"Custom Mapping\\" option, you can use the default attributes getting from  to generate node attributes on Rundeck.\\nThe default mapping values are:\\n\\nBy default, these values will be mapped to the  group attributes on nodes. The nodename and hostname will be taken from  and .\\nTo change these values you can use something like this:\\n\\nThis will define the  attribute with the value of  and  attribute with the value of \\nAlso, \\"dynamic\\" default values can be defined depending of an attribute of the docker container, for example: \\"docker-shell.image:tag.default=sh\\" or just \\"docker-shell.default=bash to apply it to all nodes\\"\\nMapping attributes from  result.\\nYou can mapping values directly from the result of the  command.\\nFor example:\\n\\nThis will add the attributes  and  on the node definition.\\nGenerating custom tags.\\nWith the \\"Tag\\" option, you can generate tags based on the value of the default parameters, eg:\\n\\nThis example will add a tag with the value of the parameter \\nNode Executor and File Copier\\nNode Executor includes an attribute to define the custom shell used to execute commands on the remote steps. The options are: bash, sh\\nThis is needed for the File Copier plugin (a default shell is needed when the file is copied to the container).\\nTo define this parameter per container, you can use the mapping attributes on the resource model like:","record_index":0,"objectID":"393-0","_snippetResult":{"post_title":{"value":"Docker Container","matchLevel":"none"},"content":{"value":"Three providers in this plugin:\\n\\nResourceModelSource: Lists the containers as nodes\\nNodeExecutor: Execute a command in a container via Command step or Commands page.\\nWorkflowNodeSteps:\\n\\nexec\\ninspect\\nkill\\npause\\nunpause …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Docker Container","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Nodes and steps to do things for docker containers.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]}}},{"post_id":340,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"*nixy Local Steps","post_excerpt":"

Run local unix scripts for workflow steps for unixy Nodes.

\\n","post_date":1555539362,"post_date_formatted":"April 17, 2019","post_modified":1555628585,"comment_count":0,"menu_order":0,"post_author":{"user_id":10,"display_name":"Stephen Joyner","user_url":"","user_login":"stephen"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/nixy-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/nixy-local-steps/","post_mime_type":"","taxonomies":{"plugin_type":["Step"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Step"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"unix","source_link":"https://github.com/rundeck-plugins/nixy-step-plugins","binary_link":"","object_id":"def44eeac568","current_version":"v1.2.6","last_release":"","installs":"","artifact_type":null,"plugin_author":"Alex Honor","auto_installable":true,"post_slug":"nixy-local-steps","content":"Run local unix scripts for workflow steps for unixy Nodes.\\n ","record_index":0,"objectID":"340-0","_snippetResult":{"post_title":{"value":"*nixy Local Steps","matchLevel":"none"},"content":{"value":"Run local unix scripts for workflow steps for unixy Nodes.\\n ","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"*nixy Local Steps","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Run local unix scripts for workflow steps for unixy Nodes.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"Alex Honor","matchLevel":"none","matchedWords":[]}}},{"post_id":339,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"*nixy File Steps","post_excerpt":"

Perform various functions on files for unixy Nodes.

\\n","post_date":1555539193,"post_date_formatted":"April 17, 2019","post_modified":1555632256,"comment_count":0,"menu_order":0,"post_author":{"user_id":10,"display_name":"Stephen Joyner","user_url":"","user_login":"stephen"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/nixy-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/nixy-file/","post_mime_type":"","taxonomies":{"plugin_type":["Step"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Step"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"unix","source_link":"https://github.com/rundeck-plugins/nixy-step-plugins","binary_link":"","object_id":"ee1e33e004e0","current_version":"v1.2.6","last_release":"","installs":"","artifact_type":null,"plugin_author":"Alex Honor","auto_installable":true,"post_slug":"nixy-file","content":" Workflow Node Steps that perform various functions on files for unixy Nodes.\\nSteps:\\n\\n*nixy / file / contains - file contains pattern\\n*nixy / file / dos2unix - process file with dos2unix\\n*nixy / file / exists - assert file exists. Exit 1, if not.\\n*nixy / file / not-exists - assert file does not exist. Exit 1, if so.\\n*nixy / file / rotate - rotate the file and optionally gzip it.\\n*nixy / file / truncate - truncate the file","record_index":0,"objectID":"339-0","_snippetResult":{"post_title":{"value":"*nixy File Steps","matchLevel":"none"},"content":{"value":" Workflow Node Steps that perform various functions on files for unixy Nodes.\\nSteps:\\n\\n*nixy / file / contains - file contains pattern\\n*nixy / file / dos2unix - process file with dos2unix\\n*nixy / file / exists …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"*nixy File Steps","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Perform various functions on files for unixy Nodes.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"Alex Honor","matchLevel":"none","matchedWords":[]}}},{"post_id":321,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"GCP Nodes","post_excerpt":"

Get resource node data from Google Cloud Platform Compute Engine.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555634035,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/googlecloudplat-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-gcp-nodes-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Resource"],"plugin_support_type":["Community"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Resource"]},"plugin_support_type":{"lvl0":["Community"]}},"is_sticky":0,"organization":"Neutrollized","rundeck_compatibility":"1.5+","target_host_compatibility":"","source_link":"https://github.com/Neutrollized/rundeck-gcp-nodes-plugin","binary_link":"","object_id":"","current_version":"v3.0.9-1","last_release":"12/30/2018","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rundeck-gcp-nodes-plugin","content":"Rundeck GCP Nodes Plugin\\nCHANGELOG\\nThis is a Resource Model Source plugin for Rundeck 3.0.9+ that provides Google Cloud Platform GCE Instances as nodes for the Rundeck Server.\\nIf you\'re still running Rundeck v2.x, please use one of the releases labeled v2.7.1-2 or earlier.\\nInstallation\\nDownload from the releases page.\\nPut the  into your  dir.\\nYou must also authenticate the rundeck-gcp-nodes-plugin to your google cloud platform project.\\n\\nLog into your Google Cloud Platform console, go to the API-Manager, then go to credentials\\nThen go to Create Credentials, Service account key. Under the service account drop down select New Service Account. Name the service account rundeck-gcp-nodes-plugin. Make sure the key type is JSON\\nIAM roles required: Project  & Compute Engine \\nRename the JSON file to  and place it in /etc/rundeck/ (replace  with your GCP project id)\\n\\nRequirements\\nYou will need to add the following labels to your GCP VMs if you want more accurate/meaning full values for the OS (because unfortunately, there currently isn\'t that data in a standalone field/value that describes that for your VM -- just look at the output of ):\\n\\n (example value: prod)\\n (example value: linux)\\n (example value: rhel7)\\n\\n*** No longer a requirement from  onward ***\\nNotes\\nBy default, your connection string (denoted by the  column in your project nodes page) is , but if you want it to show IP instead you can set the  attribute to  or  for internal and external(NAT) IPs respectively\\nBugs/TODOs:\\n in the resource config doesn\'t work, it will always report the nodes regardless of state.\\nDisclaimer\\nMy work is built off of the work done by jameshcoppens and I\'ve only branched it off to updated/maintain it seeing as there are typos in the README that has gone unaddressed and hasn\'t been updated for ~2+ years. There were some functionality/features I wanted to add for my own use (and at work) so here we are... 🙂","record_index":0,"objectID":"321-0","_snippetResult":{"post_title":{"value":"GCP Nodes","matchLevel":"none"},"content":{"value":"Rundeck GCP Nodes Plugin\\nCHANGELOG\\nThis is a Resource Model Source plugin for Rundeck 3.0.9+ that provides Google Cloud Platform GCE Instances as nodes for the Rundeck Server …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"GCP Nodes","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Get resource node data from Google Cloud Platform Compute Engine.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Neutrollized","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":320,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Puppet Nodes","post_excerpt":"

Feed Rundeck with open source Puppet nodes. This Python script lets you customize the facts exposed to Rundeck, which you can then query with the Node selector.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555635353,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/puppet-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-puppet-python/","post_mime_type":"","taxonomies":{"plugin_type":["Resource"],"plugin_support_type":["Community"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Resource"]},"plugin_support_type":{"lvl0":["Community"]}},"is_sticky":0,"organization":"","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/claire-w/puppet-rundeck-python","binary_link":"","object_id":"","current_version":"","last_release":"","installs":"","artifact_type":null,"plugin_author":"claire-w","auto_installable":false,"post_slug":"rundeck-puppet-python","content":"Feed Rundeck with Puppet nodes.\\nThis Python script reads into the Puppet Master filesystem and produces a yaml file containing up-to-date nodes information. The nodes description is based on Puppet facts and reads from the yaml node reports written by puppet. The output file respects Rundeck resource yaml format. Facts (custom or not) can be added at will, and are then available in Rundeck Node Filter.\\nThe final yaml file should be exposed to an internal address, used as a URL Source in Rundeck Project Nodes configuration.\\nRequirement\\n\\nPython 3\\n\\nUsage\\nThis script should run on the Puppet Master and have read access to puppet directories.\\n\\n\\n\\nOptions\\n\\n\\n\\nName\\nDescription\\nDefault\\n\\n\\n\\n\\n\\nRequired: output yaml file\\n\\n\\n\\n\\ninput directory containg puppet nodes yaml files\\n\\n\\n\\n\\nmax age of input node files (days)\\n7\\n\\n\\n\\nConfiguration\\nThe file  should be copied from  and adapted. Sections:\\n\\n: the temporary file where the script will write before replacing the output file with its new version\\n: the yaml block describing each node. It should be formatted in this way:\\n\\n\\n\\n\\nwhere  is the title of your yaml block. The  entry is mandatory.  is an optionnal entry, like a fact you want to access via Rundeck Node Filter.\\n\\n: is a list of tags, which are used in Rundeck for node filtering. The tag list is a subset of {key1, key2,...,keyN}.\\n\\nIf you need to add a few nodes not managed by Puppet, you can describe them in the file , following the example file .\\nExample\\nAssuming your configuration file  is the following:\\n\\n\\n\\nand the script reads from puppet node directory ( by default) the file  which contains:\\n\\n\\n\\nthe output block describing this node will read:\\n\\n\\n\\nEach of the fields of the output block can be queried by Rundeck Node Filter.","record_index":0,"objectID":"320-0","_snippetResult":{"post_title":{"value":"Puppet Nodes","matchLevel":"none"},"content":{"value":"Feed Rundeck with Puppet nodes.\\nThis Python script reads into the Puppet Master filesystem and produces a yaml file containing up-to-date nodes information. The nodes description is based …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Puppet Nodes","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Feed Rundeck with open source Puppet nodes. This Python script lets you customize the facts exposed to Rundeck, which you can then query with the Node selector.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"claire-w","matchLevel":"none","matchedWords":[]}}},{"post_id":319,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Kubernetes Steps","post_excerpt":"

A Rundeck plugin which allow to create(/run/delete) Kubernetes jobs from Rundeck jobs.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555633934,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/kubernetes-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-kubernetes-step-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Step"],"plugin_support_type":["Community"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Step"]},"plugin_support_type":{"lvl0":["Community"]}},"is_sticky":0,"organization":"The s-team lab","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/skilld-labs/rundeck-kubernetes-step-plugin","binary_link":"","object_id":"","current_version":"v1.2.0","last_release":"03/15/2018","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rundeck-kubernetes-step-plugin","content":"A Steps which allow one to create(/run/delete) kubernetes jobs from rundeck jobs.\\nTo build it :\\n\\nrun ./gradlew command in order to compile the project\\nmove the build artefact from build/libs/rundeck-kubernetes-step-plugin-0.1.0-SNAPSHOT.jar to /var/lib/rundeck/libext\\nProfit!","record_index":0,"objectID":"319-0","_snippetResult":{"post_title":{"value":"Kubernetes Steps","matchLevel":"none"},"content":{"value":"A Steps which allow one to create(/run/delete) kubernetes jobs from rundeck jobs.\\nTo build it :\\n\\nrun ./gradlew command in order to compile the project\\nmove the build artefact …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Kubernetes Steps","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

A Rundeck plugin which allow to create(/run/delete) Kubernetes jobs from Rundeck jobs.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"The s-team lab","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":318,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Kubernetes Nodes","post_excerpt":"

A rundeck plugin which provide kubernetes nodes to Rundeck.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555632500,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/kubernetes-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rudeck-kubernetes-nodes-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Resource"],"plugin_support_type":["Community"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Resource"]},"plugin_support_type":{"lvl0":["Community"]}},"is_sticky":0,"organization":"The s-team lab","rundeck_compatibility":"2.9.3+","target_host_compatibility":"unix","source_link":"https://github.com/skilld-labs/rundeck-kubernetes-nodes-plugin","binary_link":"","object_id":"","current_version":"v1.0.2","last_release":"09/21/2017","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rudeck-kubernetes-nodes-plugin","content":"A rundeck Resource Model  Source which provide kubernetes nodes to rundeck\\nTo use it :\\n\\nrun ./gradlew command in order to compile the project\\nmove the build artefact from build/libs/rundeck-kubernetes-nodes-plugin-0.1.0-SNAPSHOT.jar to /var/lib/rundeck/libext\\nProfit!","record_index":0,"objectID":"318-0","_snippetResult":{"post_title":{"value":"Kubernetes Nodes","matchLevel":"none"},"content":{"value":"A rundeck Resource Model  Source which provide kubernetes nodes to rundeck\\nTo use it :\\n\\nrun ./gradlew command in order to compile the project\\nmove the build artefact from build/libs …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Kubernetes Nodes","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

A rundeck plugin which provide kubernetes nodes to Rundeck.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"The s-team lab","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":317,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Logstash Streaming Log Writer","post_excerpt":"

Simple Rundeck streaming Log Writer plugin that will pipe all log output to a Logstash server by writing Json to a TCP port.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555632569,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/logstash-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/logstash-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Storage"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Storage"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/rundeck-logstash-plugin","binary_link":"","object_id":"","current_version":"","last_release":"","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"logstash-plugin","content":"This is a simple Rundeck streaming Log Writer plugin that will pipe all log output to a Logstash server by writing Json to a TCP port. For Rundeck version 1.6.0 or later.\\nInstallation\\nCopy the  to your  directory for Rundeck.\\nEnable the plugin in your  file:\\n\\nConfigure Rundeck\\nThe plugin supports these configuration properties:\\n\\n - hostname of the logstash server\\n - TCP port to send JSON data to\\n\\nYou can update the your framework/project.properties file to set these configuration values:\\nin :\\n\\nor in :\\n\\nConfigure Logstash\\nAdd a TCP input that uses Json format data. Here is an example :\\n\\nStart Logstash\\nUse the config file when starting logstash.","record_index":0,"objectID":"317-0","_snippetResult":{"post_title":{"value":"Logstash Streaming Log Writer","matchLevel":"none"},"content":{"value":"This is a simple Rundeck streaming Log Writer plugin that will pipe all log output to a Logstash server by writing Json to a TCP port. For Rundeck version 1 …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Logstash Streaming Log Writer","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Simple Rundeck streaming Log Writer plugin that will pipe all log output to a Logstash server by writing Json to a TCP port.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":316,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"IRC Notification Plugin","post_excerpt":"

Send job notifications to an IRC channel

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555561994,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/irc-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/irc-notification-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Notification"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Notification"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/irc-notification","binary_link":"","object_id":"","current_version":"","last_release":"","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"irc-notification-plugin","content":"Description\\nThis is a Rundeck Notification plugin that will send a message to an IRC channel. The plugin appears as \\"RundeckBot\\" to the channel, issues a message and then disconnects.\\nHere\'s an example message:\\n\\nThe message contains the trigger name (START), the job name (\\"say hi\\"), who started it (\\"alexh\\") and a URL to follow the execution.\\nBuild / Deploy\\nTo build the project from source, run: . The resulting jar will be found in .\\nCopy the jar to Rundeck plugins directory. For example, on an RPM installation:\\n\\nor for a launcher:\\n\\nThen restart the Rundeck service.\\nUsage\\nTo use the plugin, configure your job to send a notification for on start, success or failure. There are just two configuration properties for the plugin:\\n\\nserver: The IRC server host (eg, irc.acme.com).\\nchannel: The IRC channel name (eg \\"#mychannel\\")\\n\\nThe example job below sends a notification on start:\\n\\n\\n\\nTroubleshooting\\nOutput from the IRC communication can be found in Rundeck\'s service.log.","record_index":0,"objectID":"316-0","_snippetResult":{"post_title":{"value":"IRC Notification Plugin","matchLevel":"none"},"content":{"value":"Description\\nThis is a Rundeck Notification plugin that will send a message to an IRC channel. The plugin appears as \\"RundeckBot\\" to the channel, issues a message and then disconnects …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"IRC Notification Plugin","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Send job notifications to an IRC channel

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":315,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Jabber Notification","post_excerpt":"

Send Rundeck job notifications to Jabber

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555634106,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/rundeckicon-1-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/jabber-notification-preferences/","post_mime_type":"","taxonomies":{"plugin_type":["Notification"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Notification"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/jabber-notification","binary_link":"","object_id":"","current_version":"v1.0","last_release":"09/07/2013","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"jabber-notification-preferences","content":"Notifies a Jabber ID or a Multi-user Chat room about Job status.\\nInstall the plugin in \\nConfiguration\\nModify your :\\n\\nAlternately modify , but replace \\"project.\\" with \\"framework.\\".","record_index":0,"objectID":"315-0","_snippetResult":{"post_title":{"value":"Jabber Notification","matchLevel":"none"},"content":{"value":"Notifies a Jabber ID or a Multi-user Chat room about Job status.\\nInstall the plugin in \\nConfiguration\\nModify your :\\n\\nAlternately modify , but replace \\"project.\\" with \\"framework.\\".","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Jabber Notification","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Send Rundeck job notifications to Jabber

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":314,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"WebDav Logstore","post_excerpt":"

Store execution logs in a WebDAV repository

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555557535,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":[],"permalink":"http://rundeck.wpengine.com/rundeck_plugin/webdav-logstore/","post_mime_type":"","taxonomies":{"plugin_type":["Storage"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Storage"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/webdav-logstore","binary_link":"","object_id":"","current_version":"","last_release":"","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"webdav-logstore","content":"This plugin stores Rundeck execution logs in a WebDAV repository. Execution logs are stored in a user defined path.\\nThis plugin was developed and tested against Apache2 and mod_dav.\\nBuild\\n\\nThe build target will be found in build/libs. Eg,\\n\\nInstallation\\nCopy the plugin JAR file to the  directory.\\nConfiguration\\nUpdate the rundeck-config.properties by adding the plugin name :\\n\\nAdd WebDAV connection info to the /etc/rundeck/framework.properties:\\n\\n\\n should be the base URL to the WebDAV log store.\\n is the login account to the store.\\n is the password to the account.\\n is the resource path to the file in the WebDAV store. The default path is \\"rundeck/projects/${job.project}/${job.execid}.rdlog\\". You can define any path and reference the following tokens:\\n\\n: The job execution id.\\n: The job ID.\\n: The project name.","record_index":0,"objectID":"314-0","_snippetResult":{"post_title":{"value":"WebDav Logstore","matchLevel":"none"},"content":{"value":"This plugin stores Rundeck execution logs in a WebDAV repository. Execution logs are stored in a user defined path.\\nThis plugin was developed and tested against Apache2 and mod_dav …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"WebDav Logstore","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Store execution logs in a WebDAV repository

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":313,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"OpenSSH Bastion Host NodeExecutor","post_excerpt":"

Provides a node-executor and file-copier supporting ssh actions through a bastion host (jump host).

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555634055,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/rundeckicon-1-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/openssh-bastion-host/","post_mime_type":"","taxonomies":{"plugin_type":["Node Execution"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Node Execution"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"3.x","target_host_compatibility":"unix","source_link":"https://github.com/rundeck-plugins/openssh-bastion-node-execution","binary_link":"","object_id":"681c33f5c3fd","current_version":"1.0.0","last_release":"02/15/2019","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"openssh-bastion-host","content":"OpenSSH Bastion Host Node Execution Plugins\\nThis plugin provides a node-executor and file-copier supporting ssh actions through a bastion host. Use this plugin if you must access remote servers via a jump host.\\nDry run mode\\nYou can configure the plugin to just print the invocation string to the console. This can be useful when defining the configuration properties.\\nPlugin Configuration Properties\\n\\nBastion SSH Key Storage Path: Identity to use for the bastion host connection.\\nSSH Options: Extra options to pass to the ssh command invocation. You can overwrite this attribute at node level, using ssh-bastion-ssh-config (node-executor) and scp-bastion-ssh-config (file-copier).\\nssh_config: Specify ProxyCommand and other flags. Consult the reference for ssh_config(5) to learn about posible settings.\\nDry run? If set true, just print the command invocation that would be used but do not execute the command. This is useful to preview.\\n\\nNode Specific Key\\nIf the node is configured with the  attribute, the ssh connection will use that to connect to the remote node.\\n\\nssh-key-storage-path: Set to location in Rundeck Keystore\\n\\nConfiguration\\nThe plugin can be configured as a default node executor and file copier for a Project. Use the Simple Conguration tab to see the configuration properties. The page has a form with inputs to configure the connection to the bastion host.\\nYou can also modify the project.properties or use the API/CLI to define the plugin configuration. The Plugin List page will describe the key names to set.\\nCustomize the ssh_config\\nYou can define multiple lines using a trailing backslash and an indent on the following line.\\nHere is an example that defines ssh_config file.\\n\\nHere ssh_options are set.\\n\\nUsing Dry run, you might see output similar to this:\\n\\nDocker Example\\nTo star the docker example:\\n\\nRun \\nGot to \\nUser/Password => admin/admin\\n\\nThe example has two networks:\\n\\nNetwork1: rundeck, bastion\\nNetwork2: bastion, linux-1 (running on port 2223), linux-2","record_index":0,"objectID":"313-0","_snippetResult":{"post_title":{"value":"OpenSSH Bastion Host NodeExecutor","matchLevel":"none"},"content":{"value":"OpenSSH Bastion Host Node Execution Plugins\\nThis plugin provides a node-executor and file-copier supporting ssh actions through a bastion host. Use this plugin if you must access remote …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"OpenSSH Bastion Host NodeExecutor","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Provides a node-executor and file-copier supporting ssh actions through a bastion host (jump host).

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":312,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"log4j Streaming Logwriter","post_excerpt":"

Sends Rundeck job output messages to the specified log4j logger.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555596853,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/log4j-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/log4j-streaming-logwriter/","post_mime_type":"","taxonomies":{"plugin_type":["Storage"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Storage"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/log4j-streaming-logwriter","binary_link":"","object_id":"","current_version":"v1.0.0","last_release":"10/03/2013","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"log4j-streaming-logwriter","content":"Sends Rundeck job output messages to the specified log4j logger\\nDescription\\nThis StreamingLogWriter plugin sends job output messages to the specified log4j logger. This is useful if you want to direct the job output messages to a particular destination via an appender (eg, SyslogAppender).\\nDeploy\\nThis is a groovy plugin so just copy the .groovy file to $RDECK_BASE/libext.\\nConfiguration\\nTo enable the plugin, update the  file and declare the \\"rundeck.execution.logs.streamingWriterPlugins\\" property. If the property already exists use commas to separate each plugin name.\\nExample: rundeck-config.properties\\n\\nYou can name the log4j logger anything you wish. By default, it is named \\"rundeck\\". To override the default name, update the  file with the following entry:\\n\\nYou can see the logger was named \\"my-logger-name\\".\\nUsage\\nEdit rundeck\'s log4j.properties to set up the appender you wish to send the log messages.\\nHere is MDC data available for use in the log4j conversion pattern layouts.\\n\\nusername: User that ran the job\\nproject: Project name\\nname: the job name\\ngroup: the job group\\nid: the job ID\\nexecid: the execution ID\\nurl: The URL to the execution page\\nloglevel: the log event log level\\n\\nUse the  format specifier with one of the properties. Eg\\n\\nExample\\nHere\'s an example that sends messages to syslog. The logger name is the default \\"rundeck\\" but change that to whatever you specified earlier.\\nExample: log4j.properties\\n\\nHere\'s an example log message using the layout above:\\n\\nIf you are running rsyslog on Linux, be sure the rsyslog.conf enabled the udp/tcp input. eg:","record_index":0,"objectID":"312-0","_snippetResult":{"post_title":{"value":"log4j Streaming Logwriter","matchLevel":"none"},"content":{"value":"Sends Rundeck job output messages to the specified log4j logger\\nDescription\\nThis StreamingLogWriter plugin sends job output messages to the specified log4j logger. This is useful if you want to …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"log4j Streaming Logwriter","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Sends Rundeck job output messages to the specified log4j logger.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":311,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Puppet Bolt Node Executor","post_excerpt":"

Simple Puppet Bolt node executor plugin.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555634203,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/puppet-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-bolt-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Node Execution"],"plugin_support_type":["Community"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Node Execution"]},"plugin_support_type":{"lvl0":["Community"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/bolt-puppet-node-executor","binary_link":"","object_id":"","current_version":"1.0.0","last_release":"10/19/2017","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rundeck-bolt-plugin","content":"Puppet Bolt Node Execution / File Copier Plugins\\nThis plugin provides a node-executor and file-copier using Puppet Bolt. Use this plugin if you want to access remote servers using Puppet Bolt command.\\nRequierments\\n\\nPuppet Bolt need to be installed on rundeck server\\nPython need to be installed on rundeck server\\n\\nPlugin Configuration Properties\\n\\nPrototol: Set protocol of the remote node. The options are SSH or WINRM (windows hosts)\\nPassword Authentication (using key storage).\\nDry run? If set true, just print the command invocation that would be used but do not execute the command. This is useful to preview.\\n\\nDry run mode\\nYou can configure the plugin to just print the invocation string to the console. This can be useful when defining the configuration properties.\\nConfiguration\\nThe plugin can be configured as a default node executor and file copier on a Project. Use the Simple Conguration tab to see the configuration properties.\\nAlso you can define the configuration at node level, setting the node-executor and file-copier attributes, for example:","record_index":0,"objectID":"311-0","_snippetResult":{"post_title":{"value":"Puppet Bolt Node Executor","matchLevel":"none"},"content":{"value":"Puppet Bolt Node Execution / File Copier Plugins\\nThis plugin provides a node-executor and file-copier using Puppet Bolt. Use this plugin if you want to access remote servers using …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Puppet Bolt Node Executor","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Simple Puppet Bolt node executor plugin.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":310,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Git Resource Model","post_excerpt":"

Uses Git to store Rundeck resource model file.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555562092,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/git-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/git-resource-model/","post_mime_type":"","taxonomies":{"plugin_type":["Resource"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Resource"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/git-resource-model","binary_link":"","object_id":"","current_version":"1.0.0","last_release":"12/22/2017","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"git-resource-model","content":"Rundeck GIT Resource Model\\nThis is a plugin for Rundeck > 2.10.0 that uses Git to store resources model file (based on Jgit).\\nBuild\\nRun the following command to built the jar file:\\n\\nInstall\\nCopy the  file to the  directory inside your Rundeck installation.\\nConfiguration\\nYou need to set up the following options to use the plugin:\\n\\nRepo Settings\\n\\nBase Directory: Directory for checkout\\nGit URL: Checkout URL. See git-clone specifically the GIT URLS section. Some examples:\\n\\n\\n\\n\\n\\n\\n\\n\\nBranch: Checkout branch\\nResource model File: Resource model file inside the github repo. This is the file that will be added to Rundeck resource model.\\nFile Format: File format of the resource model, it could be xml, yaml, json\\nWritable: Allow to write the remote file\\n\\nAuthentication\\n\\nGit Password: Password to authenticate remotely\\nSSH: Strict Host Key Checking: Use strict host key checking. If , require remote host SSH key is defined in the  file, otherwise do not verify.\\nSSH Key Path: SSH Key Path to authenticate\\n\\nThe first method of authentication is the private key.If the private key is not defined, it will take the password.\\n\\nThe primary key will work with SSH protocol on the Git URL.\\nThe password will work with http/https protocol on the Git URL (the most of the case, the username is needed on the URI, eg:  when you use password authentication)\\n\\nLimitations\\n\\nThe plugin needs to clone the full repo on the local directory path (Base Directory option) to get the file that will be added to the resource model.\\nAny time that you edit the nodes on the GUI, the commit will be perfomed with the message  (it is not editable)","record_index":0,"objectID":"310-0","_snippetResult":{"post_title":{"value":"Git Resource Model","matchLevel":"none"},"content":{"value":"Rundeck GIT Resource Model\\nThis is a plugin for Rundeck > 2.10.0 that uses Git to store resources model file (based on Jgit).\\nBuild\\nRun the following command to …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Git Resource Model","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Uses Git to store Rundeck resource model file.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":309,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Slack Notification","post_excerpt":"

Rundeck notification plugin for Slack Incoming-WebHook.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555632600,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/slack-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/slack-notification-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Notification"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Notification"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"2.8.2+","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/slack-incoming-webhook-plugin","binary_link":"","object_id":"86177619503e","current_version":"1.2.6","last_release":"02/01/2019","installs":"","artifact_type":null,"plugin_author":"","auto_installable":true,"post_slug":"slack-notification-plugin","content":"Sends rundeck notification messages to a slack channel. This plugin is based on rundeck-slack-plugin(based on run-hipchat-plugin).\\nInstallation Instructions\\nSee the Included Plugins | Rundeck Documentation for more information on installing rundeck plugins.\\nDownload jarfile\\n\\nDownload jarfile from releases.\\ncopy jarfile to \\n\\nBuild\\n\\nbuild the source by gradle.\\ncopy jarfile to \\n\\nConfiguration\\nThis plugin uses Slack incoming-webhooks. Create a new webhook and copy the provided url.\\n\\nThe only required configuration settings are:\\n\\n: Slack incoming-webhook URL.\\n\\nSlack message example.\\nOn success.\\n\\nOn failure.\\n\\nContributors\\n\\nOriginal hbakkum/rundeck-hipchat-plugin author: Hayden Bakkum @hbakkum\\nOriginal bitplaces/rundeck-slack-plugin authors\\n\\n@totallyunknown\\n@notandy\\n@lusis\\n\\n\\n@sawanoboly","record_index":0,"objectID":"309-0","_snippetResult":{"post_title":{"value":"Slack Notification","matchLevel":"none"},"content":{"value":"Sends rundeck notification messages to a slack channel. This plugin is based on rundeck-slack-plugin(based on run-hipchat-plugin).\\nInstallation Instructions\\nSee the Included Plugins | Rundeck Documentation for …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Slack Notification","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Rundeck notification plugin for Slack Incoming-WebHook.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":308,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Powershell Network Drive Steps","post_excerpt":"

Rundeck workflow steps to map and unmap drives.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555632519,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/rundeckicon-1-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/powershell-network-drive-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Step"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Step"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/powershell-networkdrive-steps","binary_link":"","object_id":"","current_version":"1.0.0","last_release":"12/05/2018","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"powershell-network-drive-plugin","content":"Map and unmap Drive\\nWorkflow steps Powershell to map and unmap a drive on remote Windows Nodes.\\nLimitation\\nCurrently, On Powershell is not possible to maintain drives mapping on a remote session, ones the remote session is closed.\\nWorkaround\\nThe workaround for this plugin is mapping the drive using a Powershell\'s Schedule Job. This workaround needs that the Node-Executor calls the scheduled job, for example:\\n\\nA new Powershell Node-Executor plugin version will implement this code.\\nThe drive will be mapping for any step in the workflow until the  step is called.\\nFinally, this workaround works just for users that are part of the administrator group","record_index":0,"objectID":"308-0","_snippetResult":{"post_title":{"value":"Powershell Network Drive Steps","matchLevel":"none"},"content":{"value":"Map and unmap Drive\\nWorkflow steps Powershell to map and unmap a drive on remote Windows Nodes.\\nLimitation\\nCurrently, On Powershell is not possible to maintain drives mapping on a …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Powershell Network Drive Steps","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Rundeck workflow steps to map and unmap drives.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":307,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Azure Storage Steps","post_excerpt":"

Provides a connection with Azure Storage to list/get/put Azure blobs and synchronize folders from a storage account.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555633961,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/azure-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-azure-storage-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Step"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Step"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/rundeck-azure-storage-plugin","binary_link":"","object_id":"1d56241b6d14","current_version":"1.0.0","last_release":"12/15/2018","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rundeck-azure-storage-plugin","content":"This python plugin provides a connection with Azure Storage to list/get/put Azure blobs and synchronize folders from a storage account.\\nInstall\\nBuild with  and copy the  to  folder\\nRequirements\\nThe plugin is written in python and requires  and  modules to be installed on the Rundeck server or remote nodes (depending where the Rundeck jobs will be executed)\\nThe modules can be installed with the following command:\\n\\nList commands\\nRemote commands (can run on remote nodes)\\n\\nAzure / Storage / Remote Copy: Copies a remote file or Azure Storage Object to another location or in Azure Storage. To reference an Azure container use the following URI pattern:  or \\nAzure / Storage / Remote Syncs: Syncs directories with Azure Storage. . To reference an Azure container use the following URI pattern:  or \\n\\nLocal commands (commands that only runs on the Rundeck server)\\n\\nAzure / Storage / List Blobs: List Azure Storage blobs and common prefixes under a prefix or all Azure Storage.\\nAzure / Storage / Remove Blobs: Deletes an Azure Storage blob from a container\\n\\nTroubleshooting\\nIf you get an authentication error on remote nodes, make sure that you add the following entry on in order to pass the RD_* variables from Rundeck server to the remote nodes:","record_index":0,"objectID":"307-0","_snippetResult":{"post_title":{"value":"Azure Storage Steps","matchLevel":"none"},"content":{"value":"This python plugin provides a connection with Azure Storage to list/get/put Azure blobs and synchronize folders from a storage account.\\nInstall\\nBuild with  and copy the  to  folder …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Azure Storage Steps","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Provides a connection with Azure Storage to list/get/put Azure blobs and synchronize folders from a storage account.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":306,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Azure Plugins","post_excerpt":"

Resource Model plugin, an Execution Log Storage plugin, and others plugin steps like Create/Start/Stop Azure VMs.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555633948,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/azure-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-azure-plugins/","post_mime_type":"","taxonomies":{"plugin_type":["Resource"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Resource"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/rundeck-azure-plugin","binary_link":"","object_id":"","current_version":"1.0.3","last_release":"01/19/2018","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rundeck-azure-plugins","content":"Rundeck Azure Plugin\\nAzure Plugin integrates Rundeck with Azure Virtual Machines and Azure Storage. The plugin contains a Resource Model plugin, an Execution Log Storage plugin, and others plugin steps like Create/Start/Stop Azure VMs.\\nInstall\\nBuild with  and copy the  to  folder\\nResource Model Plugin\\nThe resource model plugin provides the Azure VMs as nodes on a Rundeck Server.\\nCredentials Settings\\nSettings related to the Azure connection\\n\\nClient ID: Azure Client ID.\\nTenant ID: Azure Tenant ID.\\nSubscription ID: Azure Subscription ID.\\nAzure Access Key: Azure Access Key.\\nCertificate Path: (Optional) Azure certificate file path (if the access key is not defined).\\nCertificate Password: (Optional) Azure certificate Password (if the access key is not defined).\\n\\nOther Settings:\\nMapping and filter settings\\n\\nMapping Params: Custom mapping settings. Property mapping definitions. Specify multiple mappings in the form \\"attributeName.selector=selector\\" or \\"attributeName.default=value\\", separated by \\";\\"\\nResource Group: Filter using resource group\\nOnly Running Instances: Filter for the \\"Running\\" instances. If false, all instances will be returned.\\n\\nMapping\\nMap the Azure VM properties to Rundeck Node definition\\nDefault Mapping\\n\\nAdding Tags from Azure VM Tags\\nYou can add Rundeck\'s node tags using Azure VM tags.\\nFor example, create an Azure VM tags like:\\n\\nRundeck-Tags=sometag1,sometag2\\n\\n and  will be added as tags on Rundeck nodes\\nAdding custom tags from Azure VM files\\nYou can add extra tags using the azure fields available (right column on the default mapping).\\nFor example, adding extra tags based on the VM resource group and status:\\n\\nAdding custom attribute based on Azure VM Tags\\nAlso, you can add extra nodes attributes using Azure VM tags.\\nFor example, creating the following tags on the Azure VM, you can map those tags to a rundeck node","record_index":0,"objectID":"306-0","_snippetResult":{"post_title":{"value":"Azure Plugins","matchLevel":"none"},"content":{"value":"Rundeck Azure Plugin\\nAzure Plugin integrates Rundeck with Azure Virtual Machines and Azure Storage. The plugin contains a Resource Model plugin, an Execution Log Storage plugin, and others plugin steps …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Azure Plugins","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Resource Model plugin, an Execution Log Storage plugin, and others plugin steps like Create/Start/Stop Azure VMs.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":305,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"HTTP Notification","post_excerpt":"

Rundeck notification plugin that makes HTTP requests

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555632404,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/rundeckicon-1-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/http-notification-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Notification"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Notification"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/http-notification","binary_link":"","object_id":"5c3a72ab196c","current_version":"1.0.5","last_release":"02/06/2018","installs":"","artifact_type":null,"plugin_author":"ahonor","auto_installable":true,"post_slug":"http-notification-plugin","content":"Http Notification\\nA notification plugin that makes HTTP requests\\nBuild\\nRun  to build the jar file\\nInstall\\nCopy the file http-notification-plugin-X.Y.X.jar file to the  folder","record_index":0,"objectID":"305-0","_snippetResult":{"post_title":{"value":"HTTP Notification","matchLevel":"none"},"content":{"value":"Http Notification\\nA notification plugin that makes HTTP requests\\nBuild\\nRun  to build the jar file\\nInstall\\nCopy the file http-notification-plugin-X.Y.X.jar file to the …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"HTTP Notification","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Rundeck notification plugin that makes HTTP requests

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"ahonor","matchLevel":"none","matchedWords":[]}}}],"nbHits":80,"page":0,"nbPages":4,"hitsPerPage":20,"processingTimeMS":5,"exhaustiveNbHits":false,"query":"","params":"query="}' + private static final String PAYLOAD2 = '{"hits":[{"post_id":3934,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Docker Contain","post_excerpt":"

Nodes and steps to ngs for docker containers.

\\n","post_date":1555635756,"post_date_formatted":"April 19, 2019","post_modified":1555966832,"comment_count":0,"menu_order":0,"post_author":{"user_id":2,"display_name":"rundeck","user_url":"http://rundeck.wpengine.com","user_login":"rundeck"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/docker_facebook_share-1-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/docker-container/","post_mime_type":"","taxonomies":{"plugin_type":["File Copier","Node Execution","Resource","Step"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["File Copier","Node Execution","Resource","Step"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"3.0.x","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/docker","binary_link":"https://github.com/rundeck-plugins/docker/releases","object_id":"","current_version":"1.4.1","last_release":"04/12/2019","installs":"","artifact_type":null,"plugin_author":"Rundeck, Inc.","auto_installable":false,"post_slug":"docker-container","content":"Three providers in this plugin:\\n\\nResourceModelSource: Lists the containers as nodes\\nNodeExecutor: Execute a command in a container via Command step or Commands page.\\nWorkflowNodeSteps:\\n\\nexec\\ninspect\\nkill\\npause\\nunpause\\nstats\\n\\n\\n\\nTo build and install\\nRun the following commands to install the plugins:\\n\\nResource Model Mapping and Tags\\nMapping attributes from default values\\nWith the \\"Custom Mapping\\" option, you can use the default attributes getting from  to generate node attributes on Rundeck.\\nThe default mapping values are:\\n\\nBy default, these values will be mapped to the  group attributes on nodes. The nodename and hostname will be taken from  and .\\nTo change these values you can use something like this:\\n\\nThis will define the  attribute with the value of  and  attribute with the value of \\nAlso, \\"dynamic\\" default values can be defined depending of an attribute of the docker container, for example: \\"docker-shell.image:tag.default=sh\\" or just \\"docker-shell.default=bash to apply it to all nodes\\"\\nMapping attributes from  result.\\nYou can mapping values directly from the result of the  command.\\nFor example:\\n\\nThis will add the attributes  and  on the node definition.\\nGenerating custom tags.\\nWith the \\"Tag\\" option, you can generate tags based on the value of the default parameters, eg:\\n\\nThis example will add a tag with the value of the parameter \\nNode Executor and File Copier\\nNode Executor includes an attribute to define the custom shell used to execute commands on the remote steps. The options are: bash, sh\\nThis is needed for the File Copier plugin (a default shell is needed when the file is copied to the container).\\nTo define this parameter per container, you can use the mapping attributes on the resource model like:","record_index":0,"objectID":"393-0","_snippetResult":{"post_title":{"value":"Docker Container","matchLevel":"none"},"content":{"value":"Three providers in this plugin:\\n\\nResourceModelSource: Lists the containers as nodes\\nNodeExecutor: Execute a command in a container via Command step or Commands page.\\nWorkflowNodeSteps:\\n\\nexec\\ninspect\\nkill\\npause\\nunpause …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Docker Container","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Nodes and steps to do things for docker containers.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]}}},{"post_id":340,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"*nixy Local Steps","post_excerpt":"

Run local unix scripts for workflow steps for unixy Nodes.

\\n","post_date":1555539362,"post_date_formatted":"April 17, 2019","post_modified":1555628585,"comment_count":0,"menu_order":0,"post_author":{"user_id":10,"display_name":"Stephen Joyner","user_url":"","user_login":"stephen"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/nixy-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/nixy-local-steps/","post_mime_type":"","taxonomies":{"plugin_type":["Step"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Step"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"unix","source_link":"https://github.com/rundeck-plugins/nixy-step-plugins","binary_link":"","object_id":"def44eeac568","current_version":"v1.2.6","last_release":"","installs":"","artifact_type":null,"plugin_author":"Alex Honor","auto_installable":true,"post_slug":"nixy-local-steps","content":"Run local unix scripts for workflow steps for unixy Nodes.\\n ","record_index":0,"objectID":"340-0","_snippetResult":{"post_title":{"value":"*nixy Local Steps","matchLevel":"none"},"content":{"value":"Run local unix scripts for workflow steps for unixy Nodes.\\n ","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"*nixy Local Steps","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Run local unix scripts for workflow steps for unixy Nodes.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"Alex Honor","matchLevel":"none","matchedWords":[]}}},{"post_id":339,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"*nixy File Steps","post_excerpt":"

Perform various functions on files for unixy Nodes.

\\n","post_date":1555539193,"post_date_formatted":"April 17, 2019","post_modified":1555632256,"comment_count":0,"menu_order":0,"post_author":{"user_id":10,"display_name":"Stephen Joyner","user_url":"","user_login":"stephen"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/nixy-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/nixy-file/","post_mime_type":"","taxonomies":{"plugin_type":["Step"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Step"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"unix","source_link":"https://github.com/rundeck-plugins/nixy-step-plugins","binary_link":"","object_id":"ee1e33e004e0","current_version":"v1.2.6","last_release":"","installs":"","artifact_type":null,"plugin_author":"Alex Honor","auto_installable":true,"post_slug":"nixy-file","content":" Workflow Node Steps that perform various functions on files for unixy Nodes.\\nSteps:\\n\\n*nixy / file / contains - file contains pattern\\n*nixy / file / dos2unix - process file with dos2unix\\n*nixy / file / exists - assert file exists. Exit 1, if not.\\n*nixy / file / not-exists - assert file does not exist. Exit 1, if so.\\n*nixy / file / rotate - rotate the file and optionally gzip it.\\n*nixy / file / truncate - truncate the file","record_index":0,"objectID":"339-0","_snippetResult":{"post_title":{"value":"*nixy File Steps","matchLevel":"none"},"content":{"value":" Workflow Node Steps that perform various functions on files for unixy Nodes.\\nSteps:\\n\\n*nixy / file / contains - file contains pattern\\n*nixy / file / dos2unix - process file with dos2unix\\n*nixy / file / exists …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"*nixy File Steps","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Perform various functions on files for unixy Nodes.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"Alex Honor","matchLevel":"none","matchedWords":[]}}},{"post_id":321,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"GCP Nodes","post_excerpt":"

Get resource node data from Google Cloud Platform Compute Engine.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555634035,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/googlecloudplat-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-gcp-nodes-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Resource"],"plugin_support_type":["Community"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Resource"]},"plugin_support_type":{"lvl0":["Community"]}},"is_sticky":0,"organization":"Neutrollized","rundeck_compatibility":"1.5+","target_host_compatibility":"","source_link":"https://github.com/Neutrollized/rundeck-gcp-nodes-plugin","binary_link":"","object_id":"","current_version":"v3.0.9-1","last_release":"12/30/2018","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rundeck-gcp-nodes-plugin","content":"Rundeck GCP Nodes Plugin\\nCHANGELOG\\nThis is a Resource Model Source plugin for Rundeck 3.0.9+ that provides Google Cloud Platform GCE Instances as nodes for the Rundeck Server.\\nIf you\'re still running Rundeck v2.x, please use one of the releases labeled v2.7.1-2 or earlier.\\nInstallation\\nDownload from the releases page.\\nPut the  into your  dir.\\nYou must also authenticate the rundeck-gcp-nodes-plugin to your google cloud platform project.\\n\\nLog into your Google Cloud Platform console, go to the API-Manager, then go to credentials\\nThen go to Create Credentials, Service account key. Under the service account drop down select New Service Account. Name the service account rundeck-gcp-nodes-plugin. Make sure the key type is JSON\\nIAM roles required: Project  & Compute Engine \\nRename the JSON file to  and place it in /etc/rundeck/ (replace  with your GCP project id)\\n\\nRequirements\\nYou will need to add the following labels to your GCP VMs if you want more accurate/meaning full values for the OS (because unfortunately, there currently isn\'t that data in a standalone field/value that describes that for your VM -- just look at the output of ):\\n\\n (example value: prod)\\n (example value: linux)\\n (example value: rhel7)\\n\\n*** No longer a requirement from  onward ***\\nNotes\\nBy default, your connection string (denoted by the  column in your project nodes page) is , but if you want it to show IP instead you can set the  attribute to  or  for internal and external(NAT) IPs respectively\\nBugs/TODOs:\\n in the resource config doesn\'t work, it will always report the nodes regardless of state.\\nDisclaimer\\nMy work is built off of the work done by jameshcoppens and I\'ve only branched it off to updated/maintain it seeing as there are typos in the README that has gone unaddressed and hasn\'t been updated for ~2+ years. There were some functionality/features I wanted to add for my own use (and at work) so here we are... 🙂","record_index":0,"objectID":"321-0","_snippetResult":{"post_title":{"value":"GCP Nodes","matchLevel":"none"},"content":{"value":"Rundeck GCP Nodes Plugin\\nCHANGELOG\\nThis is a Resource Model Source plugin for Rundeck 3.0.9+ that provides Google Cloud Platform GCE Instances as nodes for the Rundeck Server …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"GCP Nodes","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Get resource node data from Google Cloud Platform Compute Engine.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Neutrollized","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":320,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Puppet Nodes","post_excerpt":"

Feed Rundeck with open source Puppet nodes. This Python script lets you customize the facts exposed to Rundeck, which you can then query with the Node selector.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555635353,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/puppet-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-puppet-python/","post_mime_type":"","taxonomies":{"plugin_type":["Resource"],"plugin_support_type":["Community"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Resource"]},"plugin_support_type":{"lvl0":["Community"]}},"is_sticky":0,"organization":"","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/claire-w/puppet-rundeck-python","binary_link":"","object_id":"","current_version":"","last_release":"","installs":"","artifact_type":null,"plugin_author":"claire-w","auto_installable":false,"post_slug":"rundeck-puppet-python","content":"Feed Rundeck with Puppet nodes.\\nThis Python script reads into the Puppet Master filesystem and produces a yaml file containing up-to-date nodes information. The nodes description is based on Puppet facts and reads from the yaml node reports written by puppet. The output file respects Rundeck resource yaml format. Facts (custom or not) can be added at will, and are then available in Rundeck Node Filter.\\nThe final yaml file should be exposed to an internal address, used as a URL Source in Rundeck Project Nodes configuration.\\nRequirement\\n\\nPython 3\\n\\nUsage\\nThis script should run on the Puppet Master and have read access to puppet directories.\\n\\n\\n\\nOptions\\n\\n\\n\\nName\\nDescription\\nDefault\\n\\n\\n\\n\\n\\nRequired: output yaml file\\n\\n\\n\\n\\ninput directory containg puppet nodes yaml files\\n\\n\\n\\n\\nmax age of input node files (days)\\n7\\n\\n\\n\\nConfiguration\\nThe file  should be copied from  and adapted. Sections:\\n\\n: the temporary file where the script will write before replacing the output file with its new version\\n: the yaml block describing each node. It should be formatted in this way:\\n\\n\\n\\n\\nwhere  is the title of your yaml block. The  entry is mandatory.  is an optionnal entry, like a fact you want to access via Rundeck Node Filter.\\n\\n: is a list of tags, which are used in Rundeck for node filtering. The tag list is a subset of {key1, key2,...,keyN}.\\n\\nIf you need to add a few nodes not managed by Puppet, you can describe them in the file , following the example file .\\nExample\\nAssuming your configuration file  is the following:\\n\\n\\n\\nand the script reads from puppet node directory ( by default) the file  which contains:\\n\\n\\n\\nthe output block describing this node will read:\\n\\n\\n\\nEach of the fields of the output block can be queried by Rundeck Node Filter.","record_index":0,"objectID":"320-0","_snippetResult":{"post_title":{"value":"Puppet Nodes","matchLevel":"none"},"content":{"value":"Feed Rundeck with Puppet nodes.\\nThis Python script reads into the Puppet Master filesystem and produces a yaml file containing up-to-date nodes information. The nodes description is based …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Puppet Nodes","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Feed Rundeck with open source Puppet nodes. This Python script lets you customize the facts exposed to Rundeck, which you can then query with the Node selector.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"claire-w","matchLevel":"none","matchedWords":[]}}},{"post_id":319,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Kubernetes Steps","post_excerpt":"

A Rundeck plugin which allow to create(/run/delete) Kubernetes jobs from Rundeck jobs.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555633934,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/kubernetes-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-kubernetes-step-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Step"],"plugin_support_type":["Community"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Step"]},"plugin_support_type":{"lvl0":["Community"]}},"is_sticky":0,"organization":"The s-team lab","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/skilld-labs/rundeck-kubernetes-step-plugin","binary_link":"","object_id":"","current_version":"v1.2.0","last_release":"03/15/2018","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rundeck-kubernetes-step-plugin","content":"A Steps which allow one to create(/run/delete) kubernetes jobs from rundeck jobs.\\nTo build it :\\n\\nrun ./gradlew command in order to compile the project\\nmove the build artefact from build/libs/rundeck-kubernetes-step-plugin-0.1.0-SNAPSHOT.jar to /var/lib/rundeck/libext\\nProfit!","record_index":0,"objectID":"319-0","_snippetResult":{"post_title":{"value":"Kubernetes Steps","matchLevel":"none"},"content":{"value":"A Steps which allow one to create(/run/delete) kubernetes jobs from rundeck jobs.\\nTo build it :\\n\\nrun ./gradlew command in order to compile the project\\nmove the build artefact …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Kubernetes Steps","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

A Rundeck plugin which allow to create(/run/delete) Kubernetes jobs from Rundeck jobs.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"The s-team lab","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":318,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Kubernetes Nodes","post_excerpt":"

A rundeck plugin which provide kubernetes nodes to Rundeck.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555632500,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/kubernetes-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rudeck-kubernetes-nodes-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Resource"],"plugin_support_type":["Community"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Resource"]},"plugin_support_type":{"lvl0":["Community"]}},"is_sticky":0,"organization":"The s-team lab","rundeck_compatibility":"2.9.3+","target_host_compatibility":"unix","source_link":"https://github.com/skilld-labs/rundeck-kubernetes-nodes-plugin","binary_link":"","object_id":"","current_version":"v1.0.2","last_release":"09/21/2017","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rudeck-kubernetes-nodes-plugin","content":"A rundeck Resource Model  Source which provide kubernetes nodes to rundeck\\nTo use it :\\n\\nrun ./gradlew command in order to compile the project\\nmove the build artefact from build/libs/rundeck-kubernetes-nodes-plugin-0.1.0-SNAPSHOT.jar to /var/lib/rundeck/libext\\nProfit!","record_index":0,"objectID":"318-0","_snippetResult":{"post_title":{"value":"Kubernetes Nodes","matchLevel":"none"},"content":{"value":"A rundeck Resource Model  Source which provide kubernetes nodes to rundeck\\nTo use it :\\n\\nrun ./gradlew command in order to compile the project\\nmove the build artefact from build/libs …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Kubernetes Nodes","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

A rundeck plugin which provide kubernetes nodes to Rundeck.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"The s-team lab","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":317,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Logstash Streaming Log Writer","post_excerpt":"

Simple Rundeck streaming Log Writer plugin that will pipe all log output to a Logstash server by writing Json to a TCP port.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555632569,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/logstash-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/logstash-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Storage"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Storage"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/rundeck-logstash-plugin","binary_link":"","object_id":"","current_version":"","last_release":"","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"logstash-plugin","content":"This is a simple Rundeck streaming Log Writer plugin that will pipe all log output to a Logstash server by writing Json to a TCP port. For Rundeck version 1.6.0 or later.\\nInstallation\\nCopy the  to your  directory for Rundeck.\\nEnable the plugin in your  file:\\n\\nConfigure Rundeck\\nThe plugin supports these configuration properties:\\n\\n - hostname of the logstash server\\n - TCP port to send JSON data to\\n\\nYou can update the your framework/project.properties file to set these configuration values:\\nin :\\n\\nor in :\\n\\nConfigure Logstash\\nAdd a TCP input that uses Json format data. Here is an example :\\n\\nStart Logstash\\nUse the config file when starting logstash.","record_index":0,"objectID":"317-0","_snippetResult":{"post_title":{"value":"Logstash Streaming Log Writer","matchLevel":"none"},"content":{"value":"This is a simple Rundeck streaming Log Writer plugin that will pipe all log output to a Logstash server by writing Json to a TCP port. For Rundeck version 1 …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Logstash Streaming Log Writer","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Simple Rundeck streaming Log Writer plugin that will pipe all log output to a Logstash server by writing Json to a TCP port.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":316,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"IRC Notification Plugin","post_excerpt":"

Send job notifications to an IRC channel

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555561994,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/irc-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/irc-notification-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Notification"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Notification"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/irc-notification","binary_link":"","object_id":"","current_version":"","last_release":"","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"irc-notification-plugin","content":"Description\\nThis is a Rundeck Notification plugin that will send a message to an IRC channel. The plugin appears as \\"RundeckBot\\" to the channel, issues a message and then disconnects.\\nHere\'s an example message:\\n\\nThe message contains the trigger name (START), the job name (\\"say hi\\"), who started it (\\"alexh\\") and a URL to follow the execution.\\nBuild / Deploy\\nTo build the project from source, run: . The resulting jar will be found in .\\nCopy the jar to Rundeck plugins directory. For example, on an RPM installation:\\n\\nor for a launcher:\\n\\nThen restart the Rundeck service.\\nUsage\\nTo use the plugin, configure your job to send a notification for on start, success or failure. There are just two configuration properties for the plugin:\\n\\nserver: The IRC server host (eg, irc.acme.com).\\nchannel: The IRC channel name (eg \\"#mychannel\\")\\n\\nThe example job below sends a notification on start:\\n\\n\\n\\nTroubleshooting\\nOutput from the IRC communication can be found in Rundeck\'s service.log.","record_index":0,"objectID":"316-0","_snippetResult":{"post_title":{"value":"IRC Notification Plugin","matchLevel":"none"},"content":{"value":"Description\\nThis is a Rundeck Notification plugin that will send a message to an IRC channel. The plugin appears as \\"RundeckBot\\" to the channel, issues a message and then disconnects …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"IRC Notification Plugin","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Send job notifications to an IRC channel

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":315,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Jabber Notification","post_excerpt":"

Send Rundeck job notifications to Jabber

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555634106,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/rundeckicon-1-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/jabber-notification-preferences/","post_mime_type":"","taxonomies":{"plugin_type":["Notification"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Notification"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/jabber-notification","binary_link":"","object_id":"","current_version":"v1.0","last_release":"09/07/2013","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"jabber-notification-preferences","content":"Notifies a Jabber ID or a Multi-user Chat room about Job status.\\nInstall the plugin in \\nConfiguration\\nModify your :\\n\\nAlternately modify , but replace \\"project.\\" with \\"framework.\\".","record_index":0,"objectID":"315-0","_snippetResult":{"post_title":{"value":"Jabber Notification","matchLevel":"none"},"content":{"value":"Notifies a Jabber ID or a Multi-user Chat room about Job status.\\nInstall the plugin in \\nConfiguration\\nModify your :\\n\\nAlternately modify , but replace \\"project.\\" with \\"framework.\\".","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Jabber Notification","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Send Rundeck job notifications to Jabber

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":314,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"WebDav Logstore","post_excerpt":"

Store execution logs in a WebDAV repository

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555557535,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":[],"permalink":"http://rundeck.wpengine.com/rundeck_plugin/webdav-logstore/","post_mime_type":"","taxonomies":{"plugin_type":["Storage"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Storage"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/webdav-logstore","binary_link":"","object_id":"","current_version":"","last_release":"","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"webdav-logstore","content":"This plugin stores Rundeck execution logs in a WebDAV repository. Execution logs are stored in a user defined path.\\nThis plugin was developed and tested against Apache2 and mod_dav.\\nBuild\\n\\nThe build target will be found in build/libs. Eg,\\n\\nInstallation\\nCopy the plugin JAR file to the  directory.\\nConfiguration\\nUpdate the rundeck-config.properties by adding the plugin name :\\n\\nAdd WebDAV connection info to the /etc/rundeck/framework.properties:\\n\\n\\n should be the base URL to the WebDAV log store.\\n is the login account to the store.\\n is the password to the account.\\n is the resource path to the file in the WebDAV store. The default path is \\"rundeck/projects/${job.project}/${job.execid}.rdlog\\". You can define any path and reference the following tokens:\\n\\n: The job execution id.\\n: The job ID.\\n: The project name.","record_index":0,"objectID":"314-0","_snippetResult":{"post_title":{"value":"WebDav Logstore","matchLevel":"none"},"content":{"value":"This plugin stores Rundeck execution logs in a WebDAV repository. Execution logs are stored in a user defined path.\\nThis plugin was developed and tested against Apache2 and mod_dav …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"WebDav Logstore","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Store execution logs in a WebDAV repository

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":313,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"OpenSSH Bastion Host NodeExecutor","post_excerpt":"

Provides a node-executor and file-copier supporting ssh actions through a bastion host (jump host).

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555634055,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/rundeckicon-1-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/openssh-bastion-host/","post_mime_type":"","taxonomies":{"plugin_type":["Node Execution"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Node Execution"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"3.x","target_host_compatibility":"unix","source_link":"https://github.com/rundeck-plugins/openssh-bastion-node-execution","binary_link":"","object_id":"681c33f5c3fd","current_version":"1.0.0","last_release":"02/15/2019","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"openssh-bastion-host","content":"OpenSSH Bastion Host Node Execution Plugins\\nThis plugin provides a node-executor and file-copier supporting ssh actions through a bastion host. Use this plugin if you must access remote servers via a jump host.\\nDry run mode\\nYou can configure the plugin to just print the invocation string to the console. This can be useful when defining the configuration properties.\\nPlugin Configuration Properties\\n\\nBastion SSH Key Storage Path: Identity to use for the bastion host connection.\\nSSH Options: Extra options to pass to the ssh command invocation. You can overwrite this attribute at node level, using ssh-bastion-ssh-config (node-executor) and scp-bastion-ssh-config (file-copier).\\nssh_config: Specify ProxyCommand and other flags. Consult the reference for ssh_config(5) to learn about posible settings.\\nDry run? If set true, just print the command invocation that would be used but do not execute the command. This is useful to preview.\\n\\nNode Specific Key\\nIf the node is configured with the  attribute, the ssh connection will use that to connect to the remote node.\\n\\nssh-key-storage-path: Set to location in Rundeck Keystore\\n\\nConfiguration\\nThe plugin can be configured as a default node executor and file copier for a Project. Use the Simple Conguration tab to see the configuration properties. The page has a form with inputs to configure the connection to the bastion host.\\nYou can also modify the project.properties or use the API/CLI to define the plugin configuration. The Plugin List page will describe the key names to set.\\nCustomize the ssh_config\\nYou can define multiple lines using a trailing backslash and an indent on the following line.\\nHere is an example that defines ssh_config file.\\n\\nHere ssh_options are set.\\n\\nUsing Dry run, you might see output similar to this:\\n\\nDocker Example\\nTo star the docker example:\\n\\nRun \\nGot to \\nUser/Password => admin/admin\\n\\nThe example has two networks:\\n\\nNetwork1: rundeck, bastion\\nNetwork2: bastion, linux-1 (running on port 2223), linux-2","record_index":0,"objectID":"313-0","_snippetResult":{"post_title":{"value":"OpenSSH Bastion Host NodeExecutor","matchLevel":"none"},"content":{"value":"OpenSSH Bastion Host Node Execution Plugins\\nThis plugin provides a node-executor and file-copier supporting ssh actions through a bastion host. Use this plugin if you must access remote …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"OpenSSH Bastion Host NodeExecutor","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Provides a node-executor and file-copier supporting ssh actions through a bastion host (jump host).

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":312,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"log4j Streaming Logwriter","post_excerpt":"

Sends Rundeck job output messages to the specified log4j logger.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555596853,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/log4j-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/log4j-streaming-logwriter/","post_mime_type":"","taxonomies":{"plugin_type":["Storage"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Storage"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/log4j-streaming-logwriter","binary_link":"","object_id":"","current_version":"v1.0.0","last_release":"10/03/2013","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"log4j-streaming-logwriter","content":"Sends Rundeck job output messages to the specified log4j logger\\nDescription\\nThis StreamingLogWriter plugin sends job output messages to the specified log4j logger. This is useful if you want to direct the job output messages to a particular destination via an appender (eg, SyslogAppender).\\nDeploy\\nThis is a groovy plugin so just copy the .groovy file to $RDECK_BASE/libext.\\nConfiguration\\nTo enable the plugin, update the  file and declare the \\"rundeck.execution.logs.streamingWriterPlugins\\" property. If the property already exists use commas to separate each plugin name.\\nExample: rundeck-config.properties\\n\\nYou can name the log4j logger anything you wish. By default, it is named \\"rundeck\\". To override the default name, update the  file with the following entry:\\n\\nYou can see the logger was named \\"my-logger-name\\".\\nUsage\\nEdit rundeck\'s log4j.properties to set up the appender you wish to send the log messages.\\nHere is MDC data available for use in the log4j conversion pattern layouts.\\n\\nusername: User that ran the job\\nproject: Project name\\nname: the job name\\ngroup: the job group\\nid: the job ID\\nexecid: the execution ID\\nurl: The URL to the execution page\\nloglevel: the log event log level\\n\\nUse the  format specifier with one of the properties. Eg\\n\\nExample\\nHere\'s an example that sends messages to syslog. The logger name is the default \\"rundeck\\" but change that to whatever you specified earlier.\\nExample: log4j.properties\\n\\nHere\'s an example log message using the layout above:\\n\\nIf you are running rsyslog on Linux, be sure the rsyslog.conf enabled the udp/tcp input. eg:","record_index":0,"objectID":"312-0","_snippetResult":{"post_title":{"value":"log4j Streaming Logwriter","matchLevel":"none"},"content":{"value":"Sends Rundeck job output messages to the specified log4j logger\\nDescription\\nThis StreamingLogWriter plugin sends job output messages to the specified log4j logger. This is useful if you want to …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"log4j Streaming Logwriter","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Sends Rundeck job output messages to the specified log4j logger.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":311,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Puppet Bolt Node Executor","post_excerpt":"

Simple Puppet Bolt node executor plugin.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555634203,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/puppet-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-bolt-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Node Execution"],"plugin_support_type":["Community"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Node Execution"]},"plugin_support_type":{"lvl0":["Community"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/bolt-puppet-node-executor","binary_link":"","object_id":"","current_version":"1.0.0","last_release":"10/19/2017","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rundeck-bolt-plugin","content":"Puppet Bolt Node Execution / File Copier Plugins\\nThis plugin provides a node-executor and file-copier using Puppet Bolt. Use this plugin if you want to access remote servers using Puppet Bolt command.\\nRequierments\\n\\nPuppet Bolt need to be installed on rundeck server\\nPython need to be installed on rundeck server\\n\\nPlugin Configuration Properties\\n\\nPrototol: Set protocol of the remote node. The options are SSH or WINRM (windows hosts)\\nPassword Authentication (using key storage).\\nDry run? If set true, just print the command invocation that would be used but do not execute the command. This is useful to preview.\\n\\nDry run mode\\nYou can configure the plugin to just print the invocation string to the console. This can be useful when defining the configuration properties.\\nConfiguration\\nThe plugin can be configured as a default node executor and file copier on a Project. Use the Simple Conguration tab to see the configuration properties.\\nAlso you can define the configuration at node level, setting the node-executor and file-copier attributes, for example:","record_index":0,"objectID":"311-0","_snippetResult":{"post_title":{"value":"Puppet Bolt Node Executor","matchLevel":"none"},"content":{"value":"Puppet Bolt Node Execution / File Copier Plugins\\nThis plugin provides a node-executor and file-copier using Puppet Bolt. Use this plugin if you want to access remote servers using …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Puppet Bolt Node Executor","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Simple Puppet Bolt node executor plugin.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":310,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Git Resource Model","post_excerpt":"

Uses Git to store Rundeck resource model file.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555562092,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/git-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/git-resource-model/","post_mime_type":"","taxonomies":{"plugin_type":["Resource"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Resource"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/git-resource-model","binary_link":"","object_id":"","current_version":"1.0.0","last_release":"12/22/2017","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"git-resource-model","content":"Rundeck GIT Resource Model\\nThis is a plugin for Rundeck > 2.10.0 that uses Git to store resources model file (based on Jgit).\\nBuild\\nRun the following command to built the jar file:\\n\\nInstall\\nCopy the  file to the  directory inside your Rundeck installation.\\nConfiguration\\nYou need to set up the following options to use the plugin:\\n\\nRepo Settings\\n\\nBase Directory: Directory for checkout\\nGit URL: Checkout URL. See git-clone specifically the GIT URLS section. Some examples:\\n\\n\\n\\n\\n\\n\\n\\n\\nBranch: Checkout branch\\nResource model File: Resource model file inside the github repo. This is the file that will be added to Rundeck resource model.\\nFile Format: File format of the resource model, it could be xml, yaml, json\\nWritable: Allow to write the remote file\\n\\nAuthentication\\n\\nGit Password: Password to authenticate remotely\\nSSH: Strict Host Key Checking: Use strict host key checking. If , require remote host SSH key is defined in the  file, otherwise do not verify.\\nSSH Key Path: SSH Key Path to authenticate\\n\\nThe first method of authentication is the private key.If the private key is not defined, it will take the password.\\n\\nThe primary key will work with SSH protocol on the Git URL.\\nThe password will work with http/https protocol on the Git URL (the most of the case, the username is needed on the URI, eg:  when you use password authentication)\\n\\nLimitations\\n\\nThe plugin needs to clone the full repo on the local directory path (Base Directory option) to get the file that will be added to the resource model.\\nAny time that you edit the nodes on the GUI, the commit will be perfomed with the message  (it is not editable)","record_index":0,"objectID":"310-0","_snippetResult":{"post_title":{"value":"Git Resource Model","matchLevel":"none"},"content":{"value":"Rundeck GIT Resource Model\\nThis is a plugin for Rundeck > 2.10.0 that uses Git to store resources model file (based on Jgit).\\nBuild\\nRun the following command to …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Git Resource Model","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Uses Git to store Rundeck resource model file.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":309,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Slack Notification","post_excerpt":"

Rundeck notification plugin for Slack Incoming-WebHook.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555632600,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/slack-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/slack-notification-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Notification"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Notification"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"2.8.2+","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/slack-incoming-webhook-plugin","binary_link":"","object_id":"86177619503e","current_version":"1.2.6","last_release":"02/01/2019","installs":"","artifact_type":null,"plugin_author":"","auto_installable":true,"post_slug":"slack-notification-plugin","content":"Sends rundeck notification messages to a slack channel. This plugin is based on rundeck-slack-plugin(based on run-hipchat-plugin).\\nInstallation Instructions\\nSee the Included Plugins | Rundeck Documentation for more information on installing rundeck plugins.\\nDownload jarfile\\n\\nDownload jarfile from releases.\\ncopy jarfile to \\n\\nBuild\\n\\nbuild the source by gradle.\\ncopy jarfile to \\n\\nConfiguration\\nThis plugin uses Slack incoming-webhooks. Create a new webhook and copy the provided url.\\n\\nThe only required configuration settings are:\\n\\n: Slack incoming-webhook URL.\\n\\nSlack message example.\\nOn success.\\n\\nOn failure.\\n\\nContributors\\n\\nOriginal hbakkum/rundeck-hipchat-plugin author: Hayden Bakkum @hbakkum\\nOriginal bitplaces/rundeck-slack-plugin authors\\n\\n@totallyunknown\\n@notandy\\n@lusis\\n\\n\\n@sawanoboly","record_index":0,"objectID":"309-0","_snippetResult":{"post_title":{"value":"Slack Notification","matchLevel":"none"},"content":{"value":"Sends rundeck notification messages to a slack channel. This plugin is based on rundeck-slack-plugin(based on run-hipchat-plugin).\\nInstallation Instructions\\nSee the Included Plugins | Rundeck Documentation for …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Slack Notification","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Rundeck notification plugin for Slack Incoming-WebHook.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":308,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Powershell Network Drive Steps","post_excerpt":"

Rundeck workflow steps to map and unmap drives.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555632519,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/rundeckicon-1-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/powershell-network-drive-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Step"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Step"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/powershell-networkdrive-steps","binary_link":"","object_id":"","current_version":"1.0.0","last_release":"12/05/2018","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"powershell-network-drive-plugin","content":"Map and unmap Drive\\nWorkflow steps Powershell to map and unmap a drive on remote Windows Nodes.\\nLimitation\\nCurrently, On Powershell is not possible to maintain drives mapping on a remote session, ones the remote session is closed.\\nWorkaround\\nThe workaround for this plugin is mapping the drive using a Powershell\'s Schedule Job. This workaround needs that the Node-Executor calls the scheduled job, for example:\\n\\nA new Powershell Node-Executor plugin version will implement this code.\\nThe drive will be mapping for any step in the workflow until the  step is called.\\nFinally, this workaround works just for users that are part of the administrator group","record_index":0,"objectID":"308-0","_snippetResult":{"post_title":{"value":"Powershell Network Drive Steps","matchLevel":"none"},"content":{"value":"Map and unmap Drive\\nWorkflow steps Powershell to map and unmap a drive on remote Windows Nodes.\\nLimitation\\nCurrently, On Powershell is not possible to maintain drives mapping on a …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Powershell Network Drive Steps","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Rundeck workflow steps to map and unmap drives.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":307,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Aazure Storage Steps","post_excerpt":"

Provides a connection with Azure Storage to list/get/put Azure blobs and synchronize folders from a storage account.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555633961,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/azure-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-azure-storage-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Step"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Step"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/rundeck-azure-storage-plugin","binary_link":"","object_id":"1d56241b6d14","current_version":"1.0.0","last_release":"12/15/2018","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rundeck-azure-storage-plugin","content":"This python plugin provides a connection with Azure Storage to list/get/put Azure blobs and synchronize folders from a storage account.\\nInstall\\nBuild with  and copy the  to  folder\\nRequirements\\nThe plugin is written in python and requires  and  modules to be installed on the Rundeck server or remote nodes (depending where the Rundeck jobs will be executed)\\nThe modules can be installed with the following command:\\n\\nList commands\\nRemote commands (can run on remote nodes)\\n\\nAzure / Storage / Remote Copy: Copies a remote file or Azure Storage Object to another location or in Azure Storage. To reference an Azure container use the following URI pattern:  or \\nAzure / Storage / Remote Syncs: Syncs directories with Azure Storage. . To reference an Azure container use the following URI pattern:  or \\n\\nLocal commands (commands that only runs on the Rundeck server)\\n\\nAzure / Storage / List Blobs: List Azure Storage blobs and common prefixes under a prefix or all Azure Storage.\\nAzure / Storage / Remove Blobs: Deletes an Azure Storage blob from a container\\n\\nTroubleshooting\\nIf you get an authentication error on remote nodes, make sure that you add the following entry on in order to pass the RD_* variables from Rundeck server to the remote nodes:","record_index":0,"objectID":"307-0","_snippetResult":{"post_title":{"value":"Azure Storage Steps","matchLevel":"none"},"content":{"value":"This python plugin provides a connection with Azure Storage to list/get/put Azure blobs and synchronize folders from a storage account.\\nInstall\\nBuild with  and copy the  to  folder …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Azure Storage Steps","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Provides a connection with Azure Storage to list/get/put Azure blobs and synchronize folders from a storage account.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":306,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"Azure Plugins","post_excerpt":"

Resource Model plugin, an Execution Log Storage plugin, and others plugin steps like Create/Start/Stop Azure VMs.

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555633948,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/azure-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/rundeck-azure-plugins/","post_mime_type":"","taxonomies":{"plugin_type":["Resource"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Resource"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/rundeck-azure-plugin","binary_link":"","object_id":"","current_version":"1.0.3","last_release":"01/19/2018","installs":"","artifact_type":null,"plugin_author":"","auto_installable":false,"post_slug":"rundeck-azure-plugins","content":"Rundeck Azure Plugin\\nAzure Plugin integrates Rundeck with Azure Virtual Machines and Azure Storage. The plugin contains a Resource Model plugin, an Execution Log Storage plugin, and others plugin steps like Create/Start/Stop Azure VMs.\\nInstall\\nBuild with  and copy the  to  folder\\nResource Model Plugin\\nThe resource model plugin provides the Azure VMs as nodes on a Rundeck Server.\\nCredentials Settings\\nSettings related to the Azure connection\\n\\nClient ID: Azure Client ID.\\nTenant ID: Azure Tenant ID.\\nSubscription ID: Azure Subscription ID.\\nAzure Access Key: Azure Access Key.\\nCertificate Path: (Optional) Azure certificate file path (if the access key is not defined).\\nCertificate Password: (Optional) Azure certificate Password (if the access key is not defined).\\n\\nOther Settings:\\nMapping and filter settings\\n\\nMapping Params: Custom mapping settings. Property mapping definitions. Specify multiple mappings in the form \\"attributeName.selector=selector\\" or \\"attributeName.default=value\\", separated by \\";\\"\\nResource Group: Filter using resource group\\nOnly Running Instances: Filter for the \\"Running\\" instances. If false, all instances will be returned.\\n\\nMapping\\nMap the Azure VM properties to Rundeck Node definition\\nDefault Mapping\\n\\nAdding Tags from Azure VM Tags\\nYou can add Rundeck\'s node tags using Azure VM tags.\\nFor example, create an Azure VM tags like:\\n\\nRundeck-Tags=sometag1,sometag2\\n\\n and  will be added as tags on Rundeck nodes\\nAdding custom tags from Azure VM files\\nYou can add extra tags using the azure fields available (right column on the default mapping).\\nFor example, adding extra tags based on the VM resource group and status:\\n\\nAdding custom attribute based on Azure VM Tags\\nAlso, you can add extra nodes attributes using Azure VM tags.\\nFor example, creating the following tags on the Azure VM, you can map those tags to a rundeck node","record_index":0,"objectID":"306-0","_snippetResult":{"post_title":{"value":"Azure Plugins","matchLevel":"none"},"content":{"value":"Rundeck Azure Plugin\\nAzure Plugin integrates Rundeck with Azure Virtual Machines and Azure Storage. The plugin contains a Resource Model plugin, an Execution Log Storage plugin, and others plugin steps …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"Azure Plugins","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Resource Model plugin, an Execution Log Storage plugin, and others plugin steps like Create/Start/Stop Azure VMs.

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"","matchLevel":"none","matchedWords":[]}}},{"post_id":305,"post_type":"rundeck_plugin","post_type_label":"Rundeck Plugins","post_title":"HTTP Notification","post_excerpt":"

Rundeck notification plugin that makes HTTP requests

\\n","post_date":1555432083,"post_date_formatted":"April 16, 2019","post_modified":1555632404,"comment_count":0,"menu_order":0,"post_author":{"user_id":3,"display_name":"Jesse Marple","user_url":"","user_login":"jesse@rundeck.com"},"images":{"thumbnail":{"url":"http://rundeck.wpengine.com/wp-content/uploads/2019/04/rundeckicon-1-150x150.png","width":150,"height":150}},"permalink":"http://rundeck.wpengine.com/rundeck_plugin/http-notification-plugin/","post_mime_type":"","taxonomies":{"plugin_type":["Notification"],"plugin_support_type":["Rundeck Supported"]},"taxonomies_hierarchical":{"plugin_type":{"lvl0":["Notification"]},"plugin_support_type":{"lvl0":["Rundeck Supported"]}},"is_sticky":0,"organization":"Rundeck, Inc.","rundeck_compatibility":"","target_host_compatibility":"","source_link":"https://github.com/rundeck-plugins/http-notification","binary_link":"","object_id":"5c3a72ab196c","current_version":"1.0.5","last_release":"02/06/2018","installs":"","artifact_type":null,"plugin_author":"ahonor","auto_installable":true,"post_slug":"http-notification-plugin","content":"Http Notification\\nA notification plugin that makes HTTP requests\\nBuild\\nRun  to build the jar file\\nInstall\\nCopy the file http-notification-plugin-X.Y.X.jar file to the  folder","record_index":0,"objectID":"305-0","_snippetResult":{"post_title":{"value":"HTTP Notification","matchLevel":"none"},"content":{"value":"Http Notification\\nA notification plugin that makes HTTP requests\\nBuild\\nRun  to build the jar file\\nInstall\\nCopy the file http-notification-plugin-X.Y.X.jar file to the …","matchLevel":"none"}},"_highlightResult":{"post_title":{"value":"HTTP Notification","matchLevel":"none","matchedWords":[]},"post_excerpt":{"value":"

Rundeck notification plugin that makes HTTP requests

\\n","matchLevel":"none","matchedWords":[]},"organization":{"value":"Rundeck, Inc.","matchLevel":"none","matchedWords":[]},"plugin_author":{"value":"ahonor","matchLevel":"none","matchedWords":[]}}}],"nbHits":80,"page":0,"nbPages":4,"hitsPerPage":20,"processingTimeMS":5,"exhaustiveNbHits":false}' } diff --git a/repository-client/src/test/groovy/com/rundeck/repository/client/repository/RundeckHttpRepositoryTest.groovy b/repository-client/src/test/groovy/com/rundeck/repository/client/repository/RundeckHttpRepositoryTest.groovy index bcd7373..8d7154f 100644 --- a/repository-client/src/test/groovy/com/rundeck/repository/client/repository/RundeckHttpRepositoryTest.groovy +++ b/repository-client/src/test/groovy/com/rundeck/repository/client/repository/RundeckHttpRepositoryTest.groovy @@ -30,6 +30,7 @@ import org.bouncycastle.jce.provider.BouncyCastleProvider import spock.lang.Specification import java.security.Security +import java.util.concurrent.TimeUnit class RundeckHttpRepositoryTest extends Specification { @@ -49,7 +50,7 @@ class RundeckHttpRepositoryTest extends Specification { repoDef.repositoryName = "OSS" RundeckHttpRepository repo = new RundeckHttpRepository(repoDef) repo.rundeckRepositoryEndpoint = endpoint - repo.manifestService = new RundeckOfficialManifestService(endpoint) + repo.manifestService = new RundeckOfficialManifestService(endpoint, 1, TimeUnit.HOURS) def pubKey = repo.getRundeckPublicKey() RecordedRequest r = httpServer.takeRequest() def pubKeyFromCache = repo.getRundeckPublicKey()