diff --git a/.travis.yml b/.travis.yml index 6860d93..df71273 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ before_install: - sudo apt-get update -qq - sudo chsh --shell $(which bash) script: - - './gradlew clean build && DOCKER_COMPOSE_SPEC=docker-compose-vault.yaml bash run-docker-vault-tests.sh' + - './gradlew clean build && bash run-docker-vault-tests.sh' addons: hostname: rdbuild apt: diff --git a/build.gradle b/build.gradle index a16e51c..3958332 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id 'pl.allegro.tech.build.axion-release' version '1.7.1' } -ext.rundeckVersion='2.10.0' +ext.rundeckVersion='3.0.2-20180803' defaultTasks 'clean','build' apply plugin: 'java' apply plugin: 'idea' @@ -16,6 +16,7 @@ ext.rundeckPluginVersion= '1.2' ext.pluginClassNames='io.github.valfadeev.rundeck.plugin.vault.VaultStoragePlugin' scmVersion { + ignoreUncommittedChanges = false tag { prefix = '' versionSeparator = '' diff --git a/run-docker-vault-tests.sh b/run-docker-vault-tests.sh index a9bc9b8..2c56e22 100755 --- a/run-docker-vault-tests.sh +++ b/run-docker-vault-tests.sh @@ -15,7 +15,6 @@ rd_get_version(){ rd_get_plugin_version(){ local CUR_VERSION=$(grep plugin.version.number= `pwd`/version.properties | cut -d= -f 2) - echo "${CUR_VERSION}" } @@ -35,7 +34,7 @@ copy_jar(){ local FARGS=("$@") local DIR=${FARGS[0]} local -a VERS=( $( rd_get_plugin_version ) ) - local JAR=vault-storage-${VERS[0]}.jar + local JAR=$(basename "$PWD")-*.jar local buildJar=$PWD/build/libs/$JAR test -f $buildJar || die "Jar file not found $buildJar" mkdir -p $DIR @@ -45,26 +44,23 @@ copy_jar(){ run_tests(){ local FARGS=("$@") local DIR=${FARGS[0]} - local RUNDECK_VERSION=${FARGS[1]} cd $DIR - export RUNDECK_VERSION=$RUNDECK_VERSION bash $DIR/test-vault.sh bash $DIR/test-existing-vault.sh } run_docker_test(){ local FARGS=("$@") local DIR=${FARGS[0]} - local RUNDECK_VERSION=${FARGS[1]} local launcherJar=$( copy_jar $DIR ) || die "Failed to copy jar" - run_tests $DIR $RUNDECK_VERSION + echo "Testing: $launcherJar" + run_tests $DIR } main() { check_args - export RUNDECK_VERSION=( $( rd_get_version ) ) - run_docker_test $DOCKER_DIR $RUNDECK_VERSION + run_docker_test $DOCKER_DIR } main \ No newline at end of file diff --git a/src/main/java/io/github/valfadeev/rundeck/plugin/vault/KeyObject.java b/src/main/java/io/github/valfadeev/rundeck/plugin/vault/KeyObject.java index dc54b8f..0a24eef 100644 --- a/src/main/java/io/github/valfadeev/rundeck/plugin/vault/KeyObject.java +++ b/src/main/java/io/github/valfadeev/rundeck/plugin/vault/KeyObject.java @@ -21,7 +21,7 @@ public abstract class KeyObject { abstract Map saveResource(ResourceMeta content, String event, ByteArrayOutputStream baoStream); abstract ResourceBase loadResource(); - abstract boolean delete(Logical vault,String vaultPrefix); + abstract boolean delete(Logical vault,String vaultSecretBackend ,String vaultPrefix); //empty object or null object public KeyObject(Path path) { diff --git a/src/main/java/io/github/valfadeev/rundeck/plugin/vault/RundeckKey.java b/src/main/java/io/github/valfadeev/rundeck/plugin/vault/RundeckKey.java index eda8d10..e15821f 100644 --- a/src/main/java/io/github/valfadeev/rundeck/plugin/vault/RundeckKey.java +++ b/src/main/java/io/github/valfadeev/rundeck/plugin/vault/RundeckKey.java @@ -108,10 +108,10 @@ else if (type.equals(VaultStoragePlugin.PASSWORD_MIME_TYPE)) { } @Override - boolean delete(final Logical vault,String vaultPrefix) { + boolean delete(final Logical vault,String vaultSecretBackend, String vaultPrefix) { try { - vault.delete(VaultStoragePlugin.getVaultPath(path.getPath(),vaultPrefix)); + vault.delete(VaultStoragePlugin.getVaultPath(path.getPath(), vaultSecretBackend, vaultPrefix)); return true; } catch (VaultException e) { return false; diff --git a/src/main/java/io/github/valfadeev/rundeck/plugin/vault/VaultKey.java b/src/main/java/io/github/valfadeev/rundeck/plugin/vault/VaultKey.java index 1a4c676..395ac6c 100644 --- a/src/main/java/io/github/valfadeev/rundeck/plugin/vault/VaultKey.java +++ b/src/main/java/io/github/valfadeev/rundeck/plugin/vault/VaultKey.java @@ -161,7 +161,7 @@ ResourceBase loadResource(){ } @Override - boolean delete(final Logical vault,String vaultPrefix) { + boolean delete(final Logical vault,String vaultSecretBackend, String vaultPrefix) { String event="delete"; if(this.parent!=null){ @@ -171,7 +171,7 @@ boolean delete(final Logical vault,String vaultPrefix) { this.parent.getKeys().remove(key); try { - vault.write(VaultStoragePlugin.getVaultPath(this.parent.getPath().getPath(),vaultPrefix), this.parent.getKeys()); + vault.write(VaultStoragePlugin.getVaultPath(this.parent.getPath().getPath(),vaultSecretBackend, vaultPrefix), this.parent.getKeys()); return true; } catch (VaultException e) { throw new StorageException( @@ -183,7 +183,7 @@ boolean delete(final Logical vault,String vaultPrefix) { }else{ try { - vault.delete(VaultStoragePlugin.getVaultPath(path.getPath(),vaultPrefix)); + vault.delete(VaultStoragePlugin.getVaultPath(path.getPath(),vaultSecretBackend, vaultPrefix)); return true; } catch (VaultException e) { return false; diff --git a/src/main/java/io/github/valfadeev/rundeck/plugin/vault/VaultStoragePlugin.java b/src/main/java/io/github/valfadeev/rundeck/plugin/vault/VaultStoragePlugin.java index 57ed42d..8ddaf53 100644 --- a/src/main/java/io/github/valfadeev/rundeck/plugin/vault/VaultStoragePlugin.java +++ b/src/main/java/io/github/valfadeev/rundeck/plugin/vault/VaultStoragePlugin.java @@ -75,7 +75,7 @@ public void configure(Properties configuration) throws ConfigurationException { } } - public static String getVaultPath(String rawPath, String vaultPrefix) { + public static String getVaultPath(String rawPath, String vaultSecretBackend, String vaultPrefix) { return String.format("%s/%s/%s", vaultSecretBackend, vaultPrefix, rawPath); } @@ -86,7 +86,7 @@ private boolean isDir(String key) { private boolean isVaultDir(String key) { try{ - if(vault.list(getVaultPath(key,vaultPrefix)).size() > 0){ + if(vault.list(getVaultPath(key,vaultSecretBackend,vaultPrefix)).size() > 0){ return true; }else{ if(!rundeckObject) { @@ -140,7 +140,7 @@ private VaultResponse saveResource(Path path, ResourceMeta content, String event Map payload=object.saveResource(content,event,baoStream); try { - return vault.write(getVaultPath(object.getPath().getPath(),vaultPrefix), payload); + return vault.write(getVaultPath(object.getPath().getPath(),vaultSecretBackend,vaultPrefix), payload); } catch (VaultException e) { throw new StorageException( String.format("Encountered error while writing data to Vault %s", @@ -180,7 +180,7 @@ private Set> listResources(Path path, KeyType type) { List response; try { - response = vault.list(getVaultPath(path.getPath(),vaultPrefix)); + response = vault.list(getVaultPath(path.getPath(),vaultSecretBackend,vaultPrefix)); } catch (VaultException e) { throw StorageException.listException( path, @@ -252,7 +252,7 @@ private Set> listResources(Path path, KeyType type) { @Override public boolean hasPath(Path path) { try { - if(vault.list(getVaultPath(path.getPath(),vaultPrefix)).size() > 0){ + if(vault.list(getVaultPath(path.getPath(),vaultSecretBackend,vaultPrefix)).size() > 0){ return true; } @@ -292,7 +292,7 @@ public boolean hasResource(String path) { @Override public boolean hasDirectory(Path path) { try { - List list=vault.list(getVaultPath(path.getPath(),vaultPrefix)); + List list=vault.list(getVaultPath(path.getPath(),vaultSecretBackend,vaultPrefix)); if(list.size() > 0){ return list.size() > 0; @@ -372,7 +372,7 @@ public Set> listDirectorySubdirs(String path) { @Override public boolean deleteResource(Path path) { KeyObject object = this.getVaultObject(path); - return object.delete(vault,vaultPrefix); + return object.delete(vault,vaultSecretBackend,vaultPrefix); } @Override diff --git a/test/docker/docker-compose-existing-vault.yml b/test/docker/docker-compose-existing-vault.yml index 43808df..bd09b72 100644 --- a/test/docker/docker-compose-existing-vault.yml +++ b/test/docker/docker-compose-existing-vault.yml @@ -2,7 +2,6 @@ version: '2' services: vault: - #image: vault:0.9.6 build: dockers/vault ports: - "8200:8200" @@ -13,26 +12,26 @@ services: - VAULT_DEV_LISTEN_ADDRESS=vault:8200 - VAULT_ADDR=http://vault:8200 - VAULT_TOKEN=${VAULT_TOKEN} - #entrypoint: vault server -config=/vault/config -dev + rundeck1: hostname: rundeck1 - image: rdtest:latest - #build: - # context: dockers/rundeck + build: + context: dockers/rundeckvault/ links: - - vault + - vault environment: - - RUNDECK_NODE=rundeck1 - - RUNDECK_URL=http://rundeck1:4440 - - LAUNCHER_URL=${LAUNCHER_URL} - - SETUP_TEST_PROJECT=vaulttest - - VAULT_URL=http://vault:8200 - - VAULT_TOKEN=${VAULT_TOKEN} - - VAULT_BEHAVIOUR=vault - - CONFIG_SCRIPT_PRESTART=scripts/config_vault_plugin.sh + - RUNDECK_GRAILS_URL=http://rundeck1:4440 + - RUNDECK_NODE=rundeck1 + - SETUP_TEST_PROJECT=vaulttest + - RUNDECK_STORAGE_PROVIDER_1_TYPE=vault-storage + - RUNDECK_STORAGE_PROVIDER_1_PATH=keys + - RUNDECK_STORAGE_PROVIDER_1_CONFIG_PREFIX=rundeck + - RUNDECK_STORAGE_PROVIDER_1_CONFIG_ADDRESS=http://vault:8200 + - RUNDECK_STORAGE_PROVIDER_1_CONFIG_TOKEN=${VAULT_TOKEN} + - RUNDECK_STORAGE_PROVIDER_1_CONFIG_BEHAVIOUR=vault + - VAULT_TOKEN=${VAULT_TOKEN} ports: - - "2222:22" - - "4440:4440" + - "4440:4440" volumes: logs: resources: diff --git a/test/docker/docker-compose-vault.yml b/test/docker/docker-compose-vault.yml index 360cd5a..9f51c37 100644 --- a/test/docker/docker-compose-vault.yml +++ b/test/docker/docker-compose-vault.yml @@ -2,7 +2,6 @@ version: '2' services: vault: - #image: vault:0.9.6 build: dockers/vault ports: - "8200:8200" @@ -13,26 +12,24 @@ services: - VAULT_DEV_LISTEN_ADDRESS=vault:8200 - VAULT_ADDR=http://vault:8200 - VAULT_TOKEN=${VAULT_TOKEN} - #entrypoint: vault server -config=/vault/config -dev && run.sh rundeck1: hostname: rundeck1 - image: rdtest:latest - #build: - # context: dockers/rundeck + build: + context: dockers/rundeckvault/ links: - - vault + - vault environment: - - RUNDECK_NODE=rundeck1 - - RUNDECK_URL=http://rundeck1:4440 - - LAUNCHER_URL=${LAUNCHER_URL} - - SETUP_TEST_PROJECT=vaulttest - - VAULT_URL=http://vault:8200 - - VAULT_TOKEN=${VAULT_TOKEN} - - VAULT_BEHAVIOUR=rundeck - - CONFIG_SCRIPT_PRESTART=scripts/config_vault_plugin.sh + - RUNDECK_GRAILS_URL=http://rundeck1:4440 + - RUNDECK_NODE=rundeck1 + - SETUP_TEST_PROJECT=vaulttest + - RUNDECK_STORAGE_PROVIDER_1_TYPE=vault-storage + - RUNDECK_STORAGE_PROVIDER_1_PATH=keys + - RUNDECK_STORAGE_PROVIDER_1_CONFIG_PREFIX=rundeck + - RUNDECK_STORAGE_PROVIDER_1_CONFIG_ADDRESS=http://vault:8200 + - RUNDECK_STORAGE_PROVIDER_1_CONFIG_TOKEN=${VAULT_TOKEN} + - VAULT_TOKEN=${VAULT_TOKEN} ports: - - "2222:22" - - "4440:4440" + - "4440:4440" volumes: logs: resources: diff --git a/test/docker/dockers/rundeck/Dockerfile b/test/docker/dockers/rundeck/Dockerfile deleted file mode 100644 index d497965..0000000 --- a/test/docker/dockers/rundeck/Dockerfile +++ /dev/null @@ -1,104 +0,0 @@ -FROM ubuntu:16.04 - -## General package configuration -RUN apt-get -y update && \ - apt-get -y install \ - sudo \ - unzip \ - curl \ - xmlstarlet \ - git \ - netcat-traditional \ - software-properties-common \ - debconf-utils \ - uuid-runtime \ - ncurses-bin \ - iputils-ping \ - jq \ - zip \ - apt-transport-https \ - openjdk-8-jdk - -# add cli tool debian repo -ARG CLI_DEB_URL -ARG CLI_VERS -RUN echo "deb $CLI_DEB_URL /" | sudo tee -a /etc/apt/sources.list - -# add GPG key -#RUN curl "https://bintray.com/user/downloadSubjectPublicKey?username=rundeck" > /tmp/rundeck.gpg.key -#RUN apt-key add - < /tmp/rundeck.gpg.key -RUN curl "https://bintray.com/user/downloadSubjectPublicKey?username=bintray" > /tmp/bintray.gpg.key -RUN apt-key add - < /tmp/bintray.gpg.key - -# RUNDECK - -## RUNDECK setup env - -ENV USERNAME=rundeck \ - USER=rundeck \ - HOME=/home/rundeck \ - LOGNAME=$USERNAME \ - TERM=xterm-256color - -# RUNDECK - create user -RUN adduser --shell /bin/bash --home $HOME --gecos "" --disabled-password $USERNAME && \ - passwd -d $USERNAME && \ - addgroup $USERNAME sudo - -WORKDIR $HOME - -RUN mkdir -p $HOME/data -COPY data $HOME/data -VOLUME $HOME/data - -#Install Rundeck CLI tool -RUN test -f $HOME/data/rd.deb && dpkg -i $HOME/data/rd.deb || true -RUN test -f $HOME/data/rd.deb || apt-get -y update -RUN test -f $HOME/data/rd.deb || apt-get -y install rundeck-cli=$CLI_VERS - - -#download installer -ARG LAUNCHER_URL -ARG RUNDECK_NODE=rundeck1 -RUN echo "download rundeck launcher: ${LAUNCHER_URL}" -RUN test -f $HOME/data/rundeck-launcher.jar && \ - cp $HOME/data/rundeck-launcher.jar $HOME/rundeck-launcher.jar || \ - true -RUN test -f $HOME/rundeck-launcher.jar || curl -sS -f -L -o $HOME/rundeck-launcher.jar ${LAUNCHER_URL} - - -# RUNDECK - install -RUN chown -R $USERNAME:$USERNAME $HOME -WORKDIR $HOME -USER rundeck - -RUN java \ - -Dserver.http.port=4440 \ - -Dserver.hostname=$RUNDECK_NODE \ - -jar $HOME/rundeck-launcher.jar --installonly - -EXPOSE 22 4440 4443 4444 - -# Copy files. -#COPY config $HOME/config -RUN mkdir -p $HOME/scripts -COPY scripts $HOME/scripts -RUN sudo chmod -R a+x $HOME/scripts/* -RUN sudo chown -R rundeck:rundeck $HOME/scripts -RUN sudo mkdir -p /tests -COPY tests /tests -RUN sudo chmod -R a+x /tests/* - - -RUN mkdir -p $HOME/vault-tests -COPY tests $HOME/vault-tests -VOLUME $HOME/vault-tests - -COPY plugins $HOME/libext - -VOLUME /var/lib/docker -# VOLUME /test -VOLUME $HOME/resources - -# Start the instance. -CMD $HOME/scripts/run.sh \ No newline at end of file diff --git a/test/docker/dockers/rundeck/scripts/config_vault_plugin.sh b/test/docker/dockers/rundeck/scripts/config_vault_plugin.sh deleted file mode 100644 index c9c245a..0000000 --- a/test/docker/dockers/rundeck/scripts/config_vault_plugin.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash - - -echo "Writing vault plugin settings" - -cat - >>$RDECK_BASE/server/config/rundeck-config.properties <>$RDECK_BASE/server/config/rundeck-config.properties <&2 "FAIL: Reached max attempts to find see $FILE. Exiting." - return 1 - } - - sleep $SLEEP; # wait before trying again. - done -} - -for node in $WAIT_NODES ; do - echo "waiting for $node startup..." - wait_for $HOME/resources/$node.ready -done - -if [ -n "$SETUP_SSH_KEY" ] ; then - echo "Uploading private key to key storage" - test -f $HOME/resources/$REMOTE_NODE.rsa - - bash $HOME/scripts/upload_key_storage.sh $HOME/resources/$REMOTE_NODE.rsa $API_KEY id_rsa.pem -fi - -sudo chown -R $USERNAME:$USERNAME /tests - -export PATH=$PATH:$HOME/tools/bin -export RDECK_BASE=$HOME - -echo "starting tests" - -set +e -chmod -w $TEST_SCRIPT -chmod +x $TEST_SCRIPT -sync - -$TEST_SCRIPT \ - --rdeck-base $HOME \ - --rundeck-project $TEST_PROJECT \ - --rundeck-user $USERNAME \ - --test-dir $TEST_DIR -EC=$? - -echo "tests finished with $EC" - -touch $HOME/resources/tests.done - -exit $EC \ No newline at end of file diff --git a/test/docker/dockers/rundeck/scripts/start_rundeck.sh b/test/docker/dockers/rundeck/scripts/start_rundeck.sh deleted file mode 100644 index bc6148f..0000000 --- a/test/docker/dockers/rundeck/scripts/start_rundeck.sh +++ /dev/null @@ -1,292 +0,0 @@ -#!/bin/bash - -#exit on error -set -e - -#Fix folder permissions -sudo chown -R $USERNAME:$USERNAME $HOME; - - -start_rundeck(){ - - - # (start rundeck) - $HOME/server/sbin/rundeckd start - - echo "started rundeck" - - # Wait for server to start - SUCCESS_MSG="Started ServerConnector@" - MAX_ATTEMPTS=30 - SLEEP=10 - - echo "Waiting for $RUNDECK_NODE to start. This will take about 2 minutes... " - - declare -i count=0 - while (( count <= MAX_ATTEMPTS )) - do - if ! [ -f "$LOGFILE" ] - then echo "Waiting. hang on..."; # output a progress character. - elif ! grep "${SUCCESS_MSG}" "$LOGFILE" ; then - echo "Still working. hang on..."; # output a progress character. - else break; # found successful startup message. - fi - (( count += 1 )) ; # increment attempts counter. - (( count == MAX_ATTEMPTS )) && { - echo >&2 "FAIL: Reached max attempts to find success message in logfile. Exiting." - exit 1 - } - tail -n 5 "$LOGFILE" - $HOME/server/sbin/rundeckd status || { - echo >&2 "FAIL: rundeckd is not running. Exiting." - exit 1 - } - echo "." - sleep $SLEEP; # wait before trying again. - - done - echo "RUNDECK NODE $RUNDECK_NODE started successfully!!" - - -} - -# helper function - -run_helpers() { - local -r helper=$1 - local -a scripts=( ${@:2} ) - - for script in "${scripts[@]}" - do - [[ ! -f "$script" ]] && { - echo >&2 "WARN: $helper script not found. skipping: '$script'" - continue - } - echo "### applying $helper script: $script" - . "$script" - done -} - -setup_ssl(){ - local FARGS=("$@") - local DIR=${FARGS[0]} - TRUSTSTORE=$DIR/etc/truststore - KEYSTORE=$DIR/etc/keystore - if [ ! -f $TRUSTSTORE ]; then - echo "=>Generating ssl cert" - sudo -u rundeck keytool -keystore $KEYSTORE -alias $RUNDECK_NODE -genkey -keyalg RSA \ - -keypass adminadmin -storepass adminadmin -dname "cn=$RUNDECK_NODE, o=test, o=rundeck, o=org, c=US" && \ - cp $KEYSTORE $TRUSTSTORE - fi - -cat >> $HOME/etc/profile <$DIR/projects/$PROJ/etc/project.properties<>$DIR/projects/$PROJ/etc/project.properties< $FILE -} - -echo "######### start_rundeck on $RUNDECK_NODE ######### " -if test -f $HOME/resources/$RUNDECK_NODE.ready ; then - echo "Already started, skipping..." - exit 0 -fi - - -# Some Cleanup -rm -rfv $HOME/server/logs/* -rm -fv $HOME/testdata/* - - -export RDECK_BASE=$HOME -LOGFILE=$RDECK_BASE/var/log/service.log -mkdir -p $(dirname $LOGFILE) -FWKPROPS=$HOME/etc/framework.properties -mkdir -p $(dirname $FWKPROPS) -export RUNDECK_PORT=4440 -if [ -n "$SETUP_SSL" ] ; then - export RUNDECK_PORT=4443 - export RUNDECK_URL=https://$RUNDECK_NODE:$RUNDECK_PORT -fi - -# Configure general stuff. -# configure hostname, nodename, url - -# RUN TEST PRESTART SCRIPT -if [[ -n "$CONFIG_SCRIPT_PRESTART" ]] -then - config_scripts=( ${CONFIG_SCRIPT_PRESTART//,/ } ) - - run_helpers "prestart" "${config_scripts[@]}" -else - echo "### Prestart config not set. skipping..." -fi - -export API_KEY=letmein99 - -mkdir ~/.rd -cat > ~/.rd/rd.conf < $FWKPROPS < $HOME/etc/profile < $HOME/etc/tokens.properties < $HOME/etc/admin.aclpolicy <>$RDECK_BASE/server/config/rundeck-config.properties < /tmp/bintray.gpg.key +RUN apt-key add - < /tmp/bintray.gpg.key +RUN apt-get -y update +RUN apt-get -y install rundeck-cli + +# RUNDECK +## RUNDECK setup env + +ENV USERNAME=rundeck \ + USER=rundeck \ + HOME=/home/rundeck \ + LOGNAME=$USERNAME \ + TERM=xterm-256color + + +WORKDIR $HOME +USER rundeck + +COPY --chown=rundeck:rundeck remco /etc/remco + +# Copy files. +RUN sudo mkdir -p /tests +COPY tests /tests +RUN sudo chmod -R a+x /tests/* + +RUN mkdir -p $HOME/vault-tests +COPY tests $HOME/vault-tests +RUN sudo chown -R rundeck:rundeck $HOME/vault-tests +RUN sudo chmod -R a+x $HOME/vault-tests/* + +VOLUME $HOME/vault-tests + +COPY --chown=rundeck:rundeck ./plugins ./libext + + diff --git a/test/docker/dockers/rundeck/data/README.md b/test/docker/dockers/rundeckvault/plugins/README.md similarity index 100% rename from test/docker/dockers/rundeck/data/README.md rename to test/docker/dockers/rundeckvault/plugins/README.md diff --git a/test/docker/dockers/rundeckvault/remco/resources.d/rundeck-config-storage.properties.toml b/test/docker/dockers/rundeckvault/remco/resources.d/rundeck-config-storage.properties.toml new file mode 100644 index 0000000..de49130 --- /dev/null +++ b/test/docker/dockers/rundeckvault/remco/resources.d/rundeck-config-storage.properties.toml @@ -0,0 +1,4 @@ +[[template]] + src = "${REMCO_TEMPLATE_DIR}/rundeck-config-storage.properties" + dst = "${REMCO_TMP_DIR}/rundeck-config/rundeck-config-storage.properties" + mode = "0644" \ No newline at end of file diff --git a/test/docker/dockers/rundeckvault/remco/templates/rundeck-config-storage.properties b/test/docker/dockers/rundeckvault/remco/templates/rundeck-config-storage.properties new file mode 100644 index 0000000..e00b1c7 --- /dev/null +++ b/test/docker/dockers/rundeckvault/remco/templates/rundeck-config-storage.properties @@ -0,0 +1,25 @@ +{% set providerBase = "/rundeck/storage/provider" %} + +{% macro storage_provider(provider) %} +{%- set index = provider | base %} +rundeck.storage.provider.{{index}}.type={% set type = printf("%s/type", provider) %}{{ getv(type, "db")}} +rundeck.storage.provider.{{index}}.path={% set path = printf("%s/path", provider) %}{{ getv(path, "keys")}} +rundeck.storage.provider.{{index}}.config.prefix={% set prefix = printf("%s/config/prefix", provider) %}{{ getv(prefix, "")}} +rundeck.storage.provider.{{index}}.config.address={% set address = printf("%s/config/address", provider) %}{{ getv(address, "")}} +rundeck.storage.provider.{{index}}.config.token={% set token = printf("%s/config/token", provider) %}{{ getv(token, "")}} +rundeck.storage.provider.{{index}}.config.storageBehaviour={% set behaviour = printf("%s/config/behaviour", provider) %}{{ getv(behaviour, "rundeck")}} + +rundeck.storage.provider.{{index}}.config.maxRetries={% set maxRetries = printf("%s/config/maxRetries", provider) %}{{ getv(maxRetries, "3")}} +rundeck.storage.provider.{{index}}.config.retryIntervalMilliseconds={% set retryInterval = printf("%s/config/retryInterval", provider) %}{{ getv(retryInterval, "100")}} +rundeck.storage.provider.{{index}}.config.openTimeout={% set openTimeout = printf("%s/config/openTimeout", provider) %}{{ getv(openTimeout, "3")}} +rundeck.storage.provider.{{index}}.config.readTimeout={% set readTimeout = printf("%s/config/readTimeout", provider) %}{{ getv(readTimeout, "5")}} + +{% endmacro %} + + +{% for p in lsdir(providerBase) -%} +{% set provider = printf("%s/%s", providerBase, p) -%} +{{ storage_provider(provider) }} +{%- endfor %} + + diff --git a/test/docker/dockers/rundeck/tests/existing-vault/existing-vault-keys-test.sh b/test/docker/dockers/rundeckvault/tests/existing-vault/existing-vault-keys-test.sh similarity index 100% rename from test/docker/dockers/rundeck/tests/existing-vault/existing-vault-keys-test.sh rename to test/docker/dockers/rundeckvault/tests/existing-vault/existing-vault-keys-test.sh diff --git a/test/docker/dockers/rundeck/tests/existing-vault/test-job-multiples-keys.xml b/test/docker/dockers/rundeckvault/tests/existing-vault/test-job-multiples-keys.xml similarity index 100% rename from test/docker/dockers/rundeck/tests/existing-vault/test-job-multiples-keys.xml rename to test/docker/dockers/rundeckvault/tests/existing-vault/test-job-multiples-keys.xml diff --git a/test/docker/dockers/rundeck/tests/existing-vault/test-job.xml b/test/docker/dockers/rundeckvault/tests/existing-vault/test-job.xml similarity index 100% rename from test/docker/dockers/rundeck/tests/existing-vault/test-job.xml rename to test/docker/dockers/rundeckvault/tests/existing-vault/test-job.xml diff --git a/test/docker/dockers/rundeck/tests/roundup b/test/docker/dockers/rundeckvault/tests/roundup similarity index 100% rename from test/docker/dockers/rundeck/tests/roundup rename to test/docker/dockers/rundeckvault/tests/roundup diff --git a/test/docker/dockers/rundeck/tests/run-tests.sh b/test/docker/dockers/rundeckvault/tests/run-tests.sh similarity index 100% rename from test/docker/dockers/rundeck/tests/run-tests.sh rename to test/docker/dockers/rundeckvault/tests/run-tests.sh diff --git a/test/docker/dockers/rundeckvault/tests/run.sh b/test/docker/dockers/rundeckvault/tests/run.sh new file mode 100644 index 0000000..9cd05df --- /dev/null +++ b/test/docker/dockers/rundeckvault/tests/run.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +set -e + +TEST_DIR=$1 +TEST_SCRIPT=${2:-/tests/run-tests.sh} +TEST_PROJECT=${3:-testproj1} + +: ${TEST_DIR?"Dir required"} +: ${TEST_SCRIPT?"Script required"} +: ${TEST_PROJECT?"Project required"} + + + +echo "run_tests with $TEST_DIR and $TEST_SCRIPT for project $TEST_PROJECT" + +# define env vars used by rd tool +export RD_USER=admin +export RD_PASSWORD=admin +export RD_URL="http://$RUNDECK_NODE:4440" +export RD_COLOR=0 +export RD_OPTS="-Dfile.encoding=utf-8" +export RD_HTTP_TIMEOUT=45 + +echo "starting tests" + +#creating project +rd projects create -p $TEST_PROJECT + +set +e +chmod -w "$TEST_SCRIPT" +chmod +x "$TEST_SCRIPT" +sync + +$TEST_SCRIPT \ + --rdeck-base "$HOME" \ + --rundeck-project "$TEST_PROJECT" \ + --rundeck-user "$USERNAME" \ + --test-dir "$TEST_DIR" +EC=$? + +echo "tests finished with $EC" + + +exit $EC \ No newline at end of file diff --git a/test/docker/dockers/rundeck/tests/vault/key_storage-test.sh b/test/docker/dockers/rundeckvault/tests/vault/key_storage-test.sh similarity index 100% rename from test/docker/dockers/rundeck/tests/vault/key_storage-test.sh rename to test/docker/dockers/rundeckvault/tests/vault/key_storage-test.sh diff --git a/test/docker/dockers/rundeck/tests/vault/test-job.xml b/test/docker/dockers/rundeckvault/tests/vault/test-job.xml similarity index 100% rename from test/docker/dockers/rundeck/tests/vault/test-job.xml rename to test/docker/dockers/rundeckvault/tests/vault/test-job.xml diff --git a/test/docker/test-existing-vault.sh b/test/docker/test-existing-vault.sh index 9742779..f6560d9 100755 --- a/test/docker/test-existing-vault.sh +++ b/test/docker/test-existing-vault.sh @@ -2,31 +2,18 @@ set -eu -. common.sh - export DOCKER_COMPOSE_SPEC=docker-compose-existing-vault.yml export TEST_DIR=/home/rundeck/vault-tests/existing-vault export TEST_SCRIPT=/home/rundeck/vault-tests/run-tests.sh export VAULT_TOKEN=thisisatoken123. -if [ -f rundeck-launcher.jar ] ; then - mv rundeck-launcher.jar dockers/rundeck/data/ -fi - -if [ -f rd.deb ] ; then - mv rd.deb dockers/rundeck/data/ -fi - - -build_rdtest_docker - # clean up docker env docker-compose -f $DOCKER_COMPOSE_SPEC down --volumes --remove-orphans set -e # re-build docker env -docker-compose -f $DOCKER_COMPOSE_SPEC build --build-arg LAUNCHER_URL=$LAUNCHER_URL rundeck1 +docker-compose -f $DOCKER_COMPOSE_SPEC build rundeck1 # run docker @@ -43,7 +30,7 @@ echo $TEST_DIR echo $TEST_SCRIPT docker-compose -f $DOCKER_COMPOSE_SPEC exec -T --user rundeck rundeck1 bash \ - scripts/run_tests.sh $TEST_DIR $TEST_SCRIPT vaulttest + vault-tests/run.sh $TEST_DIR $TEST_SCRIPT vaulttest EC=$? echo "run_tests.sh finished with: $EC" @@ -51,6 +38,6 @@ echo "run_tests.sh finished with: $EC" docker-compose -f $DOCKER_COMPOSE_SPEC logs # Stop and clean all -#docker-compose -f $DOCKER_COMPOSE_SPEC down --volumes --remove-orphans +docker-compose -f $DOCKER_COMPOSE_SPEC down --volumes --remove-orphans exit $EC \ No newline at end of file diff --git a/test/docker/test-vault.sh b/test/docker/test-vault.sh index bd8c3f4..470c585 100755 --- a/test/docker/test-vault.sh +++ b/test/docker/test-vault.sh @@ -1,22 +1,10 @@ #!/bin/bash -. common.sh - export DOCKER_COMPOSE_SPEC=docker-compose-vault.yml export TEST_DIR=/home/rundeck/vault-tests/vault export TEST_SCRIPT=/home/rundeck/vault-tests/run-tests.sh export VAULT_TOKEN=thisisatoken123. -if [ -f rundeck-launcher.jar ] ; then - mv rundeck-launcher.jar dockers/rundeck/data/ -fi - -if [ -f rd.deb ] ; then - mv rd.deb dockers/rundeck/data/ -fi - - -build_rdtest_docker # clean up docker env docker-compose -f $DOCKER_COMPOSE_SPEC down --volumes --remove-orphans @@ -24,7 +12,7 @@ docker-compose -f $DOCKER_COMPOSE_SPEC down --volumes --remove-orphans set -e # re-build docker env -docker-compose -f $DOCKER_COMPOSE_SPEC build --build-arg LAUNCHER_URL=$LAUNCHER_URL rundeck1 +docker-compose -f $DOCKER_COMPOSE_SPEC build rundeck1 # run docker @@ -43,7 +31,7 @@ echo $TEST_DIR echo $TEST_SCRIPT docker-compose -f $DOCKER_COMPOSE_SPEC exec -T --user rundeck rundeck1 bash \ - scripts/run_tests.sh $TEST_DIR $TEST_SCRIPT vaulttest + vault-tests/run.sh $TEST_DIR $TEST_SCRIPT vaulttest EC=$? echo "run_tests.sh finished with: $EC" diff --git a/version.properties b/version.properties index f8f8339..bc9e9e6 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1 @@ plugin.version.number=1.0.2-SNAPSHOT -rundeck.version.number=2.11.5