From 8abd214b53bb4b2128bda1caea626436d3846306 Mon Sep 17 00:00:00 2001 From: Jeroen van Erp Date: Tue, 17 Sep 2024 08:50:32 -0600 Subject: [PATCH 1/3] Observability related functions (#13) * Initial Observability scripts Signed-off-by: Jeroen van Erp * Added comments and use vars Signed-off-by: Jeroen van Erp * Return instead of global vars Signed-off-by: Jeroen van Erp * Fix return vs echo Signed-off-by: Jeroen van Erp * Try to fix escapes Signed-off-by: Jeroen van Erp * Appease the lords of Bash linting Signed-off-by: Jeroen van Erp * Incorporate review comments Signed-off-by: Jeroen van Erp --------- Signed-off-by: Jeroen van Erp --- scripts/authentication/keycloak.sh | 103 +++++++++++++++++++++++++++++ scripts/observability/api_key.sh | 49 ++++++++++++++ scripts/observability/cli.sh | 12 ++++ scripts/observability/stackpack.sh | 46 +++++++++++++ scripts/observability/stql.sh | 61 +++++++++++++++++ 5 files changed, 271 insertions(+) create mode 100644 scripts/authentication/keycloak.sh create mode 100644 scripts/observability/api_key.sh create mode 100644 scripts/observability/cli.sh create mode 100644 scripts/observability/stackpack.sh create mode 100644 scripts/observability/stql.sh diff --git a/scripts/authentication/keycloak.sh b/scripts/authentication/keycloak.sh new file mode 100644 index 0000000..3cd31c9 --- /dev/null +++ b/scripts/authentication/keycloak.sh @@ -0,0 +1,103 @@ +#!/bin/bash + +####################################### +# Login to Keycloak and get an access token +# Globals: +# SSO_ACCESS_TOKEN +# Arguments: +# kc_url (Keycloak) +# kc_realm (Keycloak) +# kc_client_id (Keycloak) +# kc_client_secret (Keycloak) +# kc_username (Keycloak) +# kc_password (Keycloak) +# Examples: +# keycloak_login https://sso.suse.com instruqt suse xxxxxx admin password +####################################### +keycloak_login() { + local kc_url=$1 + local kc_realm=$2 + local kc_client_id=$3 + local kc_client_secret=$4 + local kc_username=$5 + local kc_password=$6 + + local response + response=$(curl -s -X POST "$kc_url/realms/$kc_realm/protocol/openid-connect/token" \ + -H 'Content-Type: application/x-www-form-urlencoded' \ + --data-urlencode "client_id=$kc_client_id" \ + --data-urlencode "client_secret=$kc_client_secret" \ + --data-urlencode "username=$kc_username" \ + --data-urlencode "password=$kc_password" \ + --data-urlencode 'grant_type=password') + + echo $response | jq -r .access_token +} + +####################################### +# Create a user in Keycloak +# Arguments: +# kc_url (Keycloak) +# kc_realm (Keycloak) +# kc_access_token (Keycloak) +# username +# password +# Examples: +# keycloak_create_user https://sso.suse.com instruqt $SSO_ACCESS_TOKEN user password group +####################################### +keycloak_create_user() { + local kc_url=$1 + local kc_realm=$2 + local kc_access_token=$3 + local username=$4 + local password=$5 + local group=$6 + + local user_request + user_request=$(cat <>> Ingestion API key for cluster '${cluster_name}' deleted" + else + echo ">>> Ingestion API key for cluster '${cluster_name}' not found" + fi +} diff --git a/scripts/observability/cli.sh b/scripts/observability/cli.sh new file mode 100644 index 0000000..401900d --- /dev/null +++ b/scripts/observability/cli.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +####################################### +# Install the SUSE Observability CLI +####################################### +observability_install_cli() { + if [ -x "$(command -v sts)" ]; then + curl -o- https://dl.stackstate.com/stackstate-cli/install.sh | STS_CLI_LOCATION=/usr/local/bin bash + else + echo ">>> sts CLI already installed" + fi +} diff --git a/scripts/observability/stackpack.sh b/scripts/observability/stackpack.sh new file mode 100644 index 0000000..e13a6ca --- /dev/null +++ b/scripts/observability/stackpack.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +####################################### +# Delete a StackPack instance from SUSE Observability +# Arguments: +# url (SUSE Observability) +# service_token (SUSE Observability) +# cluster_name +# Examples: +# observability_delete_stackpack https://obs.suse.com/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx demo +####################################### +observability_delete_stackpack() { + local url=$1 + local service_token=$2 + local cluster_name=$3 + + if observability_check_stackpack $url $service_token $cluster_name; then + /usr/local/bin/sts stackpack uninstall --id $stackpack_id --url $url --service-token $service_token --name kubernetes-v2 + echo ">>> StackPack for cluster '${cluster_name}' deleted" + else + echo ">>> StackPack for cluster '${cluster_name}' not found" + fi +} + +####################################### +# Check if a StackPack instance exists in SUSE Observability +# Arguments: +# url (SUSE Observability) +# service_token (SUSE Observability) +# cluster_name +# Returns: +# `true` if the StackPack instance exists, `false` otherwise +# Examples: +# observability_check_stackpack https://obs.suse.com/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx demo +####################################### +observability_check_stackpack() { + local url=$1 + local service_token=$2 + local cluster_name=$3 + + local stackpacks stackpack_id + stackpacks=$(/usr/local/bin/sts stackpack list-instances --name kubernetes-v2 -o json --url $url --service-token $service_token) + stackpack_id=$(echo $stackpacks | jq -r '.instances[] | select(.config.kubernetes_cluster_name == "'$cluster_name'") | .id') + [[ -n "$stackpack_id" ]] + return +} diff --git a/scripts/observability/stql.sh b/scripts/observability/stql.sh new file mode 100644 index 0000000..bc0046d --- /dev/null +++ b/scripts/observability/stql.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +####################################### +# Get the state of a component in SUSE Observability +# Arguments: +# url (SUSE Observability) +# service_token (SUSE Observability) +# stql +# Output: +# "CRITICAL", "DEVIATING", "UNKNOWN" or "CLEAR" +# Examples: +# observability_get_component_state https://obs.suse.com/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx "lobel = \"cluster-name:$DOWNSTREAM_CLUSTER_NAME\" AND ..." +####################################### +observability_get_component_state() { + local url=$1 + local service_token=$2 + local stql=$3 + + local component + component=$(observability_get_component_snapshot $url $service_token "$stql") + echo $component | jq -r '.viewSnapshotResponse.components[0].state.healthState' +} + +####################################### +# Query the snapshot of a component in SUSE Observability +# Arguments: +# url (SUSE Observability) +# service_token (SUSE Observability) +# stql +# Output: +# JSON viewSnapshotResponse +# Examples: +# observability_get_component_snapshot https://obs.suse.com/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx "lobel = \"cluster-name:$DOWNSTREAM_CLUSTER_NAME\" AND ..." +####################################### +observability_get_component_snapshot() { + local url=$1 + local service_token=$2 + local stql=$3 + + local req + req=$(cat < Date: Wed, 18 Sep 2024 14:06:48 +0200 Subject: [PATCH 2/3] 2 Small fixes for the observability scripts (#14) * Fix negation of cli check Signed-off-by: Jeroen van Erp * Fix deletion of stackpack Signed-off-by: Jeroen van Erp --------- Signed-off-by: Jeroen van Erp --- scripts/observability/cli.sh | 2 +- scripts/observability/stackpack.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/observability/cli.sh b/scripts/observability/cli.sh index 401900d..40c2030 100644 --- a/scripts/observability/cli.sh +++ b/scripts/observability/cli.sh @@ -4,7 +4,7 @@ # Install the SUSE Observability CLI ####################################### observability_install_cli() { - if [ -x "$(command -v sts)" ]; then + if ! [ -x "$(command -v sts)" ]; then curl -o- https://dl.stackstate.com/stackstate-cli/install.sh | STS_CLI_LOCATION=/usr/local/bin bash else echo ">>> sts CLI already installed" diff --git a/scripts/observability/stackpack.sh b/scripts/observability/stackpack.sh index e13a6ca..24816b1 100644 --- a/scripts/observability/stackpack.sh +++ b/scripts/observability/stackpack.sh @@ -14,7 +14,10 @@ observability_delete_stackpack() { local service_token=$2 local cluster_name=$3 - if observability_check_stackpack $url $service_token $cluster_name; then + local stackpacks stackpack_id + stackpacks=$(/usr/local/bin/sts stackpack list-instances --name kubernetes-v2 -o json --url $url --service-token $service_token) + stackpack_id=$(echo $stackpacks | jq -r '.instances[] | select(.config.kubernetes_cluster_name == "'$cluster_name'") | .id') + if [ -n "$stackpack_id" ]; then /usr/local/bin/sts stackpack uninstall --id $stackpack_id --url $url --service-token $service_token --name kubernetes-v2 echo ">>> StackPack for cluster '${cluster_name}' deleted" else From dbb236f588eb336a8389a20b116f38af0ac9d598 Mon Sep 17 00:00:00 2001 From: Bertrand THOMAS Date: Fri, 20 Sep 2024 11:27:15 +0200 Subject: [PATCH 3/3] Add NFS Server Provisioner Helm chart & upgrade WordPress from upstream (#15) * Add nfs-server-provisioner Helm chart * Add recent functions in README & fix file name * Fix typo in WordPress word * Upgrade WordPress chart to latest from upstream * Add upstream Helm repo * Rename scripts following convention --- .github/workflows/ci.yml | 1 + .github/workflows/pkg.yml | 1 + charts/README.md | 5 +- charts/nfs-server-provisioner/Chart.lock | 6 +++ charts/nfs-server-provisioner/Chart.yaml | 14 ++++++ charts/nfs-server-provisioner/README.md | 46 +++++++++++++++++++ charts/nfs-server-provisioner/values.yaml | 7 +++ charts/wordpress/Chart.lock | 6 +-- charts/wordpress/Chart.yaml | 6 +-- charts/wordpress/README.md | 2 +- scripts/README.md | 44 +++++++++++------- ...ster-lifecycle.sh => cluster_lifecycle.sh} | 0 ...anagement.sh => certificate_management.sh} | 0 .../{cluster-status.sh => cluster_status.sh} | 0 ...{cluster-actions.sh => cluster_actions.sh} | 0 ...ager-lifecycle.sh => manager_lifecycle.sh} | 0 ...anager-settings.sh => manager_settings.sh} | 0 .../{user-actions.sh => user_actions.sh} | 0 18 files changed, 112 insertions(+), 26 deletions(-) create mode 100644 charts/nfs-server-provisioner/Chart.lock create mode 100644 charts/nfs-server-provisioner/Chart.yaml create mode 100644 charts/nfs-server-provisioner/README.md create mode 100644 charts/nfs-server-provisioner/values.yaml rename scripts/k3s/{cluster-lifecycle.sh => cluster_lifecycle.sh} (100%) rename scripts/kubernetes/{certificate-management.sh => certificate_management.sh} (100%) rename scripts/kubernetes/{cluster-status.sh => cluster_status.sh} (100%) rename scripts/rancher/{cluster-actions.sh => cluster_actions.sh} (100%) rename scripts/rancher/{manager-lifecycle.sh => manager_lifecycle.sh} (100%) rename scripts/rancher/{manager-settings.sh => manager_settings.sh} (100%) rename scripts/rancher/{user-actions.sh => user_actions.sh} (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53553aa..22595ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,6 +63,7 @@ jobs: - name: Add dependency Helm chart repositories run: | helm repo add bitnami https://charts.bitnami.com/bitnami + helm repo add nfs-ganesha-server-and-external-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/ helm repo update - name: Install Python uses: actions/setup-python@v5 diff --git a/.github/workflows/pkg.yml b/.github/workflows/pkg.yml index 670ab0d..8afe998 100644 --- a/.github/workflows/pkg.yml +++ b/.github/workflows/pkg.yml @@ -48,6 +48,7 @@ jobs: - name: Add dependency Helm chart repositories run: | helm repo add bitnami https://charts.bitnami.com/bitnami + helm repo add nfs-ganesha-server-and-external-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/ helm repo update - name: Host charts repository on GitHub Pages uses: helm/chart-releaser-action@v1.6.0 diff --git a/charts/README.md b/charts/README.md index d3e8ca9..e2ad1d7 100644 --- a/charts/README.md +++ b/charts/README.md @@ -6,6 +6,7 @@ * [Game 2048](game-2048/README.md) * [Let's Encrypt](letsencrypt/README.md) * [NFS-Ganesha](nfs-ganesha/README.md) +* [NFS Server Provisioner](nfs-server-provisioner/README.md) * [Rancher Cluster Template](rancher-cluster-templates/README.md) * [WordPress](wordpress/README.md) @@ -22,6 +23,6 @@ helm template . -f values.yaml -f values_mine.yaml --namespace dem # installs a chart from local source helm upgrade --install . -f values.yaml \ -# --debug > output.yaml \ ---create-namespace --namespace nfs-ganesha + # --debug > output.yaml \ + --create-namespace --namespace nfs-ganesha ``` diff --git a/charts/nfs-server-provisioner/Chart.lock b/charts/nfs-server-provisioner/Chart.lock new file mode 100644 index 0000000..9c1f219 --- /dev/null +++ b/charts/nfs-server-provisioner/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: nfs-server-provisioner + repository: https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/ + version: 1.8.0 +digest: sha256:17d02ec93947c92806da70bda22b675ce7001873b0a68cb908b9714256704503 +generated: "2024-09-19T16:06:10.718178856+02:00" diff --git a/charts/nfs-server-provisioner/Chart.yaml b/charts/nfs-server-provisioner/Chart.yaml new file mode 100644 index 0000000..74fbf94 --- /dev/null +++ b/charts/nfs-server-provisioner/Chart.yaml @@ -0,0 +1,14 @@ +apiVersion: v2 +name: nfs-server-provisioner +description: Helm chart for managing WordPress +type: application +version: 0.1.0 +appVersion: "4.0.8" +dependencies: + - name: nfs-server-provisioner + version: 1.8.0 + repository: https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/ +home: https://github.com/SUSE/lab-setup/tree/main/charts/nfs-server-provisioner +maintainers: + - name: devpro + email: bertrand.thomas@suse.com diff --git a/charts/nfs-server-provisioner/README.md b/charts/nfs-server-provisioner/README.md new file mode 100644 index 0000000..3817463 --- /dev/null +++ b/charts/nfs-server-provisioner/README.md @@ -0,0 +1,46 @@ +# NFS server provisioner + +This Helm chart will install [NFS Server Provisioner](https://github.com/kubernetes-sigs/nfs-ganesha-server-and-external-provisioner) in a Kubernetes cluster. + +## Quick start + +Install the application with the default settings: + +```bash +# adds the repo +helm repo add suse-lab-setup https://opensource.suse.com/lab-setup +helm repo update + +# installs the chart +helm upgrade --install nfs-server-provisioner suse-lab-setup/nfs-server-provisioner --namespace nfs-provisioner --create-namespace +``` + +Look at [values.yaml](values.yaml) for the configuration. + +Clean-up: + +```bash +helm delete nfs-server-provisioner +kubectl delete ns nfs-provisioner +``` + +## Upstream version update + +- Look for the available versions: + +```bash +# adds bitnami helm chart repository +helm repo add nfs-ganesha-server-and-external-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/ +helm repo update + +# lists available charts +helm search repo nfs-server-provisioner +``` + +- Update [Chart.yaml](Chart.yaml) + +- Update Chart.lock file: + +```bash +helm dependency update +``` diff --git a/charts/nfs-server-provisioner/values.yaml b/charts/nfs-server-provisioner/values.yaml new file mode 100644 index 0000000..8c19719 --- /dev/null +++ b/charts/nfs-server-provisioner/values.yaml @@ -0,0 +1,7 @@ +# refers to https://github.com/kubernetes-sigs/nfs-ganesha-server-and-external-provisioner/blob/master/charts/nfs-server-provisioner/values.yaml +nfs-server-provisioner: + storageClass: + defaultClass: true + mountOptions: + - vers=3 + - nolock diff --git a/charts/wordpress/Chart.lock b/charts/wordpress/Chart.lock index 2ad15f3..0c6e1eb 100644 --- a/charts/wordpress/Chart.lock +++ b/charts/wordpress/Chart.lock @@ -1,6 +1,6 @@ dependencies: - name: wordpress repository: https://charts.bitnami.com/bitnami - version: 19.2.5 -digest: sha256:9ecd8b6020982dfb58440e219ed45aadb2856be4c8719b94b364f85fc079e557 -generated: "2024-09-04T14:30:06.1580989+02:00" + version: 23.1.15 +digest: sha256:75e86638c376cf1a29ffe65dd2d723e30201f21964d90b39d35a73f40c3f3e7e +generated: "2024-09-19T16:23:42.643837319+02:00" diff --git a/charts/wordpress/Chart.yaml b/charts/wordpress/Chart.yaml index 70cdc9c..94abb20 100644 --- a/charts/wordpress/Chart.yaml +++ b/charts/wordpress/Chart.yaml @@ -2,11 +2,11 @@ apiVersion: v2 name: wordpress description: Helm chart for managing WordPress type: application -version: 0.1.1 -appVersion: "6.4.3" +version: 0.1.2 +appVersion: "6.6.2" dependencies: - name: wordpress - version: 19.2.5 + version: 23.1.15 repository: https://charts.bitnami.com/bitnami home: https://github.com/SUSE/lab-setup/tree/main/charts/wordpress maintainers: diff --git a/charts/wordpress/README.md b/charts/wordpress/README.md index 2336abf..7ffbcab 100644 --- a/charts/wordpress/README.md +++ b/charts/wordpress/README.md @@ -36,7 +36,7 @@ wordpress: global: storageClass: azureblob-fuse wordpressUsername: myuser - wordpressBlogName: "My Wordpress!" + wordpressBlogName: "My WordPress!" existingSecret: wordpress-credentials ingress: enabled: true diff --git a/scripts/README.md b/scripts/README.md index 76bd98e..428b779 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -3,23 +3,33 @@ ## Bash functions Name | Source ------------------------------------------------|--------------------------------------------------------------------------------------------- -`k3s_copy_kubeconfig` | [scripts/k3s/cluster-lifecycle.sh](scripts/k3s/cluster-lifecycle.sh) -`k3s_create_cluster` | [scripts/k3s/cluster-lifecycle.sh](scripts/k3s/cluster-lifecycle.sh) -`k8s_create_letsencryptclusterissuer` | [scripts/kubernetes/certificate-management.sh](scripts/kubernetes/certificate-management.sh) -`k8s_install_certmanager` | [scripts/kubernetes/certificate-management.sh](scripts/kubernetes/certificate-management.sh) -`k8s_wait_fornodesandpods` | [scripts/kubernetes/cluster-status.sh](scripts/kubernetes/cluster-status.sh) -`rancher_create_apikey` | [scripts/rancher/user-actions.sh](scripts/rancher/user-actions.sh) -`rancher_create_customcluster` | [scripts/rancher/cluster-actions.sh](scripts/rancher/cluster-actions.sh) -`rancher_first_login` | [scripts/rancher/manager-lifecycle.sh](scripts/rancher/manager-lifecycle.sh) -`rancher_get_clusterid` | [scripts/rancher/cluster-actions.sh](scripts/rancher/cluster-actions.sh) -`rancher_get_clusterregistrationcommand` | [scripts/rancher/cluster-actions.sh](scripts/rancher/cluster-actions.sh) -`rancher_install_withcertmanagerclusterissuer` | [scripts/rancher/manager-lifecycle.sh](scripts/rancher/manager-lifecycle.sh) -`rancher_list_clusters` | [scripts/rancher/cluster-actions.sh](scripts/rancher/cluster-actions.sh) -`rancher_login_withpassword` | [scripts/rancher/user-actions.sh](scripts/rancher/user-actions.sh) -`rancher_update_password` | [scripts/rancher/user-actions.sh](scripts/rancher/user-actions.sh) -`rancher_update_serverurl` | [scripts/rancher/manager-settings.sh](scripts/rancher/manager-settings.sh) -`rancher_wait_capiready` | [scripts/rancher/manager-lifecycle.sh](scripts/rancher/manager-lifecycle.sh) +-----------------------------------------------|----------------------------------------------------------------------------- +`k3s_copy_kubeconfig` | [k3s/cluster_lifecycle.sh](k3s/cluster_lifecycle.sh) +`k3s_create_cluster` | [k3s/cluster_lifecycle.sh](k3s/cluster_lifecycle.sh) +`k8s_create_letsencryptclusterissuer` | [kubernetes/certificate_management.sh](kubernetes/certificate_management.sh) +`k8s_install_certmanager` | [kubernetes/certificate_management.sh](kubernetes/certificate_management.sh) +`k8s_wait_fornodesandpods` | [kubernetes/cluster_status.sh](kubernetes/cluster_status.sh) +`keycloak_login` | [authentication/keycloak.sh](authentication/keycloak.sh) +`keycloak_create_user` | [authentication/keycloak.sh](authentication/keycloak.sh) +`keycloak_delete_user` | [authentication/keycloak.sh](authentication/keycloak.sh) +`observability_check_stackpack` | [observability/stackpack.sh](observability/stackpack.sh) +`observability_create_ingestion_api_key` | [observability/api_key.sh](observability/api_key.sh) +`observability_delete_ingestion_api_key` | [observability/api_key.sh](observability/api_key.sh) +`observability_delete_stackpack` | [observability/stackpack.sh](observability/stackpack.sh) +`observability_get_component_snapshot` | [observability/stql.sh](observability/stql.sh) +`observability_get_component_state` | [observability/stql.sh](observability/stql.sh) +`observability_install_cli` | [observability/cli.sh](observability/cli.sh) +`rancher_create_apikey` | [rancher/user_actions.sh](rancher/user_actions.sh) +`rancher_create_customcluster` | [rancher/cluster_actions.sh](rancher/cluster_actions.sh) +`rancher_first_login` | [rancher/manager_lifecycle.sh](rancher/manager_lifecycle.sh) +`rancher_get_clusterid` | [rancher/cluster_actions.sh](rancher/cluster_actions.sh) +`rancher_get_clusterregistrationcommand` | [rancher/cluster_actions.sh](rancher/cluster_actions.sh) +`rancher_install_withcertmanagerclusterissuer` | [rancher/manager_lifecycle.sh](rancher/manager_lifecycle.sh) +`rancher_list_clusters` | [rancher/cluster_actions.sh](rancher/cluster_actions.sh) +`rancher_login_withpassword` | [rancher/user_actions.sh](rancher/user_actions.sh) +`rancher_update_password` | [rancher/user_actions.sh](rancher/user_actions.sh) +`rancher_update_serverurl` | [rancher/manager_settings.sh](rancher/manager_settings.sh) +`rancher_wait_capiready` | [rancher/manager_lifecycle.sh](rancher/manager_lifecycle.sh) ## Concrete examples diff --git a/scripts/k3s/cluster-lifecycle.sh b/scripts/k3s/cluster_lifecycle.sh similarity index 100% rename from scripts/k3s/cluster-lifecycle.sh rename to scripts/k3s/cluster_lifecycle.sh diff --git a/scripts/kubernetes/certificate-management.sh b/scripts/kubernetes/certificate_management.sh similarity index 100% rename from scripts/kubernetes/certificate-management.sh rename to scripts/kubernetes/certificate_management.sh diff --git a/scripts/kubernetes/cluster-status.sh b/scripts/kubernetes/cluster_status.sh similarity index 100% rename from scripts/kubernetes/cluster-status.sh rename to scripts/kubernetes/cluster_status.sh diff --git a/scripts/rancher/cluster-actions.sh b/scripts/rancher/cluster_actions.sh similarity index 100% rename from scripts/rancher/cluster-actions.sh rename to scripts/rancher/cluster_actions.sh diff --git a/scripts/rancher/manager-lifecycle.sh b/scripts/rancher/manager_lifecycle.sh similarity index 100% rename from scripts/rancher/manager-lifecycle.sh rename to scripts/rancher/manager_lifecycle.sh diff --git a/scripts/rancher/manager-settings.sh b/scripts/rancher/manager_settings.sh similarity index 100% rename from scripts/rancher/manager-settings.sh rename to scripts/rancher/manager_settings.sh diff --git a/scripts/rancher/user-actions.sh b/scripts/rancher/user_actions.sh similarity index 100% rename from scripts/rancher/user-actions.sh rename to scripts/rancher/user_actions.sh