From 8ebfaffd5051d7e0128f8b145e1015cd704e0f0e Mon Sep 17 00:00:00 2001 From: Maxime Noel Date: Wed, 15 Nov 2023 11:34:01 +1300 Subject: [PATCH 01/10] add paygo support --- ...EManager-4.3-build-validation-paygo-AWS.tf | 755 ++++++++++++++++++ 1 file changed, 755 insertions(+) create mode 100644 terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf diff --git a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf new file mode 100644 index 000000000..2dbdbe302 --- /dev/null +++ b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf @@ -0,0 +1,755 @@ + +// Mandatory variables for terracumber +variable "URL_PREFIX" { + type = string + default = "https://ci.suse.de/view/Manager/view/Manager-43/job/SUSEManager-432-AWS" +} + +// Not really used as this is for --runall parameter, and we run cucumber step by step +variable "CUCUMBER_COMMAND" { + type = string + default = "export PRODUCT='SUSE-Manager' && run-testsuite" +} + +variable "CUCUMBER_GITREPO" { + type = string + default = "https://github.com/uyuni-project/uyuni.git" +} + +variable "CUCUMBER_BRANCH" { + type = string + default = "master" +} + +variable "CUCUMBER_RESULTS" { + type = string + default = "/root/spacewalk/testsuite" +} + +variable "MAIL_SUBJECT" { + type = string + default = "Results Manager4.3-WS-MU $status: $tests scenarios ($failures failed, $errors errors, $skipped skipped, $passed passed)" +} + +variable "MAIL_TEMPLATE" { + type = string + default = "../mail_templates/mail-template-jenkins.txt" +} + +variable "MAIL_SUBJECT_ENV_FAIL" { + type = string + default = "Results Manager4.3-AWS-MU: Environment setup failed" +} + +variable "MAIL_TEMPLATE_ENV_FAIL" { + type = string + default = "../mail_templates/mail-template-jenkins-env-fail.txt" +} + +variable "MAIL_FROM" { + type = string + default = "galaxy-noise@suse.de" +} + +variable "MAIL_TO" { + type = string + default = "galaxy-noise@suse.de" +} + +// sumaform specific variables +variable "SCC_USER" { + type = string +} + +variable "SCC_PASSWORD" { + type = string +} + +variable "GIT_USER" { + type = string + default = null // Not needed for master, as it is public +} + +variable "GIT_PASSWORD" { + type = string + default = null // Not needed for master, as it is public +} + +variable "REGION" { + type = string + default = null +} + +variable "MIRROR"{ + type = string + default = null +} + +variable "AVAILABILITY_ZONE" { + type = string + default = null +} + +variable "KEY_FILE" { + type = string + default = "/home/jenkins/.ssh/testing-suma.pem" +} + +variable "KEY_NAME" { + type = string + default = "testing-suma" +} + +variable "SERVER_REGISTRATION_CODE" { + type = string + default = null +} + +variable "PROXY_REGISTRATION_CODE" { + type = string + default = null +} + +variable "SLES_REGISTRATION_CODE" { + type = string + default = null +} + +variable "ALLOWED_IPS" { + type = list(string) + default = [] +} + +variable "NAME_PREFIX" { + type = string + default = null +} + +provider "aws" { + region = var.REGION +} + +module "base" { + source = "./modules/base" + + cc_username = var.SCC_USER + cc_password = var.SCC_PASSWORD + name_prefix = var.NAME_PREFIX + mirror = var.MIRROR + testsuite = true + use_avahi = false + use_eip_bastion = false + + provider_settings = { + availability_zone = var.AVAILABILITY_ZONE + region = var.REGION + ssh_allowed_ips = var.ALLOWED_IPS + key_name = var.KEY_NAME + key_file = var.KEY_FILE + } +} + +module "mirror" { + source = "./modules/mirror" + base_configuration = module.base.configuration + disable_cron = true + provider_settings = { + public_instance = true + } + image = "opensuse154o" +} + +module "server" { + source = "./sumaform/modules/server" + base_configuration = merge(module.base.configuration, + { + mirror = null + }) + name = "server" + product_version = "paygo" + image = "suma-server-43-paygo" + repository_disk_size = 1500 + # server_registration_code = var.SERVER_REGISTRATION_CODE + + auto_accept = false + monitored = false + disable_firewall = false + allow_postgres_connections = false + skip_changelog_import = false + create_first_user = false + mgr_sync_autologin = false + create_sample_channel = false + create_sample_activation_key = false + create_sample_bootstrap_script = false + publish_private_ssl_key = false + use_os_released_updates = false + disable_download_tokens = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "m6a.xlarge" + } + + //server_additional_repos + +} + +module "proxy" { + + source = "./modules/proxy" + base_configuration = module.base.configuration + server_configuration = module.server.configuration + product_version = "4.3-released" + name = "proxy" + proxy_registration_code = var.PROXY_REGISTRATION_CODE + image = "suma-proxy-43-byos" + + + auto_register = false + auto_connect_to_master = false + download_private_ssl_key = false + install_proxy_pattern = false + auto_configure = false + generate_bootstrap_script = false + publish_private_ssl_key = false + use_os_released_updates = true + proxy_containerized = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "c6i.large" + } + + //proxy_additional_repos + +} + +module "suse-minion-paygo" { + source = "./sumaform/modules/minion" + base_configuration = module.base.configuration + product_version = "paygo" + name = "min-sles15-paygo" + image = "sles15sp5-paygo" + provider_settings = { + instance_type = "t3a.medium" + // overwrite_fqdn = "${local.prefix}-min-sles15.${local.domain}" + } + server_configuration = module.server.configuration + # sles_registration_code = var.SLES_REGISTRATION_CODE + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + +} + + +module "sles12sp4-client" { + source = "./modules/client" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "cli-sles12sp4" + image = "sles12sp4" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_register = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } +} + +module "sles12sp5-client" { + source = "./modules/client" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "cli-sles12sp5" + image = "sles12sp5" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_register = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } +} + +module "sles15sp2-client" { + source = "./modules/client" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "cli-sles15sp2" + image = "sles15sp2o" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_register = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } +} + +module "sles15sp4-client" { + + source = "./modules/client" + base_configuration = module.base.configuration + name = "cli-sles15sp4" + image = "sles15sp4o" + product_version = "4.3-released" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_register = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } + + //sle15sp4-client_additional_repos +} + +module "sles15sp3-client" { + + source = "./modules/client" + base_configuration = module.base.configuration + name = "cli-sles15sp3" + image = "sles15sp3o" + product_version = "4.3-released" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_register = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } + + //sle15sp3-client_additional_repos +} + +module "ubuntu2004-minion" { + source = "./modules/minion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "min-ubuntu2004" + image = "ubuntu2004" + server_configuration = module.server.configuration + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + + provider_settings = { + instance_type = "t3a.medium" + } +} + +//module "debian11-minion" { +// source = "./modules/minion" +// base_configuration = module.base.configuration +// product_version = "4.3-released" +// name = "min-debian11" +// image = "debian11" +// server_configuration = module.server.configuration +// auto_connect_to_master = false +// use_os_released_updates = false +// ssh_key_path = "./salt/controller/id_rsa.pub" +// +// provider_settings = { +// instance_type = "t3a.medium" +// } +//} + +//module "debian12-minion" { +// source = "./modules/minion" +// base_configuration = module.base.configuration +// product_version = "4.3-released" +// name = "min-debian12" +// image = "debian12" +// server_configuration = module.server.configuration +// auto_connect_to_master = false +// use_os_released_updates = false +// ssh_key_path = "./salt/controller/id_rsa.pub" +// +// provider_settings = { +// instance_type = "t3a.medium" +// } +// +// additional_packages = [ "venv-salt-minion" ] +// install_salt_bundle = true +//} + +module "rocky8-minion" { + source = "./modules/minion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "min-rocky8" + image = "rocky8" + server_configuration = module.server.configuration + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + + additional_packages = [ "venv-salt-minion" ] + install_salt_bundle = true + provider_settings = { + instance_type = "t3a.medium" + } +} + +module "sles12sp4-minion" { + source = "./modules/minion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "min-sles12sp4" + image = "sles12sp4" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } +} + +module "sles12sp5-minion" { + source = "./modules/minion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "min-sles12sp5" + image = "sles12sp5" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } +} + +module "sles15sp2-minion" { + source = "./modules/minion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "min-sles15sp2" + image = "sles15sp2o" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } +} + +module "sles15sp4-minion" { + source = "./modules/minion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "min-sles15sp4" + image = "sles15sp4o" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } + + //sle15sp4-minion_additional_repos + +} + +module "sles15sp3-minion" { + source = "./modules/minion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "min-sles15sp3" + image = "sles15sp3o" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } + + //sle15sp3-minion_additional_repos + +} + +module "ubuntu2004-sshminion" { + source = "./modules/sshminion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "minssh-ubuntu2004" + image = "ubuntu2004" + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + + provider_settings = { + instance_type = "t3a.medium" + } +} + +//module "debian11-sshminion" { +// source = "./modules/sshminion" +// base_configuration = module.base.configuration +// product_version = "4.3-released" +// name = "minssh-debian11" +// image = "debian11" +// use_os_released_updates = false +// ssh_key_path = "./salt/controller/id_rsa.pub" +// +// provider_settings = { +// instance_type = "t3a.medium" +// } +//} + +//module "debian12-sshminion" { +// source = "./modules/sshminion" +// base_configuration = module.base.configuration +// product_version = "4.3-released" +// name = "minssh-debian12" +// image = "debian12" +// use_os_released_updates = false +// ssh_key_path = "./salt/controller/id_rsa.pub" +// +// provider_settings = { +// instance_type = "t3a.medium" +// } +// +// additional_packages = [ "venv-salt-minion" ] +// install_salt_bundle = true +//} + +module "rocky8-sshminion" { + source = "./modules/sshminion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "minssh-rocky8" + image = "rocky8" + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + + additional_packages = [ "venv-salt-minion" ] + install_salt_bundle = true + + provider_settings = { + instance_type = "t3a.medium" + } + +} + +module "sles12sp4-sshminion" { + source = "./modules/sshminion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "minssh-sles12sp4" + image = "sles12sp4" + use_os_released_updates = false + sles_registration_code = var.SLES_REGISTRATION_CODE + ssh_key_path = "./salt/controller/id_rsa.pub" + gpg_keys = ["default/gpg_keys/galaxy.key"] + provider_settings = { + instance_type = "t3a.medium" + } +} + +module "sles12sp5-sshminion" { + source = "./modules/sshminion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "minssh-sles12sp5" + image = "sles12sp5" + use_os_released_updates = false + sles_registration_code = var.SLES_REGISTRATION_CODE + ssh_key_path = "./salt/controller/id_rsa.pub" + gpg_keys = ["default/gpg_keys/galaxy.key"] + provider_settings = { + instance_type = "t3a.medium" + } +} + +module "sles15sp2-sshminion" { + source = "./modules/sshminion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "minssh-sles15sp2" + image = "sles15sp2o" + sles_registration_code = var.SLES_REGISTRATION_CODE + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } +} + + +module "sles15sp4-sshminion" { + source = "./modules/sshminion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "minssh-sles15sp4" + image = "sles15sp4o" + sles_registration_code = var.SLES_REGISTRATION_CODE + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } + +} + +module "sles15sp3-sshminion" { + source = "./modules/sshminion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "minssh-sles15sp3" + image = "sles15sp3o" + sles_registration_code = var.SLES_REGISTRATION_CODE + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } + +} + +module "rhel9-minion" { + + source = "./modules/minion" + base_configuration = module.base.configuration + server_configuration = module.server.configuration + product_version = "4.3-released" + name = "min-rhel9" + image = "rhel9" + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + install_salt_bundle = true + provider_settings = { + instance_type = "t3a.medium" + } + + //rhel9-minion_additional_repos + +} + +module "ubuntu2204-sshminion" { + source = "./modules/sshminion" + base_configuration = module.base.configuration + product_version = "4.3-released" + name = "minssh-ubuntu2204" + image = "ubuntu2204" + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } + +} + +module "ubuntu2204-minion" { + source = "./modules/minion" + base_configuration = module.base.configuration + server_configuration = module.server.configuration + product_version = "4.3-released" + name = "min-ubuntu2204" + image = "ubuntu2204" + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + provider_settings = { + instance_type = "t3a.medium" + } + + //ubuntu2204-minion_additional_repos + +} + +module "controller" { + source = "./modules/controller" + base_configuration = module.base.configuration + name = "ctl" + provider_settings = { + instance_type = "c6i.xlarge" + } + + swap_file_size = null + no_mirror = true + is_using_build_image = false + is_using_scc_repositories = true + // Cucumber repository configuration for the controller + git_username = var.GIT_USER + git_password = var.GIT_PASSWORD + git_repo = var.CUCUMBER_GITREPO + branch = var.CUCUMBER_BRANCH + + server_configuration = module.server.configuration + proxy_configuration = module.proxy.configuration + + sle12sp4_client_configuration = module.sles12sp4-client.configuration + sle12sp4_minion_configuration = module.sles12sp4-minion.configuration + sle12sp4_sshminion_configuration = module.sles12sp4-sshminion.configuration + + sle12sp5_client_configuration = module.sles12sp5-client.configuration + sle12sp5_minion_configuration = module.sles12sp5-minion.configuration + sle12sp5_sshminion_configuration = module.sles12sp5-sshminion.configuration + + + sle15sp2_client_configuration = module.sles15sp2-client.configuration + sle15sp2_minion_configuration = module.sles15sp2-minion.configuration + sle15sp2_sshminion_configuration = module.sles15sp2-sshminion.configuration + + sle15sp3_client_configuration = module.sles15sp3-client.configuration + sle15sp3_minion_configuration = module.sles15sp3-minion.configuration + sle15sp3_sshminion_configuration = module.sles15sp3-sshminion.configuration + + sle15sp4_client_configuration = module.sles15sp4-client.configuration + sle15sp4_minion_configuration = module.sles15sp4-minion.configuration + sle15sp4_sshminion_configuration = module.sles15sp4-sshminion.configuration + + rocky8_minion_configuration = module.rocky8-minion.configuration + rocky8_sshminion_configuration = module.rocky8-sshminion.configuration + + ubuntu2004_minion_configuration = module.ubuntu2004-minion.configuration + ubuntu2004_sshminion_configuration = module.ubuntu2004-sshminion.configuration + + ubuntu2204_minion_configuration = module.ubuntu2204-minion.configuration + ubuntu2204_sshminion_configuration = module.ubuntu2204-sshminion.configuration + +// debian11_minion_configuration = module.debian11-minion.configuration +// debian11_sshminion_configuration = module.debian11-sshminion.configuration + +// debian12_minion_configuration = module.debian12-minion.configuration +// debian12_sshminion_configuration = module.debian12-sshminion.configuration + + rhel9_minion_configuration = module.rhel9-minion.configuration + +} + +output "bastion_public_name" { + value = lookup(module.base.configuration, "bastion_host", null) +} + +output "aws_mirrors_private_name" { + value = module.mirror.configuration.hostnames +} + +output "aws_mirrors_public_name" { + value = module.mirror.configuration.public_names +} + +output "configuration" { + value = { + controller = module.controller.configuration + bastion = { + hostname = lookup(module.base.configuration, "bastion_host", null) + } + } +} From 4e82d0cf450a250415b56f0014d720cf46e19ae3 Mon Sep 17 00:00:00 2001 From: Maxime Noel Date: Thu, 16 Nov 2023 09:37:22 +1300 Subject: [PATCH 02/10] Update main.tf with last changes --- ...EManager-4.3-build-validation-paygo-AWS.tf | 56 +------------------ 1 file changed, 3 insertions(+), 53 deletions(-) diff --git a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf index 2dbdbe302..e4311a09e 100644 --- a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf +++ b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf @@ -160,7 +160,7 @@ module "mirror" { } module "server" { - source = "./sumaform/modules/server" + source = "./modules/server" base_configuration = merge(module.base.configuration, { mirror = null @@ -223,7 +223,7 @@ module "proxy" { } module "suse-minion-paygo" { - source = "./sumaform/modules/minion" + source = "./modules/minion" base_configuration = module.base.configuration product_version = "paygo" name = "min-sles15-paygo" @@ -241,22 +241,6 @@ module "suse-minion-paygo" { } -module "sles12sp4-client" { - source = "./modules/client" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "cli-sles12sp4" - image = "sles12sp4" - server_configuration = module.server.configuration - sles_registration_code = var.SLES_REGISTRATION_CODE - auto_register = false - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - provider_settings = { - instance_type = "t3a.medium" - } -} - module "sles12sp5-client" { source = "./modules/client" base_configuration = module.base.configuration @@ -396,22 +380,6 @@ module "rocky8-minion" { } } -module "sles12sp4-minion" { - source = "./modules/minion" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "min-sles12sp4" - image = "sles12sp4" - server_configuration = module.server.configuration - sles_registration_code = var.SLES_REGISTRATION_CODE - auto_connect_to_master = false - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - provider_settings = { - instance_type = "t3a.medium" - } -} - module "sles12sp5-minion" { source = "./modules/minion" base_configuration = module.base.configuration @@ -545,21 +513,6 @@ module "rocky8-sshminion" { } -module "sles12sp4-sshminion" { - source = "./modules/sshminion" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "minssh-sles12sp4" - image = "sles12sp4" - use_os_released_updates = false - sles_registration_code = var.SLES_REGISTRATION_CODE - ssh_key_path = "./salt/controller/id_rsa.pub" - gpg_keys = ["default/gpg_keys/galaxy.key"] - provider_settings = { - instance_type = "t3a.medium" - } -} - module "sles12sp5-sshminion" { source = "./modules/sshminion" base_configuration = module.base.configuration @@ -573,6 +526,7 @@ module "sles12sp5-sshminion" { provider_settings = { instance_type = "t3a.medium" } + additional_packages = [ "chrony" ] } module "sles15sp2-sshminion" { @@ -693,10 +647,6 @@ module "controller" { server_configuration = module.server.configuration proxy_configuration = module.proxy.configuration - sle12sp4_client_configuration = module.sles12sp4-client.configuration - sle12sp4_minion_configuration = module.sles12sp4-minion.configuration - sle12sp4_sshminion_configuration = module.sles12sp4-sshminion.configuration - sle12sp5_client_configuration = module.sles12sp5-client.configuration sle12sp5_minion_configuration = module.sles12sp5-minion.configuration sle12sp5_sshminion_configuration = module.sles12sp5-sshminion.configuration From 92c83b09cfa2f25940adbafdc1b1bba878a58dff Mon Sep 17 00:00:00 2001 From: Maxime Noel Date: Thu, 16 Nov 2023 09:52:17 +1300 Subject: [PATCH 03/10] Remove SCC to deployment --- .../SUSEManager-4.3-build-validation-paygo-AWS.tf | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf index e4311a09e..c96fda839 100644 --- a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf +++ b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf @@ -56,15 +56,6 @@ variable "MAIL_TO" { default = "galaxy-noise@suse.de" } -// sumaform specific variables -variable "SCC_USER" { - type = string -} - -variable "SCC_PASSWORD" { - type = string -} - variable "GIT_USER" { type = string default = null // Not needed for master, as it is public @@ -132,8 +123,6 @@ provider "aws" { module "base" { source = "./modules/base" - cc_username = var.SCC_USER - cc_password = var.SCC_PASSWORD name_prefix = var.NAME_PREFIX mirror = var.MIRROR testsuite = true From da688654fe71f749ef7e6d193a9ae5abfb05b058 Mon Sep 17 00:00:00 2001 From: Maxime Noel Date: Wed, 13 Dec 2023 15:55:31 +1300 Subject: [PATCH 04/10] First update with last changes --- .../pipeline-build-validation-aws.groovy | 46 ++++- .../manager-4.3-qe-build-validation-AWS | 5 +- ...EManager-4.3-build-validation-paygo-AWS.tf | 189 ++++++++---------- terracumber_config/tf_files/aws_mirror.tf | 2 +- terracumber_config/tf_files/local_mirror.tf | 4 +- 5 files changed, 128 insertions(+), 118 deletions(-) diff --git a/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy b/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy index a92049da4..fd19b3f87 100644 --- a/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy +++ b/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy @@ -146,7 +146,7 @@ def run(params) { NAME_PREFIX = env.JOB_NAME.toLowerCase().replace('.', '-') env.aws_configuration = "REGION = \"${params.aws_region}\"\n" + "AVAILABILITY_ZONE = \"${params.aws_availability_zone}\"\n" + - "NAME_PREFIX = \"${NAME_PREFIX}\"\n" + + "NAME_PREFIX = \"${NAME_PREFIX}-\"\n" + "KEY_FILE = \"${params.key_file}\"\n" + "KEY_NAME = \"${params.key_name}\"\n" + "ALLOWED_IPS = [ \n" @@ -181,15 +181,14 @@ def run(params) { sh "ssh ${ssh_option} ${user}@${mirror_hostname_local} 'scp ${ssh_option} -i /root/testing-suma.pem /root/mirror.tar.gz ec2-user@${mirror_hostname_aws_public}:/home/ec2-user/' " sh "ssh ${ssh_option} -i ${params.key_file} ec2-user@${mirror_hostname_aws_public} 'sudo tar -xvf /home/ec2-user/mirror.tar.gz -C /srv/mirror/' " sh "ssh ${ssh_option} -i ${params.key_file} ec2-user@${mirror_hostname_aws_public} 'sudo rsync -a /srv/mirror/ibs/ /srv/mirror' " - sh "ssh ${ssh_option} -i ${params.key_file} ec2-user@${mirror_hostname_aws_public} 'sudo rsync -a /srv/mirror/download/ibs/ /srv/mirror' " + sh "ssh ${ssh_option} -i ${params.key_file} ec2-user@${mirror_hostname_aws_public} 'sudo rsync -a /srv/mirror/download/ibs/ /srv/mirror' || true" sh "ssh ${ssh_option} -i ${params.key_file} ec2-user@${mirror_hostname_aws_public} 'sudo rm -rf /srv/mirror/ibs' " sh "ssh ${ssh_option} -i ${params.key_file} ec2-user@${mirror_hostname_aws_public} 'sudo rm -rf /srv/mirror/download/ibs' " } } } - } - else { + } else { stage("Get mirror private IP") { env.mirror_hostname_aws_private = sh(script: "cat ${aws_mirror_dir}/terraform.tfstate | jq -r '.outputs.aws_mirrors_private_name.value[0]' ", returnStdout: true).trim() @@ -288,6 +287,29 @@ def run(params) { /** Proxy stages end **/ + /** PAYGO stages begin **/ + if (params.paygo_stages) { + // Call the minion testing. + try { + stage('Clients paygo stages') { + clientTestingStages(capybara_timeout, default_timeout, 'paygo') + } + + } catch (Exception ex) { + println('ERROR: one or more clients have failed') + client_paygo_stage_result_fail = true + } + stage('Paygo testing') { + if (params.confirm_before_continue) { + input 'Press any key to start paygo related tests' + } + res_paygo_testing = sh(script: "./terracumber-cli ${common_params} --logfile ${resultdirbuild}/testsuite.log --runstep cucumber --cucumber-cmd '${env.exports} cd /root/spacewalk/testsuite; rake cucumber:build_validation_paygo_testing'") + echo "PAYGO testing status code: ${res_paygo_testing}" + } + } + + /** PAYGO stages end **/ + /** Monitoring stages begin **/ // Hide monitoring for qe update pipeline if (params.enable_monitoring_stages) { @@ -458,20 +480,22 @@ def run(params) { // Develop a function that outlines the various stages of a minion. // These stages will be executed concurrently. -def clientTestingStages(capybara_timeout, default_timeout) { +def clientTestingStages(capybara_timeout, default_timeout, minion_type = 'default') { // Implement a hash map to store the various stages of nodes. def tests = [:] // Load JSON matching non MU repositories data def json_matching_non_MU_data = readJSON(file: env.non_MU_channels_tasks_file) - + println minion_type //Get minion list from terraform state list command - def nodesHandler = getNodesHandler() + def nodesHandler = getNodesHandler(minion_type) + println nodesHandler.nodeList def mu_sync_status = nodesHandler.MUSyncStatus // Construct a stage list for each node. nodesHandler.nodeList.each { node -> + println("Create tests for pago") tests["${node}"] = { // Generate a temporary list that comprises of all the minions except the one currently undergoing testing. // This list is utilized to establish an SSH session exclusively with the minion undergoing testing. @@ -597,7 +621,7 @@ def clientTestingStages(capybara_timeout, default_timeout) { parallel tests } -def getNodesHandler() { +def getNodesHandler(minionType = 'default') { // Employ the terraform state list command to generate the list of nodes. // Due to the disparity between the node names in the test suite and those in the environment variables of the controller, two separate lists are maintained. Set nodeList = new HashSet() @@ -608,7 +632,11 @@ def getNodesHandler() { String[] moduleList = modules.split("\n") moduleList.each { lane -> def instanceList = lane.tokenize(".") - if (instanceList[1].contains('minion') || instanceList[1].contains('client')) { + if ( minionType == 'default' && (instanceList[1].contains('minion') || instanceList[1].contains('client'))) { + nodeList.add(instanceList[1].replaceAll('-', '_').replaceAll('sshminion', 'ssh_minion').replaceAll('sles', 'sle')) + envVar.add(instanceList[1].replaceAll('-', '_').replaceAll('sles', 'sle').toUpperCase()) + } + else if (( minionType == 'paygo' && (instanceList[1].contains('paygo') || instanceList[1].contains('byos')))) { nodeList.add(instanceList[1].replaceAll('-', '_').replaceAll('sshminion', 'ssh_minion').replaceAll('sles', 'sle')) envVar.add(instanceList[1].replaceAll('-', '_').replaceAll('sles', 'sle').toUpperCase()) } diff --git a/jenkins_pipelines/environments/manager-4.3-qe-build-validation-AWS b/jenkins_pipelines/environments/manager-4.3-qe-build-validation-AWS index 3aaa01da1..573fb20dc 100644 --- a/jenkins_pipelines/environments/manager-4.3-qe-build-validation-AWS +++ b/jenkins_pipelines/environments/manager-4.3-qe-build-validation-AWS @@ -2,11 +2,12 @@ node('sumaform-cucumber-provo') { def minionList = 'sle12sp4_client, sle12sp4_minion, sle12sp4_ssh_minion, ' + - 'sle12sp5_client, sle12sp5_minion, sle12sp5_ssh_minion, ' + + 'sle12sp5_client, sle12sp5_minion, sle12sp5_ssh_minion, sle12sp5_paygo_minion, ' + 'sle15sp1_client, sle15sp1_minion, sle15sp1_ssh_minion, ' + 'sle15sp2_client, sle15sp2_minion, sle15sp2_ssh_minion, ' + 'sle15sp3_client, sle15sp3_minion, sle15sp3_ssh_minion, ' + - 'sle15sp4_client, sle15sp4_minion, sle15sp4_ssh_minion, ' + + 'sle15sp4_client, sle15sp4_minion, sle15sp4_ssh_minion, sle15sp4_byos_minion, ' + + 'sle15sp5_client, sle15sp5_minion, sle15sp5_ssh_minion, sle15sp5_paygo_minion, ' + 'alma9_minion, alma9_ssh_minion, ' + 'centos7_client, centos7_minion, centos7_ssh_minion, ' + 'liberty9_minion, liberty9_ssh_minion, ' + diff --git a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf index c96fda839..075f1b5d5 100644 --- a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf +++ b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf @@ -145,7 +145,7 @@ module "mirror" { provider_settings = { public_instance = true } - image = "opensuse154o" + image = "opensuse155o" } module "server" { @@ -156,7 +156,7 @@ module "server" { }) name = "server" product_version = "paygo" - image = "suma-server-43-paygo" + image = "suma-server-43-ltd-paygo" repository_disk_size = 1500 # server_registration_code = var.SERVER_REGISTRATION_CODE @@ -173,6 +173,7 @@ module "server" { publish_private_ssl_key = false use_os_released_updates = false disable_download_tokens = false + is_paygo_instance = true ssh_key_path = "./salt/controller/id_rsa.pub" provider_settings = { instance_type = "m6a.xlarge" @@ -183,7 +184,6 @@ module "server" { } module "proxy" { - source = "./modules/proxy" base_configuration = module.base.configuration server_configuration = module.server.configuration @@ -211,22 +211,52 @@ module "proxy" { } -module "suse-minion-paygo" { +module "sles12sp5-paygo-minion" { + source = "./modules/minion" + base_configuration = module.base.configuration + product_version = "paygo" + name = "min-sles12sp5-paygo" + image = "sles12sp5-paygo" + provider_settings = { + instance_type = "t3a.medium" + } + server_configuration = module.server.configuration + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + additional_packages = [ "python-instance-billing-flavor-check" ] +} + +module "sles15sp5-paygo-minion" { source = "./modules/minion" base_configuration = module.base.configuration product_version = "paygo" - name = "min-sles15-paygo" + name = "min-sles15sp5-paygo" image = "sles15sp5-paygo" provider_settings = { instance_type = "t3a.medium" - // overwrite_fqdn = "${local.prefix}-min-sles15.${local.domain}" } server_configuration = module.server.configuration - # sles_registration_code = var.SLES_REGISTRATION_CODE auto_connect_to_master = false use_os_released_updates = false ssh_key_path = "./salt/controller/id_rsa.pub" + additional_packages = [ "python-instance-billing-flavor-check" ] +} +module "slesforsap15sp5-paygo-minion" { + source = "./modules/minion" + base_configuration = module.base.configuration + product_version = "paygo" + name = "min-slesforsap15sp5-paygo" + image = "slesforsap15sp5-paygo" + provider_settings = { + instance_type = "t3.large" + } + server_configuration = module.server.configuration + auto_connect_to_master = false + use_os_released_updates = false + ssh_key_path = "./salt/controller/id_rsa.pub" + additional_packages = [ "python-instance-billing-flavor-check" ] } @@ -244,6 +274,9 @@ module "sles12sp5-client" { provider_settings = { instance_type = "t3a.medium" } + additional_packages = [ "chrony" ] + + //sle12sp5-client_additional_repos } module "sles15sp2-client" { @@ -260,14 +293,16 @@ module "sles15sp2-client" { provider_settings = { instance_type = "t3a.medium" } + + //sle15sp2-client_additional_repos } -module "sles15sp4-client" { +module "sles15sp3-client" { source = "./modules/client" base_configuration = module.base.configuration - name = "cli-sles15sp4" - image = "sles15sp4o" + name = "cli-sles15sp3" + image = "sles15sp3o" product_version = "4.3-released" server_configuration = module.server.configuration sles_registration_code = var.SLES_REGISTRATION_CODE @@ -278,15 +313,15 @@ module "sles15sp4-client" { instance_type = "t3a.medium" } - //sle15sp4-client_additional_repos + //sle15sp3-client_additional_repos } -module "sles15sp3-client" { +module "sles15sp4-client" { source = "./modules/client" base_configuration = module.base.configuration - name = "cli-sles15sp3" - image = "sles15sp3o" + name = "cli-sles15sp4" + image = "sles15sp4o" product_version = "4.3-released" server_configuration = module.server.configuration sles_registration_code = var.SLES_REGISTRATION_CODE @@ -297,7 +332,7 @@ module "sles15sp3-client" { instance_type = "t3a.medium" } - //sle15sp3-client_additional_repos + //sle15sp4-client_additional_repos } module "ubuntu2004-minion" { @@ -314,42 +349,9 @@ module "ubuntu2004-minion" { provider_settings = { instance_type = "t3a.medium" } -} -//module "debian11-minion" { -// source = "./modules/minion" -// base_configuration = module.base.configuration -// product_version = "4.3-released" -// name = "min-debian11" -// image = "debian11" -// server_configuration = module.server.configuration -// auto_connect_to_master = false -// use_os_released_updates = false -// ssh_key_path = "./salt/controller/id_rsa.pub" -// -// provider_settings = { -// instance_type = "t3a.medium" -// } -//} - -//module "debian12-minion" { -// source = "./modules/minion" -// base_configuration = module.base.configuration -// product_version = "4.3-released" -// name = "min-debian12" -// image = "debian12" -// server_configuration = module.server.configuration -// auto_connect_to_master = false -// use_os_released_updates = false -// ssh_key_path = "./salt/controller/id_rsa.pub" -// -// provider_settings = { -// instance_type = "t3a.medium" -// } -// -// additional_packages = [ "venv-salt-minion" ] -// install_salt_bundle = true -//} + //ubuntu2004-minion_additional_repos +} module "rocky8-minion" { source = "./modules/minion" @@ -367,6 +369,8 @@ module "rocky8-minion" { provider_settings = { instance_type = "t3a.medium" } + + //rocky8-minion_additional_repos } module "sles12sp5-minion" { @@ -383,6 +387,9 @@ module "sles12sp5-minion" { provider_settings = { instance_type = "t3a.medium" } + additional_packages = [ "chrony" ] + + //sle12sp5-minion_additional_repos } module "sles15sp2-minion" { @@ -399,14 +406,16 @@ module "sles15sp2-minion" { provider_settings = { instance_type = "t3a.medium" } + + //sle15sp2-minion_additional_repos } -module "sles15sp4-minion" { +module "sles15sp3-minion" { source = "./modules/minion" base_configuration = module.base.configuration product_version = "4.3-released" - name = "min-sles15sp4" - image = "sles15sp4o" + name = "min-sles15sp3" + image = "sles15sp3o" server_configuration = module.server.configuration sles_registration_code = var.SLES_REGISTRATION_CODE auto_connect_to_master = false @@ -416,16 +425,16 @@ module "sles15sp4-minion" { instance_type = "t3a.medium" } - //sle15sp4-minion_additional_repos + //sle15sp3-minion_additional_repos } -module "sles15sp3-minion" { +module "sles15sp4-minion" { source = "./modules/minion" base_configuration = module.base.configuration product_version = "4.3-released" - name = "min-sles15sp3" - image = "sles15sp3o" + name = "min-sles15sp4" + image = "sles15sp4o" server_configuration = module.server.configuration sles_registration_code = var.SLES_REGISTRATION_CODE auto_connect_to_master = false @@ -435,7 +444,7 @@ module "sles15sp3-minion" { instance_type = "t3a.medium" } - //sle15sp3-minion_additional_repos + //sle15sp4-minion_additional_repos } @@ -453,37 +462,6 @@ module "ubuntu2004-sshminion" { } } -//module "debian11-sshminion" { -// source = "./modules/sshminion" -// base_configuration = module.base.configuration -// product_version = "4.3-released" -// name = "minssh-debian11" -// image = "debian11" -// use_os_released_updates = false -// ssh_key_path = "./salt/controller/id_rsa.pub" -// -// provider_settings = { -// instance_type = "t3a.medium" -// } -//} - -//module "debian12-sshminion" { -// source = "./modules/sshminion" -// base_configuration = module.base.configuration -// product_version = "4.3-released" -// name = "minssh-debian12" -// image = "debian12" -// use_os_released_updates = false -// ssh_key_path = "./salt/controller/id_rsa.pub" -// -// provider_settings = { -// instance_type = "t3a.medium" -// } -// -// additional_packages = [ "venv-salt-minion" ] -// install_salt_bundle = true -//} - module "rocky8-sshminion" { source = "./modules/sshminion" base_configuration = module.base.configuration @@ -532,13 +510,12 @@ module "sles15sp2-sshminion" { } } - -module "sles15sp4-sshminion" { +module "sles15sp3-sshminion" { source = "./modules/sshminion" base_configuration = module.base.configuration product_version = "4.3-released" - name = "minssh-sles15sp4" - image = "sles15sp4o" + name = "minssh-sles15sp3" + image = "sles15sp3o" sles_registration_code = var.SLES_REGISTRATION_CODE use_os_released_updates = false ssh_key_path = "./salt/controller/id_rsa.pub" @@ -548,12 +525,12 @@ module "sles15sp4-sshminion" { } -module "sles15sp3-sshminion" { +module "sles15sp4-sshminion" { source = "./modules/sshminion" base_configuration = module.base.configuration product_version = "4.3-released" - name = "minssh-sles15sp3" - image = "sles15sp3o" + name = "minssh-sles15sp4" + image = "sles15sp4o" sles_registration_code = var.SLES_REGISTRATION_CODE use_os_released_updates = false ssh_key_path = "./salt/controller/id_rsa.pub" @@ -625,22 +602,28 @@ module "controller" { swap_file_size = null no_mirror = true - is_using_build_image = false + is_using_build_image = false is_using_scc_repositories = true + is_using_paygo_server = true // Cucumber repository configuration for the controller git_username = var.GIT_USER git_password = var.GIT_PASSWORD git_repo = var.CUCUMBER_GITREPO branch = var.CUCUMBER_BRANCH + server_instance_id = module.server.configuration.id + server_configuration = module.server.configuration proxy_configuration = module.proxy.configuration + sle12_paygo_minion_configuration = module.sles12sp5-paygo-minion.configuration + sle15_paygo_minion_configuration = module.sles15sp5-paygo-minion.configuration + sleforsap15_paygo_minion_configuration = module.slesforsap15sp5-paygo-minion.configuration + sle12sp5_client_configuration = module.sles12sp5-client.configuration sle12sp5_minion_configuration = module.sles12sp5-minion.configuration sle12sp5_sshminion_configuration = module.sles12sp5-sshminion.configuration - sle15sp2_client_configuration = module.sles15sp2-client.configuration sle15sp2_minion_configuration = module.sles15sp2-minion.configuration sle15sp2_sshminion_configuration = module.sles15sp2-sshminion.configuration @@ -662,12 +645,6 @@ module "controller" { ubuntu2204_minion_configuration = module.ubuntu2204-minion.configuration ubuntu2204_sshminion_configuration = module.ubuntu2204-sshminion.configuration -// debian11_minion_configuration = module.debian11-minion.configuration -// debian11_sshminion_configuration = module.debian11-sshminion.configuration - -// debian12_minion_configuration = module.debian12-minion.configuration -// debian12_sshminion_configuration = module.debian12-sshminion.configuration - rhel9_minion_configuration = module.rhel9-minion.configuration } @@ -692,3 +669,7 @@ output "configuration" { } } } + +output "server_instance_id" { + value = module.server.configuration.id +} diff --git a/terracumber_config/tf_files/aws_mirror.tf b/terracumber_config/tf_files/aws_mirror.tf index c1482c275..60117b8f9 100644 --- a/terracumber_config/tf_files/aws_mirror.tf +++ b/terracumber_config/tf_files/aws_mirror.tf @@ -153,7 +153,7 @@ module "mirror" { provider_settings = { public_instance = true } - image = "opensuse154o" + image = "opensuse155o" } diff --git a/terracumber_config/tf_files/local_mirror.tf b/terracumber_config/tf_files/local_mirror.tf index 3d118c815..ad7f3df7b 100644 --- a/terracumber_config/tf_files/local_mirror.tf +++ b/terracumber_config/tf_files/local_mirror.tf @@ -106,7 +106,7 @@ module "base" { cc_password = var.SCC_PASSWORD name_prefix = "mirror-mu-aws-" images = [ - "opensuse154o"] + "opensuse155o"] provider_settings = { pool = local.pool @@ -123,7 +123,7 @@ module "mirror" { customize_minima_file = "mirror/etc/minima-customize.yaml" synchronize_immediately = true disable_cron = true - image = "opensuse154o" + image = "opensuse155o" volume_provider_settings = { pool = local.pool // uncomment next line to use existing snapshot as starting point From d8602555e12d7758800cfe3e8d5433768578be86 Mon Sep 17 00:00:00 2001 From: Maxime Noel Date: Wed, 13 Dec 2023 16:07:23 +1300 Subject: [PATCH 05/10] Update with parameter tested in pipeline --- ...EManager-4.3-build-validation-paygo-AWS.tf | 231 ++++-------------- 1 file changed, 50 insertions(+), 181 deletions(-) diff --git a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf index 075f1b5d5..cad7cb8f9 100644 --- a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf +++ b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf @@ -76,6 +76,18 @@ variable "MIRROR"{ default = null } + +// sumaform specific variables +variable "SCC_USER" { + type = string + default = null +} + +variable "SCC_PASSWORD" { + type = string + default = null +} + variable "AVAILABILITY_ZONE" { type = string default = null @@ -128,7 +140,7 @@ module "base" { testsuite = true use_avahi = false use_eip_bastion = false - + is_server_paygo_instance = true provider_settings = { availability_zone = var.AVAILABILITY_ZONE region = var.REGION @@ -158,7 +170,6 @@ module "server" { product_version = "paygo" image = "suma-server-43-ltd-paygo" repository_disk_size = 1500 - # server_registration_code = var.SERVER_REGISTRATION_CODE auto_accept = false monitored = false @@ -173,7 +184,6 @@ module "server" { publish_private_ssl_key = false use_os_released_updates = false disable_download_tokens = false - is_paygo_instance = true ssh_key_path = "./salt/controller/id_rsa.pub" provider_settings = { instance_type = "m6a.xlarge" @@ -279,43 +289,6 @@ module "sles12sp5-client" { //sle12sp5-client_additional_repos } -module "sles15sp2-client" { - source = "./modules/client" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "cli-sles15sp2" - image = "sles15sp2o" - server_configuration = module.server.configuration - sles_registration_code = var.SLES_REGISTRATION_CODE - auto_register = false - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - provider_settings = { - instance_type = "t3a.medium" - } - - //sle15sp2-client_additional_repos -} - -module "sles15sp3-client" { - - source = "./modules/client" - base_configuration = module.base.configuration - name = "cli-sles15sp3" - image = "sles15sp3o" - product_version = "4.3-released" - server_configuration = module.server.configuration - sles_registration_code = var.SLES_REGISTRATION_CODE - auto_register = false - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - provider_settings = { - instance_type = "t3a.medium" - } - - //sle15sp3-client_additional_repos -} - module "sles15sp4-client" { source = "./modules/client" @@ -335,24 +308,6 @@ module "sles15sp4-client" { //sle15sp4-client_additional_repos } -module "ubuntu2004-minion" { - source = "./modules/minion" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "min-ubuntu2004" - image = "ubuntu2004" - server_configuration = module.server.configuration - auto_connect_to_master = false - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - - provider_settings = { - instance_type = "t3a.medium" - } - - //ubuntu2004-minion_additional_repos -} - module "rocky8-minion" { source = "./modules/minion" base_configuration = module.base.configuration @@ -392,30 +347,12 @@ module "sles12sp5-minion" { //sle12sp5-minion_additional_repos } -module "sles15sp2-minion" { +module "sles15sp4-byos-minion" { source = "./modules/minion" base_configuration = module.base.configuration product_version = "4.3-released" - name = "min-sles15sp2" - image = "sles15sp2o" - server_configuration = module.server.configuration - sles_registration_code = var.SLES_REGISTRATION_CODE - auto_connect_to_master = false - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - provider_settings = { - instance_type = "t3a.medium" - } - - //sle15sp2-minion_additional_repos -} - -module "sles15sp3-minion" { - source = "./modules/minion" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "min-sles15sp3" - image = "sles15sp3o" + name = "min-sles15sp4-byos" + image = "sles15sp4o" server_configuration = module.server.configuration sles_registration_code = var.SLES_REGISTRATION_CODE auto_connect_to_master = false @@ -425,7 +362,7 @@ module "sles15sp3-minion" { instance_type = "t3a.medium" } - //sle15sp3-minion_additional_repos + //sle15sp4-minion_additional_repos } @@ -448,38 +385,26 @@ module "sles15sp4-minion" { } -module "ubuntu2004-sshminion" { - source = "./modules/sshminion" +module "sles15sp5-minion" { + source = "./modules/minion" base_configuration = module.base.configuration product_version = "4.3-released" - name = "minssh-ubuntu2004" - image = "ubuntu2004" + name = "min-sles15sp5" + image = "sles15sp5o" + server_configuration = module.server.configuration + sles_registration_code = var.SLES_REGISTRATION_CODE + auto_connect_to_master = false use_os_released_updates = false ssh_key_path = "./salt/controller/id_rsa.pub" - provider_settings = { instance_type = "t3a.medium" } -} -module "rocky8-sshminion" { - source = "./modules/sshminion" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "minssh-rocky8" - image = "rocky8" - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - - additional_packages = [ "venv-salt-minion" ] - install_salt_bundle = true - - provider_settings = { - instance_type = "t3a.medium" - } + //sle15sp5-minion_additional_repos } + module "sles12sp5-sshminion" { source = "./modules/sshminion" base_configuration = module.base.configuration @@ -496,35 +421,6 @@ module "sles12sp5-sshminion" { additional_packages = [ "chrony" ] } -module "sles15sp2-sshminion" { - source = "./modules/sshminion" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "minssh-sles15sp2" - image = "sles15sp2o" - sles_registration_code = var.SLES_REGISTRATION_CODE - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - provider_settings = { - instance_type = "t3a.medium" - } -} - -module "sles15sp3-sshminion" { - source = "./modules/sshminion" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "minssh-sles15sp3" - image = "sles15sp3o" - sles_registration_code = var.SLES_REGISTRATION_CODE - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - provider_settings = { - instance_type = "t3a.medium" - } - -} - module "sles15sp4-sshminion" { source = "./modules/sshminion" base_configuration = module.base.configuration @@ -537,73 +433,60 @@ module "sles15sp4-sshminion" { provider_settings = { instance_type = "t3a.medium" } - } -module "rhel9-minion" { - source = "./modules/minion" +module "sles15sp5-sshminion" { + source = "./modules/sshminion" base_configuration = module.base.configuration - server_configuration = module.server.configuration product_version = "4.3-released" - name = "min-rhel9" - image = "rhel9" - auto_connect_to_master = false + name = "minssh-sles15sp5" + image = "sles15sp5o" + sles_registration_code = var.SLES_REGISTRATION_CODE use_os_released_updates = false ssh_key_path = "./salt/controller/id_rsa.pub" - install_salt_bundle = true provider_settings = { instance_type = "t3a.medium" } - //rhel9-minion_additional_repos - } -module "ubuntu2204-sshminion" { + +module "rocky8-sshminion" { source = "./modules/sshminion" base_configuration = module.base.configuration product_version = "4.3-released" - name = "minssh-ubuntu2204" - image = "ubuntu2204" + name = "minssh-rocky8" + image = "rocky8" use_os_released_updates = false ssh_key_path = "./salt/controller/id_rsa.pub" - provider_settings = { - instance_type = "t3a.medium" - } -} + additional_packages = [ "venv-salt-minion" ] + install_salt_bundle = true -module "ubuntu2204-minion" { - source = "./modules/minion" - base_configuration = module.base.configuration - server_configuration = module.server.configuration - product_version = "4.3-released" - name = "min-ubuntu2204" - image = "ubuntu2204" - auto_connect_to_master = false - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" provider_settings = { instance_type = "t3a.medium" } - //ubuntu2204-minion_additional_repos - } module "controller" { source = "./modules/controller" - base_configuration = module.base.configuration name = "ctl" provider_settings = { instance_type = "c6i.xlarge" } + base_configuration = merge(module.base.configuration, + { + cc_username = var.SCC_USER + cc_password = var.SCC_PASSWORD + }) + swap_file_size = null no_mirror = true is_using_build_image = false - is_using_scc_repositories = true + is_using_scc_repositories = false is_using_paygo_server = true // Cucumber repository configuration for the controller git_username = var.GIT_USER @@ -616,36 +499,22 @@ module "controller" { server_configuration = module.server.configuration proxy_configuration = module.proxy.configuration - sle12_paygo_minion_configuration = module.sles12sp5-paygo-minion.configuration - sle15_paygo_minion_configuration = module.sles15sp5-paygo-minion.configuration - sleforsap15_paygo_minion_configuration = module.slesforsap15sp5-paygo-minion.configuration + sle12sp5_paygo_minion_configuration = module.sles12sp5-paygo-minion.configuration + sle15sp4_byos_minion_configuration = module.sles15sp4-byos-minion.configuration + sle15sp5_paygo_minion_configuration = module.sles15sp5-paygo-minion.configuration + sleforsap15sp5_paygo_minion_configuration = module.slesforsap15sp5-paygo-minion.configuration sle12sp5_client_configuration = module.sles12sp5-client.configuration sle12sp5_minion_configuration = module.sles12sp5-minion.configuration sle12sp5_sshminion_configuration = module.sles12sp5-sshminion.configuration - sle15sp2_client_configuration = module.sles15sp2-client.configuration - sle15sp2_minion_configuration = module.sles15sp2-minion.configuration - sle15sp2_sshminion_configuration = module.sles15sp2-sshminion.configuration - - sle15sp3_client_configuration = module.sles15sp3-client.configuration - sle15sp3_minion_configuration = module.sles15sp3-minion.configuration - sle15sp3_sshminion_configuration = module.sles15sp3-sshminion.configuration - sle15sp4_client_configuration = module.sles15sp4-client.configuration sle15sp4_minion_configuration = module.sles15sp4-minion.configuration sle15sp4_sshminion_configuration = module.sles15sp4-sshminion.configuration - rocky8_minion_configuration = module.rocky8-minion.configuration - rocky8_sshminion_configuration = module.rocky8-sshminion.configuration - - ubuntu2004_minion_configuration = module.ubuntu2004-minion.configuration - ubuntu2004_sshminion_configuration = module.ubuntu2004-sshminion.configuration - - ubuntu2204_minion_configuration = module.ubuntu2204-minion.configuration - ubuntu2204_sshminion_configuration = module.ubuntu2204-sshminion.configuration + sle15sp5_minion_configuration = module.sles15sp5-minion.configuration - rhel9_minion_configuration = module.rhel9-minion.configuration + rocky8_minion_configuration = module.rocky8-minion.configuration } From 3aca8da3bd4d066626c9076cc9dbef5b54a6496d Mon Sep 17 00:00:00 2001 From: Maxime Noel Date: Wed, 13 Dec 2023 22:39:50 +1300 Subject: [PATCH 06/10] last fixes --- .../common/pipeline-build-validation-aws.groovy | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy b/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy index fd19b3f87..4cf1a5a4b 100644 --- a/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy +++ b/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy @@ -456,6 +456,10 @@ def run(params) { sh "./terracumber-cli ${common_params} --logfile ${resultdirbuild}/mail.log --runstep mail" // Clean up old results sh "./clean-old-results -r ${resultdir}" + // Fail pipeline if paygo client stages failed + if (client_paygo_stage_result_fail) { + error("Paygo client stage failed") + } // Fail pipeline if client stages failed if (client_stage_result_fail) { error("Client stage failed") @@ -487,15 +491,12 @@ def clientTestingStages(capybara_timeout, default_timeout, minion_type = 'defaul // Load JSON matching non MU repositories data def json_matching_non_MU_data = readJSON(file: env.non_MU_channels_tasks_file) - println minion_type //Get minion list from terraform state list command def nodesHandler = getNodesHandler(minion_type) - println nodesHandler.nodeList def mu_sync_status = nodesHandler.MUSyncStatus // Construct a stage list for each node. nodesHandler.nodeList.each { node -> - println("Create tests for pago") tests["${node}"] = { // Generate a temporary list that comprises of all the minions except the one currently undergoing testing. // This list is utilized to establish an SSH session exclusively with the minion undergoing testing. From 882615812efe13790c73fa66a5c8f2fed5b7073c Mon Sep 17 00:00:00 2001 From: Maxime Noel Date: Thu, 14 Dec 2023 09:44:18 +1300 Subject: [PATCH 07/10] add missing paygo argument --- .../environments/common/pipeline-build-validation-aws.groovy | 2 +- .../environments/manager-4.3-qe-build-validation-AWS | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy b/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy index 4cf1a5a4b..1c6753561 100644 --- a/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy +++ b/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy @@ -288,7 +288,7 @@ def run(params) { /** Proxy stages end **/ /** PAYGO stages begin **/ - if (params.paygo_stages) { + if (params.enable_paygo_stages) { // Call the minion testing. try { stage('Clients paygo stages') { diff --git a/jenkins_pipelines/environments/manager-4.3-qe-build-validation-AWS b/jenkins_pipelines/environments/manager-4.3-qe-build-validation-AWS index 573fb20dc..428591c2f 100644 --- a/jenkins_pipelines/environments/manager-4.3-qe-build-validation-AWS +++ b/jenkins_pipelines/environments/manager-4.3-qe-build-validation-AWS @@ -47,6 +47,7 @@ node('sumaform-cucumber-provo') { booleanParam(name: 'enable_proxy_stages', defaultValue: true, description: 'Run Proxy stages'), booleanParam(name: 'enable_monitoring_stages', defaultValue: true, description: 'Run Monitoring stages'), booleanParam(name: 'enable_client_stages', defaultValue: true, description: 'Run Client stages'), + booleanParam(name: 'enable_paygo_stages', defaultValue: false, description: 'Run Client stages'), booleanParam(name: 'must_add_MU_repositories', defaultValue: true, description: 'Add MU channels'), booleanParam(name: 'must_add_non_MU_repositories', defaultValue: true, description: 'Add non MU channels'), booleanParam(name: 'must_add_keys', defaultValue: true, description: 'Add Activation Keys'), From 61cc3ceb3861dd67d0366b38b59a5940b4fd6167 Mon Sep 17 00:00:00 2001 From: Maxime Noel Date: Thu, 14 Dec 2023 14:08:11 +1300 Subject: [PATCH 08/10] Dont execute smoke test for BYOS client --- .../environments/common/pipeline-build-validation-aws.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy b/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy index 1c6753561..ccc6de99a 100644 --- a/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy +++ b/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy @@ -603,7 +603,7 @@ def clientTestingStages(capybara_timeout, default_timeout, minion_type = 'defaul } } stage("Run Smoke Tests ${node}") { - if (params.must_run_tests) { + if (params.must_run_tests && !node.contains('byos')) { if (params.confirm_before_continue) { input 'Press any key to start running the smoke tests' } From 6fca35b641a3e116d98a2b26e636ad20d76f3917 Mon Sep 17 00:00:00 2001 From: Maxime Noel Date: Thu, 14 Dec 2023 14:32:10 +1300 Subject: [PATCH 09/10] remove rocky8 support from paygo testing --- ...EManager-4.3-build-validation-paygo-AWS.tf | 41 ------------------- 1 file changed, 41 deletions(-) diff --git a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf index cad7cb8f9..1a4840b11 100644 --- a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf +++ b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf @@ -308,26 +308,6 @@ module "sles15sp4-client" { //sle15sp4-client_additional_repos } -module "rocky8-minion" { - source = "./modules/minion" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "min-rocky8" - image = "rocky8" - server_configuration = module.server.configuration - auto_connect_to_master = false - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - - additional_packages = [ "venv-salt-minion" ] - install_salt_bundle = true - provider_settings = { - instance_type = "t3a.medium" - } - - //rocky8-minion_additional_repos -} - module "sles12sp5-minion" { source = "./modules/minion" base_configuration = module.base.configuration @@ -451,25 +431,6 @@ module "sles15sp5-sshminion" { } - -module "rocky8-sshminion" { - source = "./modules/sshminion" - base_configuration = module.base.configuration - product_version = "4.3-released" - name = "minssh-rocky8" - image = "rocky8" - use_os_released_updates = false - ssh_key_path = "./salt/controller/id_rsa.pub" - - additional_packages = [ "venv-salt-minion" ] - install_salt_bundle = true - - provider_settings = { - instance_type = "t3a.medium" - } - -} - module "controller" { source = "./modules/controller" name = "ctl" @@ -514,8 +475,6 @@ module "controller" { sle15sp5_minion_configuration = module.sles15sp5-minion.configuration - rocky8_minion_configuration = module.rocky8-minion.configuration - } output "bastion_public_name" { From 57037d87afd748d850ef7340a8df2327077176ad Mon Sep 17 00:00:00 2001 From: Maxime Noel Date: Fri, 15 Dec 2023 11:05:56 +1300 Subject: [PATCH 10/10] Fix with last reviews --- .../pipeline-build-validation-aws.groovy | 28 +++++++++---------- ...EManager-4.3-build-validation-paygo-AWS.tf | 11 -------- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy b/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy index ccc6de99a..5839c5950 100644 --- a/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy +++ b/jenkins_pipelines/environments/common/pipeline-build-validation-aws.groovy @@ -296,7 +296,7 @@ def run(params) { } } catch (Exception ex) { - println('ERROR: one or more clients have failed') + println("ERROR: one or more clients have failed.\nException: ${ex}") client_paygo_stage_result_fail = true } stage('Paygo testing') { @@ -356,7 +356,7 @@ def run(params) { } } } catch (Exception ex) { - println('Monitoring server bootstrap failed ') + println("Monitoring server bootstrap failed.\nException: ${ex}") monitoring_stage_result_fail = true } } @@ -370,7 +370,7 @@ def run(params) { } } catch (Exception ex) { - println('ERROR: one or more clients have failed') + println("ERROR: one or more clients have failed\\nException: ${ex}") client_stage_result_fail = true } } @@ -398,7 +398,7 @@ def run(params) { } } } catch (Exception ex) { - println('ERROR: Retail testing fail') + println("ERROR: Retail testing fail.\\nException: ${ex}") retail_stage_result_fail = true } @@ -417,7 +417,7 @@ def run(params) { } } } catch (Exception ex) { - println('ERROR: Containerization failed') + println("ERROR: Containerization failed\\nException: ${ex}") containerization_stage_result_fail = true } } @@ -432,13 +432,13 @@ def run(params) { try { sh "./terracumber-cli ${common_params} --logfile ${resultdirbuild}/testsuite.log --runstep cucumber --cucumber-cmd '${env.exports} cd /root/spacewalk/testsuite; rake cucumber:build_validation_finishing'" } catch(Exception ex) { - println("ERROR: rake cucumber:build_validation_finishing failed") + println("ERROR: rake cucumber:build_validation_finishing failed.\\nException: ${ex}") result_error = 1 } try { sh "./terracumber-cli ${common_params} --logfile ${resultdirbuild}/testsuite.log --runstep cucumber --cucumber-cmd '${env.exports} cd /root/spacewalk/testsuite; rake utils:generate_test_report'" } catch(Exception ex) { - println("ERROR: rake utils:generate_test_report failed") + println("ERROR: rake utils:generate_test_report failed.\\nException: ${ex}") result_error = 1 } sh "./terracumber-cli ${common_params} --logfile ${resultdirbuild}/testsuite.log --runstep getresults" @@ -632,14 +632,14 @@ def getNodesHandler(minionType = 'default') { returnStdout: true) String[] moduleList = modules.split("\n") moduleList.each { lane -> - def instanceList = lane.tokenize(".") - if ( minionType == 'default' && (instanceList[1].contains('minion') || instanceList[1].contains('client'))) { - nodeList.add(instanceList[1].replaceAll('-', '_').replaceAll('sshminion', 'ssh_minion').replaceAll('sles', 'sle')) - envVar.add(instanceList[1].replaceAll('-', '_').replaceAll('sles', 'sle').toUpperCase()) + def nodeName = lane.tokenize(".")[1] + if ( minionType == 'default' && (nodeName.contains('minion') || nodeName.contains('client'))) { + nodeList.add(nodeName.replaceAll('-', '_').replaceAll('sshminion', 'ssh_minion').replaceAll('sles', 'sle')) + envVar.add(nodeName.replaceAll('-', '_').replaceAll('sles', 'sle').toUpperCase()) } - else if (( minionType == 'paygo' && (instanceList[1].contains('paygo') || instanceList[1].contains('byos')))) { - nodeList.add(instanceList[1].replaceAll('-', '_').replaceAll('sshminion', 'ssh_minion').replaceAll('sles', 'sle')) - envVar.add(instanceList[1].replaceAll('-', '_').replaceAll('sles', 'sle').toUpperCase()) + else if (( minionType == 'paygo' && (nodeName.contains('paygo') || nodeName.contains('byos')))) { + nodeList.add(nodeName.replaceAll('-', '_').replaceAll('sshminion', 'ssh_minion').replaceAll('sles', 'sle')) + envVar.add(nodeName.replaceAll('-', '_').replaceAll('sles', 'sle').toUpperCase()) } } // Convert jenkins minions list parameter to list diff --git a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf index 1a4840b11..3c787974e 100644 --- a/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf +++ b/terracumber_config/tf_files/SUSEManager-4.3-build-validation-paygo-AWS.tf @@ -217,8 +217,6 @@ module "proxy" { instance_type = "c6i.large" } - //proxy_additional_repos - } module "sles12sp5-paygo-minion" { @@ -286,7 +284,6 @@ module "sles12sp5-client" { } additional_packages = [ "chrony" ] - //sle12sp5-client_additional_repos } module "sles15sp4-client" { @@ -305,7 +302,6 @@ module "sles15sp4-client" { instance_type = "t3a.medium" } - //sle15sp4-client_additional_repos } module "sles12sp5-minion" { @@ -324,7 +320,6 @@ module "sles12sp5-minion" { } additional_packages = [ "chrony" ] - //sle12sp5-minion_additional_repos } module "sles15sp4-byos-minion" { @@ -342,8 +337,6 @@ module "sles15sp4-byos-minion" { instance_type = "t3a.medium" } - //sle15sp4-minion_additional_repos - } module "sles15sp4-minion" { @@ -361,8 +354,6 @@ module "sles15sp4-minion" { instance_type = "t3a.medium" } - //sle15sp4-minion_additional_repos - } module "sles15sp5-minion" { @@ -380,8 +371,6 @@ module "sles15sp5-minion" { instance_type = "t3a.medium" } - //sle15sp5-minion_additional_repos - }