converts to declarative format

This commit is contained in:
Hyatt 2022-04-01 21:12:44 -05:00
parent a6096db9da
commit 169b391455
Signed by: nhyatt
GPG Key ID: C50D0BBB5BC40BEA

View File

@ -1,39 +1,87 @@
#!groovy #!groovy
// repository configuration
def repository = "registry.c.test-chamber-13.lan" def repository = "registry.c.test-chamber-13.lan"
def repositoryCreds = "harbor-repository-creds"
// jenkins secrets def workspace
def nordCreds = "nordvpn-login-creds" def dockerFile
def nordCreds
def kubeNamespace
def kubeSecret
def nordURL
def openVPNConfig
def k8sSecret
// kubernetes configuration def label = "kubernetes-${UUID.randomUUID().toString()}"
def kubeNamespace = "dl-automation" def templateName = "pipeline-worker"
def kubeSecret = "openvpn" pipeline {
agent {
kubernetes {
yaml functions.podYaml(
repo: repository,
templateName: templateName,
alpine: true
)
}
}
// list of urls that return different nordVPN servers stages {
def nordURLs = [ stage ('Initalize Jenkins') {
// canada steps {
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:38,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}", script {
// france workspace = pwd()
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:74,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}", // jenkins secrets
// gremany nordCreds = "nordvpn-login-creds"
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:81,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// japan
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:108,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// sweden
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:208,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// switzerland
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:209,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// netherlands
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:153,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// united kingdom
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:38,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
]
// randomly select one from the list
def nordURL = nordURLs[Math.abs(new Random().nextInt() % [8])]
// script used to retrieve a nordVPN OpenVPN configuration from NordVPN // kubernetes configuration
def openVPNConfigScript = """# Get OpenVPN Config kubeNamespace = "dl-automation"
kubeSecret = "openvpn"
// list of urls that return different nordVPN servers
def nordURLs = [
// canada
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:38,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// france
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:74,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// gremany
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:81,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// japan
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:108,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// sweden
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:208,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// switzerland
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:209,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// netherlands
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:153,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
// united kingdom
"https://nordvpn.com/wp-admin/admin-ajax.php?action=servers_recommendations&filters=\\{%22country_id%22:38,%22servers_groups%22:\\[15\\],%22servers_technologies%22:\\[5\\]\\}",
]
// randomly select one from the list
nordURL = nordURLs[Math.abs(new Random().nextInt() % [8])]
}
}
}
stage ('Prepare Container') {
steps {
container ('alpine') {
script {
sh """
if [ ! -f "/usr/bin/curl" ] || [ ! -x "/usr/bin/curl" ]; then
apk add --no-cache curl
fi
if [ ! -f "/usr/bin/jq" ] || [ ! -x "/usr/bin/jq" ]; then
apk add --no-cache jq
fi
if [ ! -f "/bin/sed" ] || [ ! -x "/bin/sed" ]; then
apk add --no-cache sed
fi
"""
}
openVPNConfig = sh(
returnStdout: true,
script: """# Get OpenVPN Config
curl \ curl \
--silent \ --silent \
--location \ --location \
@ -53,46 +101,17 @@ curl \
--expression='s/auth-user-pass/auth-user-pass \\/etc\\/openvpn\\/client\\/openvpn-credentials.txt/' \ --expression='s/auth-user-pass/auth-user-pass \\/etc\\/openvpn\\/client\\/openvpn-credentials.txt/' \
| base64 -w 0 | base64 -w 0
""" """
)
withCredentials(
[
string(
credentialsId: nordCreds,
variable: "NORD_CREDS",
)
]
) {
def label = "kubernetes-${UUID.randomUUID().toString()}" k8sSecret = """apiVersion: v1
def templateName = "pipeline-worker"
podTemplate(
label: label,
name: templateName,
yaml: functions.podYaml(
repo: repository,
templateName: templateName,
alpine: true
)
) {
node (label) {
def workspace = pwd()
stage ("Prepare Container") {
container ("alpine") {
sh """
apk add --no-cache curl jq sed
"""
}
}
def openVPNConfig
stage ("Get Remote OpenVPN Config") {
container ("alpine") {
openVPNConfig = sh(
returnStdout: true,
script: openVPNConfigScript
)
}
}
def k8sSecret
stage ("Compile Secret") {
withCredentials([string(
credentialsId: nordCreds,
variable: "NORD_CREDS",
)]) {
k8sSecret = """apiVersion: v1
kind: Secret kind: Secret
metadata: metadata:
name: """ + kubeSecret + """ name: """ + kubeSecret + """
@ -101,21 +120,39 @@ data:
openvpn-credentials.txt: """ + NORD_CREDS + """ openvpn-credentials.txt: """ + NORD_CREDS + """
nordvpn.com.tcp.ovpn: """ + openVPNConfig + """ nordvpn.com.tcp.ovpn: """ + openVPNConfig + """
""" """
}
}
} }
} }
functions.createSecret( stage ('Create Secret') {
kubeAuth: "k8s-dl-automation-access", steps {
kubeURL: "https://kubernetes.test-chamber-13.lan:6443", container ('alpine') {
namespace: "dl-automation", script {
secret: k8sSecret declarativeFunctions.createSecret(
) kubeAuth: "k8s-dl-automation-access",
kubeURL: "https://kubernetes.test-chamber-13.lan:6443",
namespace: "dl-automation",
secret: k8sSecret
)
}
}
}
}
functions.deletePod( stage ('Restart Pod') {
kubeAuth: "k8s-dl-automation-access", steps {
kubeURL: "https://kubernetes.test-chamber-13.lan:6443", container ('alpine') {
namespace: "dl-automation", script {
selector: "app=deluge" declarativeFunctions.deletePod(
) kubeAuth: "k8s-dl-automation-access",
kubeURL: "https://kubernetes.test-chamber-13.lan:6443",
namespace: "dl-automation",
selector: "app=deluge"
)
}
}
}
}
} }
} }