From 52151ef9fde824747c65ac73c881f49624fc7b51 Mon Sep 17 00:00:00 2001 From: Sirisha Gopigiri Date: Fri, 4 Sep 2020 12:40:13 +0530 Subject: [PATCH] Zuul gate to check rotate-sa-token and certificate expiry commands This Patch Set uses docker zuul gate and checks the certificate expiration and certiticate rotate-sa-token commands Change-Id: I76f902d4fcacdbfe168abd58ec707282e46a3f91 --- .../provider_common/03_install_pip.sh | 15 ++ .../provider_common/04_install_yq.sh | 15 ++ .../41_check_certificate_expiration.sh | 133 ++++++++++++++++++ .../provider_common/42_rotate_sa_token.sh | 67 +++++++++ zuul.d/jobs.yaml | 4 + 5 files changed, 234 insertions(+) create mode 100755 tools/deployment/provider_common/03_install_pip.sh create mode 100755 tools/deployment/provider_common/04_install_yq.sh create mode 100755 tools/deployment/provider_common/41_check_certificate_expiration.sh create mode 100755 tools/deployment/provider_common/42_rotate_sa_token.sh diff --git a/tools/deployment/provider_common/03_install_pip.sh b/tools/deployment/provider_common/03_install_pip.sh new file mode 100755 index 000000000..189ef2e76 --- /dev/null +++ b/tools/deployment/provider_common/03_install_pip.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +set -ex + +sudo apt-get install python3-pip -y diff --git a/tools/deployment/provider_common/04_install_yq.sh b/tools/deployment/provider_common/04_install_yq.sh new file mode 100755 index 000000000..3a613b26e --- /dev/null +++ b/tools/deployment/provider_common/04_install_yq.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +set -ex + +sudo pip3 install yq diff --git a/tools/deployment/provider_common/41_check_certificate_expiration.sh b/tools/deployment/provider_common/41_check_certificate_expiration.sh new file mode 100755 index 000000000..02d669a62 --- /dev/null +++ b/tools/deployment/provider_common/41_check_certificate_expiration.sh @@ -0,0 +1,133 @@ +#!/usr/bin/env bash + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -xe + +export KUBECONFIG=${KUBECONFIG:-"$HOME/.airship/kubeconfig"} +export TARGET_CLUSTER_NAME=${TARGET_CLUSTER_NAME:-"target-cluster"} +export KUBECONFIG_TARGET_CONTEXT=${KUBECONFIG_TARGET_CONTEXT:-"target-cluster"} + +check_nodecerts(){ + nodecerts="" + if $2; then + nodecerts=$(airshipctl --kubeconfig "/tmp/${TARGET_CLUSTER_NAME}.kubeconfig" cluster check-certificate-expiration --threshold $1 -o json | jq .nodeCerts) + else + nodecerts=$(airshipctl --kubeconfig ${KUBECONFIG} cluster check-certificate-expiration --threshold $1 -o json | jq .nodeCerts) + fi + nodecert=$(echo $nodecerts | jq '. | length') + if [ -z $nodecert ]; then + echo "Unable to verify node certificate expiration. Exiting!" + exit 1 + else + verify=false + for ((i=0;i