Skip to content

Commit

Permalink
Implement IBSm add repo with ansible playbook
Browse files Browse the repository at this point in the history
POC in qesap regression of managing the test repo in the IBSm using
Ansible.
  • Loading branch information
mpagot committed May 24, 2024
1 parent 97bff81 commit 961599e
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 16 deletions.
50 changes: 50 additions & 0 deletions data/sles4sap/qe_sap_deployment/qesap_azure_add_repo.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# SUSE's openQA tests
#
# Copyright SUSE LLC
# SPDX-License-Identifier: FSFAP
# Maintainer: QE-SAP <qe-sap@suse.de>
# Summary: Generic yaml template for use with qe-sap-deployment project: https://github.com/SUSE/qe-sap-deployment
provider: 'azure'
apiver: 3
terraform:
variables:
az_region: '%REGION%'
deployment_name: '%DEPLOYMENTNAME%'
os_image: '%OS_VER%'
public_key: '%SLES4SAP_PUBSSHKEY%'
hana_remote_python: '%ANSIBLE_REMOTE_PYTHON%'
iscsi_remote_python: '%ANSIBLE_REMOTE_PYTHON%'
vnet_address_range: '%VNET_ADDRESS_RANGE%'
subnet_address_range: '%SUBNET_ADDRESS_RANGE%'
ansible:
roles_path: '%ANSIBLE_ROLES%'
az_storage_account_name: '%HANA_ACCOUNT%'
az_container_name: '%HANA_CONTAINER%'
az_sas_token: '%HANA_TOKEN%'
hana_media:
- '%HANA_SAR%'
- '%HANA_CLIENT_SAR%'
- '%HANA_SAPCAR%'
hana_vars:
sap_hana_install_software_directory: /hana/shared/install
sap_hana_install_master_password: 'DoNotUseThisPassw0rd'
sap_hana_install_sid: 'HA0'
sap_hana_install_instance_number: '00'
sap_domain: 'qe-test.example.com'
primary_site: 'goofy'
secondary_site: 'miky'
create:
- %REGISTRATION_PLAYBOOK%.yaml -e reg_code='%SCC_REGCODE_SLES4SAP%' -e email_address='testing@suse.com'
- ibsm.yaml -e ibsm_ip=%MIRROR_IP% -e download_hostname='download.suse.de' -e repos=%REPOS%
- fully-patch-system.yaml
- pre-cluster.yaml
- sap-hana-preconfigure.yaml -e use_reboottimeout=900
- cluster_sbd_prep.yaml
- sap-hana-storage.yaml
- sap-hana-download-media.yaml
- sap-hana-install.yaml
- sap-hana-system-replication.yaml
- sap-hana-system-replication-hooks.yaml
- sap-hana-cluster.yaml
destroy:
- deregister.yaml
20 changes: 14 additions & 6 deletions tests/sles4sap/qesapdeployment/configure.pm
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@ sub run {

# Init al the PC gears (ssh keys)
my $provider = $self->provider_factory();
my $provider_setting = get_required_var('PUBLIC_CLOUD_PROVIDER');

# Needed to create the SAS URI token
if (!check_var('PUBLIC_CLOUD_PROVIDER', 'AZURE')) {
if ($provider_setting ne 'AZURE') {
my $azure_client = publiccloud::azure_client->new();
$azure_client->init();
}
Expand All @@ -32,25 +33,32 @@ sub run {
if (get_var('QESAPDEPLOY_CLUSTER_OS_VER')) {
$variables{OS_VER} = get_var('QESAPDEPLOY_CLUSTER_OS_VER');
}
elsif (check_var('PUBLIC_CLOUD_PROVIDER', 'AZURE')) {
elsif ($provider_setting eq 'AZURE') {
$variables{STORAGE_ACCOUNT_NAME} = get_required_var('STORAGE_ACCOUNT_NAME');
$variables{OS_URI} = $provider->get_blob_uri(get_required_var('PUBLIC_CLOUD_IMAGE_LOCATION'));
}
else
{
$variables{OS_VER} = $provider->get_image_id();
}
$variables{OS_OWNER} = get_var('QESAPDEPLOY_CLUSTER_OS_OWNER', 'amazon') if check_var('PUBLIC_CLOUD_PROVIDER', 'EC2');
$variables{OS_OWNER} = get_var('QESAPDEPLOY_CLUSTER_OS_OWNER', 'amazon') if ($provider_setting eq 'EC2');

$variables{USE_SAPCONF} = get_var('QESAPDEPLOY_USE_SAPCONF', 'false');
$variables{SLES4SAP_PUBSSHKEY} = get_ssh_private_key_path() . '.pub';
$variables{REGISTRATION_PLAYBOOK} = get_var('QESAPDEPLOY_REGISTRATION_PLAYBOOK', 'registration');
$variables{REGISTRATION_PLAYBOOK} =~ s/\.yaml$//;
$variables{SUSECONNECT} = get_var('QESAPDEPLOY_USE_SUSECONNECT', 'false');

if (($provider_setting eq 'AZURE') && get_var("QESAPDEPLOY_IBSMIRROR_RESOURCE_GROUP")) {
$variables{MIRROR_IP} = get_required_var("QESAPDEPLOY_IBSMIRROR_IP");
# INCIDENT_REPO is the "official" setting name as configured by the official bot
# QESAPDEPLOY_INCIDENT_REPO is to be able to run this test in other context
$variables{REPOS} = get_var("INCIDENT_REPO", get_var("QESAPDEPLOY_INCIDENT_REPO"));
}

# Only BYOS images needs it
$variables{SCC_REGCODE_SLES4SAP} = get_var('SCC_REGCODE_SLES4SAP', '');
if (check_var('PUBLIC_CLOUD_PROVIDER', 'EC2')) {
if ($provider_setting eq 'EC2') {
$variables{HANA_INSTANCE_TYPE} = get_var('QESAPDEPLOY_HANA_INSTANCE_TYPE', 'r6i.xlarge');
}

Expand All @@ -74,12 +82,12 @@ sub run {
$variables{HANA_SAPCAR} = get_required_var('QESAPDEPLOY_IMDB_SERVER');
$variables{ANSIBLE_REMOTE_PYTHON} = get_var('QESAPDEPLOY_ANSIBLE_REMOTE_PYTHON', '/usr/bin/python3');
$variables{FENCING} = get_var('QESAPDEPLOY_FENCING', 'sbd');
if (check_var('PUBLIC_CLOUD_PROVIDER', 'GCE')) {
if ($provider_setting eq 'GCE') {
$variables{HANA_DATA_DISK_TYPE} = get_var('QESAPDEPLOY_HANA_DISK_TYPE', 'pd-ssd');
$variables{HANA_LOG_DISK_TYPE} = get_var('QESAPDEPLOY_HANA_DISK_TYPE', 'pd-ssd');
}

if (check_var('PUBLIC_CLOUD_PROVIDER', 'AZURE')) {
if ($provider_setting eq 'AZURE') {
my %peering_settings = qesap_az_calculate_address_range(slot => get_required_var('WORKER_ID'));
$variables{VNET_ADDRESS_RANGE} = $peering_settings{vnet_address_range};
$variables{SUBNET_ADDRESS_RANGE} = $peering_settings{subnet_address_range};
Expand Down
25 changes: 17 additions & 8 deletions tests/sles4sap/qesapdeployment/deploy.pm
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,25 @@ sub run {
my $inventory = qesap_get_inventory(provider => $provider);
upload_logs($inventory, failok => 1);

# Set up azure native fencing
if (get_var('QESAPDEPLOY_FENCING') eq 'native' && $provider eq 'AZURE') {
my @nodes = qesap_get_nodes_names(provider => $provider);
foreach my $host_name (@nodes) {
if ($host_name =~ /hana/) {
qesap_az_setup_native_fencing_permissions(
vm_name => $host_name,
resource_group => qesap_az_get_resource_group());
if ($provider_setting eq 'AZURE') {
my $rg = qesap_az_get_resource_group();
# Set up azure native fencing
if (get_var('QESAPDEPLOY_FENCING') eq 'native') {
my @nodes = qesap_get_nodes_names(provider => $provider);
foreach my $host_name (@nodes) {
if ($host_name =~ /hana/) {
qesap_az_setup_native_fencing_permissions(
vm_name => $host_name,
resource_group => $rg);
}
}
}

if (get_var("QESAPDEPLOY_IBSMIRROR_RESOURCE_GROUP")) {
qesap_az_vnet_peering(
source_group => $rg,
target_group => get_var('QESAPDEPLOY_IBSMIRROR_RESOURCE_GROUP'));
}
}

my @remote_ips = qesap_remote_hana_public_ips;
Expand Down
7 changes: 5 additions & 2 deletions tests/sles4sap/qesapdeployment/test_cluster.pm
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,11 @@ sub run {
if (get_var("QESAPDEPLOY_IBSMIRROR_RESOURCE_GROUP")) {
my $rg = qesap_az_get_resource_group();
my $ibs_mirror_rg = get_var('QESAPDEPLOY_IBSMIRROR_RESOURCE_GROUP');
qesap_az_vnet_peering(source_group => $rg, target_group => $ibs_mirror_rg);
qesap_add_server_to_hosts(name => 'download.suse.de', ip => get_required_var("QESAPDEPLOY_IBSMIRROR_IP"));
my $lr = qesap_ansible_script_output(
cmd => 'zypper lr',
provider => $provider_setting,
host => '"hana[0]"');
record_info('list of repo in zypper', $lr);
qesap_az_vnet_peering_delete(source_group => $rg, target_group => $ibs_mirror_rg);
}
}
Expand Down

0 comments on commit 961599e

Please sign in to comment.