def satellite6_capsule_zstream_upgrade(): """Upgrades Capsule to its latest zStream version Note: For zstream upgrade both 'To' and 'From' version should be same FROM_VERSION Current satellite version which will be upgraded to latest version TO_VERSION Next satellite version to which satellite will be upgraded """ logger.highlight('\n========== CAPSULE UPGRADE =================\n') from_version = os.environ.get('FROM_VERSION') to_version = os.environ.get('TO_VERSION') if not from_version == to_version: logger.warning('zStream Upgrade on Capsule cannot be performed as ' 'FROM and TO versions are not same!') sys.exit(1) major_ver = distro_info()[1] set_yum_debug_level() if os.environ.get('CAPSULE_URL'): disable_repos('rhel-{0}-server-satellite-capsule-{1}-rpms'.format( major_ver, from_version)) # Check what repos are set run('yum repolist') if from_version == '6.1' and major_ver == '6': enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) if from_version == '6.0': # Stop katello services, except mongod run('for i in qpidd pulp_workers pulp_celerybeat ' 'pulp_resource_manager httpd; do service $i stop; done') run('yum clean all', warn_only=True) logger.info('Updating system and capsule packages ... ') preyum_time = datetime.now().replace(microsecond=0) update_packages(quiet=False) postyum_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for capsule packages update - {}'.format( str(postyum_time-preyum_time))) # Rebooting the system to see possible errors if os.environ.get('RHEV_CAP_HOST'): reboot(120) if from_version == '6.0': # Stopping the services again which started in reboot run('for i in qpidd pulp_workers pulp_celerybeat ' 'pulp_resource_manager httpd; do service $i stop; done') setup_capsule_firewall() preup_time = datetime.now().replace(microsecond=0) if to_version == '6.0': run('katello-installer --upgrade') elif to_version == '6.1': run('capsule-installer --upgrade') else: run('satellite-installer --scenario capsule --upgrade ') postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Capsule Upgrade - {}'.format( str(postup_time-preup_time))) run('katello-service status', warn_only=True)
def satellite6_capsule_zstream_upgrade(cap_host): """Upgrades Capsule to its latest zStream version :param string cap_host: Capsule hostname onto which the capsule upgrade will run Note: For zstream upgrade both 'To' and 'From' version should be same FROM_VERSION Current satellite version which will be upgraded to latest version TO_VERSION Next satellite version to which satellite will be upgraded """ logger.highlight('\n========== CAPSULE UPGRADE =================\n') from_version = os.environ.get('FROM_VERSION') to_version = os.environ.get('TO_VERSION') if not from_version == to_version: logger.warning('zStream Upgrade on Capsule cannot be performed as ' 'FROM and TO versions are not same!') sys.exit(1) major_ver = distro_info()[1] if os.environ.get('CAPSULE_URL'): disable_old_repos('rhel-{0}-server-satellite-capsule-{1}-rpms'.format( major_ver, from_version)) # Check what repos are set run('yum repolist') if from_version == '6.0': # Stop katello services, except mongod run('for i in qpidd pulp_workers pulp_celerybeat ' 'pulp_resource_manager httpd; do service $i stop; done') else: # Stop katello services run('katello-service stop') run('yum clean all', warn_only=True) logger.info('Updating system and capsule packages ... ') preyum_time = datetime.now().replace(microsecond=0) update_packages(quiet=False) postyum_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for capsule packages update - {}'.format( str(postyum_time - preyum_time))) setup_capsule_firewall() preup_time = datetime.now().replace(microsecond=0) if to_version == '6.0': run('katello-installer --upgrade') elif to_version == '6.1': run('capsule-installer --upgrade') else: run('satellite-installer --scenario capsule --upgrade ') postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Capsule Upgrade - {}'.format( str(postup_time - preup_time))) # Rebooting the capsule for kernel update if any reboot(160) host_ssh_availability_check(cap_host) # Check if Capsule upgrade is success run('katello-service status', warn_only=True)
def satellite6_capsule_upgrade(cap_host, sat_host): """Upgrades capsule from existing version to latest version. :param string cap_host: Capsule hostname onto which the capsule upgrade will run :param string sat_host : Satellite hostname from which capsule certs are to be generated The following environment variables affect this command: CAPSULE_URL Optional, defaults to available capsule version in CDN. URL for capsule of latest compose to upgrade. FROM_VERSION Capsule current version, to disable repos while upgrading. e.g '6.1','6.0' TO_VERSION Capsule version to upgrade to and enable repos while upgrading. e.g '6.1','6.2' """ logger.highlight('\n========== CAPSULE UPGRADE =================\n') from_version = os.environ.get('FROM_VERSION') setup_capsule_firewall() major_ver = distro_info()[1] ak_name = os.environ.get('CAPSULE_AK') if os.environ.get( 'CAPSULE_AK') else os.environ.get('RHEV_CAPSULE_AK') run('subscription-manager register --org="Default_Organization" ' '--activationkey={0} --force'.format(ak_name)) disable_old_repos('rhel-{0}-server-satellite-capsule-{1}-rpms'.format( major_ver, from_version)) # setup foreman-maintain setup_foreman_maintain_repo() # Check what repos are set if os.environ.get("FOREMAN_MAINTAIN_CAPSULE_UPGRADE") == 'true': upgrade_using_foreman_maintain(sat_host=False) else: nonfm_upgrade(satellite_upgrade=False, cap_host=cap_host, sat_host=sat_host) # Rebooting the capsule for kernel update if any reboot(160) host_ssh_availability_check(cap_host) # Check if Capsule upgrade is success upgrade_validation()
def nonfm_upgrade(satellite_upgrade=True, cap_host=None, sat_host=None): """ The purpose of this module to perform the upgrade task without foreman-maintain. In this function we setup the repository, stop the katello services, cleanup, and execute satellite upgrade task" :param bool satellite_upgrade: If satellite_upgrade is True then upgrade type satellite otherwise capsule :param bool zstream: Capsule zStream upgrade :param str cap_host: hostname of capsule it used to generate certificate for capsules major version upgrade. :param str sat_host: hostname of satellite used to generate certificate for capsules major version upgrade. : """ # Check what repos are set upgrade_type = "satellite" if satellite_upgrade else "capsule" run('yum repolist') # Stop katello services, except mongod run('katello-service stop') run('yum clean all', warn_only=True) # Updating the packages again after setting sat6 repo logger.info('Updating system and {} packages... '.format(upgrade_type)) preyum_time = datetime.now().replace(microsecond=0) update_packages(quiet=False) postyum_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for system and {} packages update' ' - {}'.format(upgrade_type, str(postyum_time - preyum_time))) # non zStream capsule upgrade if sat_host and cap_host: execute(generate_capsule_certs, cap_host, True, host=sat_host) execute(lambda: run("scp -o 'StrictHostKeyChecking no' {0}-certs.tar " "root@{0}:/home/".format(cap_host)), host=sat_host) setup_capsule_firewall() preup_time = datetime.now().replace(microsecond=0) upgrade_task(upgrade_type, cap_host) else: preup_time = datetime.now().replace(microsecond=0) upgrade_task(upgrade_type) postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Satellite Upgrade - {}'.format( str(postup_time - preup_time)))
def satellite6_capsule_upgrade(): """Upgrades capsule from existing version to latest version. The following environment variables affect this command: ADMIN_PASSWORD Optional, defaults to 'changeme'. Foreman admin password. CAPSULE_URL Optional, defaults to available capsule version in CDN. URL for capsule of latest compose to upgrade. FROM_VERSION Capsule current version, to disable repos while upgrading. e.g '6.1','6.0' TO_VERSION Capsule version to upgrade to and enable repos while upgrading. e.g '6.1','6.2' """ sat_host = env.get('satellite_host') cap_host = env.get('capsule_host') from_version = os.environ.get('FROM_VERSION') to_version = os.environ.get('TO_VERSION') # Setup firewall rules on capsule node setup_capsule_firewall() # Setting Capsule61 Repos major_ver = distro_info()[1] # Re-register Capsule for 6.2 # AS per host unification feature: if there is a host registered where the # Host and Content Host are in different organizations (e.g. host not in # org, and content host in one), the content host will be unregistered as # part of the upgrade process. if to_version == '6.2': ak_name = os.environ.get('CAPSULE_SUBSCRIPTION').split(',')[2].strip( ) if os.environ.get('CAPSULE_SUBSCRIPTION') else os.environ.get( 'RHEV_CAPSULE_AK') run('subscription-manager register --org="Default_Organization" ' '--activationkey={0} --force'.format(ak_name)) # if CDN Upgrade enable cdn repo if os.environ.get('CAPSULE_URL') is None: enable_repos('rhel-{0}-server-satellite-capsule-{1}-rpms'.format( major_ver, to_version)) disable_repos('rhel-{0}-server-satellite-capsule-{1}-rpms'.format( major_ver, from_version)) if from_version == '6.1' and major_ver == '6': enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) if from_version == '6.0': # Stop katello services, except mongod run('for i in qpidd pulp_workers pulp_celerybeat ' 'pulp_resource_manager httpd; do service $i stop; done') run('yum clean all', warn_only=True) print('Wait till packages update ... ') print('YUM UPDATE started at: {0}'.format(time.ctime())) update_packages(quiet=False) print('YUM UPDATE finished at: {0}'.format(time.ctime())) if from_version == '6.0': run('yum install -y capsule-installer', warn_only=True) # Copy answer file from katello to capule installer run('cp /etc/katello-installer/answers.capsule-installer.yaml.rpmsave ' '/etc/capsule-installer/answers.capsule-installer.yaml', warn_only=True) # Generates Capsule Certs file on satelltie and copies in capsule execute( generate_capsule_certs, cap_host, True, host=sat_host ) # Copying the capsule cert to capsule execute(lambda: run("scp -o 'StrictHostKeyChecking no' {0}-certs.tar " "root@{0}:/home/".format(cap_host)), host=sat_host) # Rebooting the system to see possible errors if os.environ.get('RHEV_CAP_HOST'): reboot(120) if to_version == '6.1': # Stopping the services again which started in reboot run('for i in qpidd pulp_workers pulp_celerybeat ' 'pulp_resource_manager httpd; do service $i stop; done') # Setting Up firewall rules setup_capsule_firewall() # Upgrading Katello installer print('CAPSULE UPGRADE started at: {0}'.format(time.ctime())) if to_version == '6.1': run('capsule-installer --upgrade --certs-tar ' '/home/{0}-certs.tar'.format(cap_host)) else: run('satellite-installer --scenario capsule --upgrade ' '--certs-tar /home/{0}-certs.tar'.format(cap_host)) print('CAPSULE UPGRADE finished at: {0}'.format(time.ctime())) # Test The status of all katello services run('katello-service status', warn_only=True)
def satellite_capsule_upgrade(cap_host, sat_host): """Upgrades capsule from existing version to latest version. :param string cap_host: Capsule hostname onto which the capsule upgrade will run :param string sat_host : Satellite hostname from which capsule certs are to be generated The following environment variables affect this command: CAPSULE_URL Optional, defaults to available capsule version in CDN. URL for capsule of latest compose to upgrade. FROM_VERSION Capsule current version, to disable repos while upgrading. e.g '6.1','6.0' TO_VERSION Capsule version to upgrade to and enable repos while upgrading. e.g '6.1','6.2' """ logger.highlight('\n========== CAPSULE UPGRADE =================\n') # Check the capsule sync before upgrade. logger.info("Check the capsule sync after satellite upgrade to verify sync operation " "with n-1 combination") execute(capsule_sync, cap_host, host=sat_host) wait_untill_capsule_sync(cap_host) from_version = settings.upgrade.from_version to_version = settings.upgrade.to_version setup_capsule_firewall() major_ver = settings.upgrade.os[-1] ak_name = settings.upgrade.capsule_ak[settings.upgrade.os] run(f'subscription-manager register --org="Default_Organization" ' f'--activationkey={ak_name} --force') logger.info(f"Activation key {ak_name} registered capsule's all available repository") run("subscription-manager repos --list") maintenance_repo = [RHEL_CONTENTS["maintenance"]["label"]] capsule_repos = [ RHEL_CONTENTS["tools"]["label"], RHEL_CONTENTS["capsule"]["label"], ] with fabric_settings(warn_only=True): if settings.upgrade.distribution == "cdn": enable_disable_repo(enable_repos_name=capsule_repos + maintenance_repo) else: enable_disable_repo(disable_repos_name=maintenance_repo) if from_version != to_version: with fabric_settings(warn_only=True): enable_disable_repo(disable_repos_name=capsule_repos) with fabric_settings(warn_only=True): enable_disable_repo(enable_repos_name=[ f"rhel-{major_ver}-server-ansible-{settings.upgrade.ansible_repo_version}-rpms"]) if settings.upgrade.foreman_maintain_capsule_upgrade: foreman_maintain_package_update() if settings.upgrade.from_version == '6.10': # capsule certs regeneration required prior 6.11 ystream capsule upgrade BZ#2049893 execute(capsule_certs_update, cap_host, host=sat_host) upgrade_using_foreman_maintain(sat_host=False) else: nonfm_upgrade(satellite_upgrade=False, cap_host=cap_host, sat_host=sat_host) # Rebooting the capsule for kernel update if any reboot(160) host_ssh_availability_check(cap_host) # Check if Capsule upgrade is success upgrade_validation(upgrade_type="capsule", satellite_services_action="restart") # Check the capsule sync after upgrade. logger.info("check the capsule sync after capsule upgrade") execute(capsule_sync, cap_host, host=sat_host) wait_untill_capsule_sync(cap_host)
def satellite6_capsule_upgrade(cap_host): """Upgrades capsule from existing version to latest version. :param string cap_host: Capsule hostname onto which the capsule upgrade will run The following environment variables affect this command: CAPSULE_URL Optional, defaults to available capsule version in CDN. URL for capsule of latest compose to upgrade. FROM_VERSION Capsule current version, to disable repos while upgrading. e.g '6.1','6.0' TO_VERSION Capsule version to upgrade to and enable repos while upgrading. e.g '6.1','6.2' """ logger.highlight('\n========== CAPSULE UPGRADE =================\n') sat_host = env.get('satellite_host') from_version = os.environ.get('FROM_VERSION') to_version = os.environ.get('TO_VERSION') set_yum_debug_level() setup_capsule_firewall() major_ver = distro_info()[1] # Re-register Capsule for 6.2 # AS per host unification feature: if there is a host registered where the # Host and Content Host are in different organizations (e.g. host not in # org, and content host in one), the content host will be unregistered as # part of the upgrade process. if to_version == '6.2': ak_name = os.environ.get('CAPSULE_AK') if os.environ.get( 'CAPSULE_AK') else os.environ.get('RHEV_CAPSULE_AK') run('subscription-manager register --org="Default_Organization" ' '--activationkey={0} --force'.format(ak_name)) disable_repos('rhel-{0}-server-satellite-capsule-{1}-rpms'.format( major_ver, from_version)) if from_version == '6.1' and major_ver == '6': enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) # Check what repos are set run('yum repolist') if from_version == '6.0': # Stop katello services, except mongod run('for i in qpidd pulp_workers pulp_celerybeat ' 'pulp_resource_manager httpd; do service $i stop; done') run('yum clean all', warn_only=True) logger.info('Updating system and capsule packages ... ') preyum_time = datetime.now().replace(microsecond=0) update_packages(quiet=False) postyum_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for capsule packages update - {}'.format( str(postyum_time-preyum_time))) if from_version == '6.0': run('yum install -y capsule-installer', warn_only=True) # Copy answer file from katello to capule installer run('cp /etc/katello-installer/answers.capsule-installer.yaml.rpmsave ' '/etc/capsule-installer/answers.capsule-installer.yaml', warn_only=True) execute( generate_capsule_certs, cap_host, True, host=sat_host ) # Copying the capsule cert to capsule execute(lambda: run("scp -o 'StrictHostKeyChecking no' {0}-certs.tar " "root@{0}:/home/".format(cap_host)), host=sat_host) # Rebooting the system to see possible errors if os.environ.get('RHEV_CAP_HOST'): reboot(120) if from_version == '6.0': # Stopping the services again which started in reboot run('for i in qpidd pulp_workers pulp_celerybeat ' 'pulp_resource_manager httpd; do service $i stop; done') setup_capsule_firewall() preup_time = datetime.now().replace(microsecond=0) if to_version == '6.1': run('capsule-installer --upgrade --certs-tar ' '/home/{0}-certs.tar'.format(cap_host)) else: run('satellite-installer --scenario capsule --upgrade ' '--certs-tar /home/{0}-certs.tar'.format(cap_host)) postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Capsule Upgrade - {}'.format( str(postup_time-preup_time))) run('katello-service status', warn_only=True)
def satellite6_capsule_upgrade(cap_host, sat_host): """Upgrades capsule from existing version to latest version. :param string cap_host: Capsule hostname onto which the capsule upgrade will run :param string sat_host : Satellite hostname from which capsule certs are to be generated The following environment variables affect this command: CAPSULE_URL Optional, defaults to available capsule version in CDN. URL for capsule of latest compose to upgrade. FROM_VERSION Capsule current version, to disable repos while upgrading. e.g '6.1','6.0' TO_VERSION Capsule version to upgrade to and enable repos while upgrading. e.g '6.1','6.2' """ logger.highlight('\n========== CAPSULE UPGRADE =================\n') from_version = os.environ.get('FROM_VERSION') to_version = os.environ.get('TO_VERSION') setup_capsule_firewall() major_ver = distro_info()[1] # Re-register Capsule for 6.2 and 6.3 # AS per host unification feature: if there is a host registered where the # Host and Content Host are in different organizations (e.g. host not in # org, and content host in one), the content host will be unregistered as # part of the upgrade process. if to_version in ['6.2', '6.3', '6.4']: ak_name = os.environ.get('CAPSULE_AK') if os.environ.get( 'CAPSULE_AK') else os.environ.get('RHEV_CAPSULE_AK') run('subscription-manager register --org="Default_Organization" ' '--activationkey={0} --force'.format(ak_name)) disable_old_repos('rhel-{0}-server-satellite-capsule-{1}-rpms'.format( major_ver, from_version)) if from_version == '6.1' and major_ver == '6': enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) # setup foreman-maintain setup_foreman_maintain() if to_version in ['6.4'] else None # Check what repos are set run('yum repolist') if from_version == '6.0': # Stop katello services, except mongod run('for i in qpidd pulp_workers pulp_celerybeat ' 'pulp_resource_manager httpd; do service $i stop; done') else: # Stop katello services run('katello-service stop') run('yum clean all', warn_only=True) logger.info('Updating system and capsule packages ... ') preyum_time = datetime.now().replace(microsecond=0) update_packages(quiet=False) postyum_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for capsule packages update - {}'.format( str(postyum_time - preyum_time))) if from_version == '6.0': run('yum install -y capsule-installer', warn_only=True) # Copy answer file from katello to capule installer run( 'cp /etc/katello-installer/answers.capsule-installer.yaml.rpmsave ' '/etc/capsule-installer/answers.capsule-installer.yaml', warn_only=True) execute(generate_capsule_certs, cap_host, True, host=sat_host) # Copying the capsule cert to capsule execute(lambda: run("scp -o 'StrictHostKeyChecking no' {0}-certs.tar " "root@{0}:/home/".format(cap_host)), host=sat_host) setup_capsule_firewall() preup_time = datetime.now().replace(microsecond=0) if to_version == '6.1': run('capsule-installer --upgrade --certs-tar ' '/home/{0}-certs.tar'.format(cap_host)) elif to_version == '6.3' or to_version == '6.4': run('satellite-installer --scenario capsule --upgrade ' '--certs-tar /home/{0}-certs.tar ' '--certs-update-all --regenerate true ' '--deploy true'.format(cap_host)) else: run('satellite-installer --scenario capsule --upgrade ' '--certs-tar /home/{0}-certs.tar'.format(cap_host)) postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Capsule Upgrade - {}'.format( str(postup_time - preup_time))) # Rebooting the capsule for kernel update if any reboot(160) host_ssh_availability_check(cap_host) # Check if Capsule upgrade is success run('katello-service status', warn_only=True)