def enable_satellite_repos(cdn=False, beta=False, disable_enabled=True, sat_version='6.5', puppet4='no'): """Enable repositories required to install Satellite 6 :param cdn: Indicates if the CDN Satellite 6 repo should be enabled or not :param beta: Indicates if the Beta Satellite 6 repo should be enabled or not. The Beta repo is available through the CDN and, if both ``cdn`` and ``beta`` are ``True``, the beta repo will be used instead of the stable one. :param disable_enabled: If True, disable all repositories (including beaker repositories) before enabling repositories. :param sat_version: Indicates which satellite version should be installed, default set to latest. :param puppet4: Indicates what puppet to install with Satellite 6.3 Default: 'no', 'yes', 'upgrade' """ if isinstance(cdn, str): cdn = (cdn.lower() == 'true') if isinstance(beta, str): beta = (beta.lower() == 'true') if isinstance(disable_enabled, str): disable_enabled = (disable_enabled.lower() == 'true') if disable_enabled is True: disable_beaker_repos(silent=True) disable_repos('*', silent=True, warn_only=True) os_version = distro_info()[1] if os_version > 7: repos = [ 'rhel-{0}-for-x86_64-baseos-rpms', 'rhel-{0}-for-x86_64-appstream-rpms', 'ansible-2.8-for-rhel-{0}-x86_64-rpms' ] else: repos = [ 'rhel-{0}-server-rpms', 'rhel-server-rhscl-{0}-rpms', ] if sat_version in ['6.4', '6.5']: repos.append('rhel-{0}-server-ansible-2.6-rpms') repos.append('rhel-{0}-server-satellite-maintenance-6-rpms') if sat_version == '6.6': # Ansible '2.8' was not released yet, so using '2' repo repos.append('rhel-{0}-server-ansible-2-rpms') repos.append('rhel-{0}-server-satellite-maintenance-6-rpms') if beta: repos.append('rhel-server-{0}-satellite-6-beta-rpms') elif cdn: repos.append('rhel-{0}-server-satellite-{1}-rpms') # Sat6.3: enable *cdn* puppet4 repo to perform fresh p4 install if sat_version == '6.3' and puppet4 == 'yes': repos.append('rhel-{0}-server-satellite-{1}-puppet4-rpms') enable_repos(*[repo.format(os_version, sat_version) for repo in repos]) run('yum repolist')
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 if os.environ.get("FOREMAN_MAINTAIN_CAPSULE_UPGRADE") == 'true': upgrade_using_foreman_maintain(sat_host=False) else: nonfm_upgrade(satellite_upgrade=False) # 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 enable_satellite_repos(cdn=False, beta=False, disable_enabled=True): """Enable repositories required to install Satellite 6 :param cdn: Indicates if the CDN Satellite 6 repo should be enabled or not :param beta: Indicates if the Beta Satellite 6 repo should be enabled or not. The Beta repo is available through the CDN and, if both ``cdn`` and ``beta`` are ``True``, the beta repo will be used instead of the stable one. :param disable_enabled: If True, disable all repositories (including beaker repositories) before enabling repositories. """ if isinstance(cdn, str): cdn = (cdn.lower() == 'true') if isinstance(beta, str): beta = (beta.lower() == 'true') if isinstance(disable_enabled, str): disable_enabled = (disable_enabled.lower() == 'true') if disable_enabled is True: disable_beaker_repos(silent=True) disable_repos('*', silent=True) repos = [ 'rhel-{0}-server-rpms', 'rhel-server-rhscl-{0}-rpms', ] if beta is True: repos.append('rhel-server-{0}-satellite-6-beta-rpms') elif cdn is True: repos.append('rhel-{0}-server-satellite-6.0-rpms') enable_repos(*[repo.format(distro_info()[1]) for repo in repos]) run('yum repolist')
def enable_satellite_repos(sat_version='6.8', cdn=False, beta=False, disable_enabled=True): """Enable repositories required to install Satellite 6 :param sat_version: Indicates which satellite version should be installed, default: latest :param cdn: Indicates if the CDN Satellite 6 repo should be enabled or not :param beta: Indicates if the Beta Satellite 6 repo should be enabled or not. The Beta repo is available through the CDN and, if both ``cdn`` and ``beta`` are ``True``, the beta repo will be used instead of the stable one. :param disable_enabled: If True, disable all repositories (including beaker repositories) before enabling repositories. """ if isinstance(cdn, str): cdn = (cdn.lower() == 'true') if isinstance(beta, str): beta = (beta.lower() == 'true') if isinstance(disable_enabled, str): disable_enabled = (disable_enabled.lower() == 'true') if disable_enabled is True: disable_beaker_repos(silent=True) disable_repos('*', silent=True, warn_only=True) os_version = distro_info()[1] if os_version > 7: repos = [ 'rhel-{0}-for-x86_64-baseos-rpms', 'rhel-{0}-for-x86_64-appstream-rpms', 'ansible-{2}-for-rhel-{0}-x86_64-rpms', ] else: repos = [ 'rhel-{0}-server-rpms', 'rhel-server-rhscl-{0}-rpms', 'rhel-{0}-server-ansible-{2}-rpms', ] if version(sat_version) > version(6.7): ansible_version = '2.9' elif version(sat_version) > version(6.5): ansible_version = '2.8' else: ansible_version = '2.6' if beta: repos.append('rhel-server-{0}-satellite-6-beta-rpms') repos.append('rhel-{0}-server-satellite-maintenance-6-beta-rpms') elif cdn: repos.append('rhel-{0}-server-satellite-{1}-rpms') repos.append('rhel-{0}-server-satellite-maintenance-6-rpms') enable_repos(*[ repo.format(os_version, sat_version, ansible_version) for repo in repos ]) run('yum repolist')
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_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 enable_satellite_repos(cdn=False, beta=False, disable_enabled=True, sat_version='6.4', puppet4='no'): """Enable repositories required to install Satellite 6 :param cdn: Indicates if the CDN Satellite 6 repo should be enabled or not :param beta: Indicates if the Beta Satellite 6 repo should be enabled or not. The Beta repo is available through the CDN and, if both ``cdn`` and ``beta`` are ``True``, the beta repo will be used instead of the stable one. :param disable_enabled: If True, disable all repositories (including beaker repositories) before enabling repositories. :param sat_version: Indicates which satellite version should be installed, default set to latest. :param puppet4: Indicates what puppet to install with Satellite 6.3 Default: 'no', 'yes', 'upgrade' """ if isinstance(cdn, str): cdn = (cdn.lower() == 'true') if isinstance(beta, str): beta = (beta.lower() == 'true') if isinstance(disable_enabled, str): disable_enabled = (disable_enabled.lower() == 'true') if disable_enabled is True: disable_beaker_repos(silent=True) disable_repos('*', silent=True) repos = [ 'rhel-{0}-server-rpms', 'rhel-server-rhscl-{0}-rpms', ] if sat_version == '6.4': repos.append('rhel-{0}-server-ansible-2-rpms') repos.append('rhel-7-server-satellite-maintenance-6-rpms') if beta: repos.append('rhel-server-{0}-satellite-6-beta-rpms') elif cdn: repos.append('rhel-{0}-server-satellite-{1}-rpms') # Sat6.3: enable *cdn* puppet4 repo to perform fresh p4 install if sat_version == '6.3' and puppet4 == 'yes': repos.append('rhel-{0}-server-satellite-{1}-puppet4-rpms') os_version = distro_info()[1] enable_repos(*[repo.format(os_version, sat_version) for repo in repos]) run('yum repolist')
def enable_satellite_repos(cdn=False, beta=False, disable_enabled=True, cdn_version='6.2'): """Enable repositories required to install Satellite 6 :param cdn: Indicates if the CDN Satellite 6 repo should be enabled or not :param beta: Indicates if the Beta Satellite 6 repo should be enabled or not. The Beta repo is available through the CDN and, if both ``cdn`` and ``beta`` are ``True``, the beta repo will be used instead of the stable one. :param disable_enabled: If True, disable all repositories (including beaker repositories) before enabling repositories. :param version: Indicates which satellite version should be installed, default set to 6.2. """ if isinstance(cdn, str): cdn = (cdn.lower() == 'true') if isinstance(beta, str): beta = (beta.lower() == 'true') if isinstance(disable_enabled, str): disable_enabled = (disable_enabled.lower() == 'true') if disable_enabled is True: disable_beaker_repos(silent=True) disable_repos('*', silent=True) repos = [ 'rhel-{0}-server-rpms', 'rhel-server-rhscl-{0}-rpms', ] if beta is True: repos.append('rhel-server-{0}-satellite-6-beta-rpms') if cdn is True: if cdn_version == '6.0': repos.append('rhel-{0}-server-satellite-6.0-rpms') elif cdn_version == '6.1': repos.append('rhel-{0}-server-satellite-6.1-rpms') elif cdn_version == '6.2': repos.append('rhel-{0}-server-satellite-6.2-rpms') else: raise ValueError('CDN Version should be either 6.0 or 6.1 or 6.2') enable_repos(*[repo.format(distro_info()[1]) for repo in repos]) run('yum repolist')
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 satellite6_zstream_upgrade(): """Upgrades Satellite Server 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========== SATELLITE 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 Satellite cannot be performed as ' 'FROM and TO versions are not same!') sys.exit(1) base_url = os.environ.get('BASE_URL') setup_satellite_firewall() major_ver = distro_info()[1] # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer Repo disable_repos('*', silent=True) enable_repos('rhel-{0}-server-rpms'.format(major_ver)) enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) # If CDN upgrade then enable satellite latest version repo if base_url is None: enable_repos('rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version)) # Remove old custom sat repo for fname in os.listdir('/etc/yum.repos.d/'): if 'sat' in fname.lower(): os.remove('/etc/yum.repos.d/{}'.format(fname)) # Else, consider this as Downstream upgrade else: # Add Sat6 repo from latest compose satellite_repo = StringIO() satellite_repo.write('[sat6]\n') satellite_repo.write('name=satellite 6\n') satellite_repo.write('baseurl={0}\n'.format(base_url)) satellite_repo.write('enabled=1\n') satellite_repo.write('gpgcheck=0\n') put(local_path=satellite_repo, remote_path='/etc/yum.repos.d/sat6.repo') satellite_repo.close() # Check what repos are set run('yum repolist') # Stop katello services, except mongod run('katello-service stop') if to_version == '6.1': run('service-wait mongod start') run('yum clean all', warn_only=True) # Updating the packages again after setting sat6 repo logger.info('Updating system and satellite packages... ') 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 satellite packages update - ' '{}'.format(str(postyum_time - preyum_time))) # Rebooting the system to check the possible issues if kernal is updated if os.environ.get('RHEV_SAT_HOST'): reboot(120) if to_version == '6.1': # Stop the service again which started in restart # This step is not required with 6.2 upgrade as installer itself # stop all the services before upgrade run('katello-service stop') run('service-wait mongod start') # Running Upgrade preup_time = datetime.now().replace(microsecond=0) if to_version == '6.1': run('katello-installer --upgrade') else: run('satellite-installer --scenario satellite --upgrade') postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Satellite Upgrade - {}'.format( str(postup_time - preup_time))) # Test the Upgrade is successful set_hammer_config() hammer('ping') run('katello-service status', warn_only=True) if os.environ.get('RUN_EXISTANCE_TESTS', 'false').lower() == 'true': logger.info('Setting up postupgrade datastore for existance tests') set_datastore('postupgrade')
def satellite6_upgrade(): """Upgrades satellite from old version to latest version. :param admin_password: A string. Defaults to 'changeme'. Foreman admin password for hammer commands. The following environment variables affect this command: ADMIN_PASSWORD Optional, defaults to 'changeme'. Foreman admin password. BASE_URL Optional, defaults to available satellite version in CDN. URL for the compose repository. TO_VERSION Satellite version to upgrade to and enable repos while upgrading. e.g '6.1','6.2' """ to_version = os.environ.get('TO_VERSION') rhev_sat_host = os.environ.get('RHEV_SAT_HOST') base_url = os.environ.get('BASE_URL') if to_version not in ['6.1', '6.2']: print('Wrong Satellite Version Provided to upgrade to. ' 'Provide one of 6.1, 6.2') sys.exit(1) # Sync capsule and tools repo admin_password = os.environ.get('ADMIN_PASSWORD', 'changeme') # Setting yum stdout log level to be less verbose set_yum_debug_level() # Setup firewall rules on Satellite setup_satellite_firewall() # Removing rhel-released and rhel-optional repo run('rm -rf /etc/yum.repos.d/rhel-{optional,released}.repo') print('Wait till Packages update ... ') update_packages(quiet=True) # Rebooting the system to see possible errors if rhev_sat_host: reboot(120) # Setting Satellite to_version Repos major_ver = distro_info()[1] # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer Repo disable_repos('*', silent=True) enable_repos('rhel-{0}-server-rpms'.format(major_ver)) enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) # If CDN upgrade then enable satellite latest version repo if base_url is None: enable_repos('rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version)) # Else, consider this as Downstream upgrade else: # Add Sat6 repo from latest compose satellite_repo = StringIO() satellite_repo.write('[sat6]\n') satellite_repo.write('name=satellite 6\n') satellite_repo.write('baseurl={0}\n'.format(base_url)) satellite_repo.write('enabled=1\n') satellite_repo.write('gpgcheck=0\n') put(local_path=satellite_repo, remote_path='/etc/yum.repos.d/sat6.repo') satellite_repo.close() # Stop katello services, except mongod run('katello-service stop') if to_version == '6.1': run('service-wait mongod start') run('yum clean all', warn_only=True) # Updating the packages again after setting sat6 repo 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())) # Rebooting the system again for possible errors # Only for RHEV based satellite and not for personal one if rhev_sat_host: reboot(120) if to_version == '6.1': # Stop the service again which started in restart # This step is not required with 6.2 upgrade as installer itself # stop all the services before upgrade run('katello-service stop') run('service-wait mongod start') # Verifying impact of BZ #1357655 on upgrade if rhev_sat_host: run('katello-installer --help', quiet=True) # Running Upgrade print('SATELLITE UPGRADE started at: {0}'.format(time.ctime())) if to_version == '6.1': run('katello-installer --upgrade') else: run('satellite-installer --scenario satellite --upgrade') print('SATELLITE UPGRADE finished at: {0}'.format(time.ctime())) # Test the Upgrade is successful run('hammer -u admin -p {0} ping'.format(admin_password), warn_only=True) # Test The status of all katello services run('katello-service status', warn_only=True)
def satellite6_zstream_upgrade(): """Upgrades Satellite Server 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========== SATELLITE 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 Satellite cannot be performed as ' 'FROM and TO versions are not same!') sys.exit(1) base_url = os.environ.get('BASE_URL') # Setting yum stdout log level to be less verbose set_yum_debug_level() setup_satellite_firewall() major_ver = distro_info()[1] # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer Repo disable_repos('*', silent=True) enable_repos('rhel-{0}-server-rpms'.format(major_ver)) enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) # If CDN upgrade then enable satellite latest version repo if base_url is None: enable_repos('rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version)) # Remove old custom sat repo for fname in os.listdir('/etc/yum.repos.d/'): if 'sat' in fname.lower(): os.remove('/etc/yum.repos.d/{}'.format(fname)) # Else, consider this as Downstream upgrade else: # Add Sat6 repo from latest compose satellite_repo = StringIO() satellite_repo.write('[sat6]\n') satellite_repo.write('name=satellite 6\n') satellite_repo.write('baseurl={0}\n'.format(base_url)) satellite_repo.write('enabled=1\n') satellite_repo.write('gpgcheck=0\n') put(local_path=satellite_repo, remote_path='/etc/yum.repos.d/sat6.repo') satellite_repo.close() # Check what repos are set run('yum repolist') # Stop katello services, except mongod run('katello-service stop') if to_version == '6.1': run('service-wait mongod start') run('yum clean all', warn_only=True) # Updating the packages again after setting sat6 repo logger.info('Updating system and satellite packages... ') 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 satellite packages update - ' '{}'.format(str(postyum_time-preyum_time))) # Rebooting the system to check the possible issues if kernal is updated if os.environ.get('RHEV_SAT_HOST'): reboot(120) if to_version == '6.1': # Stop the service again which started in restart # This step is not required with 6.2 upgrade as installer itself # stop all the services before upgrade run('katello-service stop') run('service-wait mongod start') # Running Upgrade preup_time = datetime.now().replace(microsecond=0) if to_version == '6.1': run('katello-installer --upgrade') else: run('satellite-installer --scenario satellite --upgrade') postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Satellite Upgrade - {}'.format( str(postup_time-preup_time))) # Test the Upgrade is successful set_hammer_config() hammer('ping') run('katello-service status', warn_only=True) if os.environ.get('RUN_EXISTANCE_TESTS', 'false').lower() == 'true': logger.info('Setting up postupgrade datastore for existance tests') set_datastore('postupgrade')
def satellite6_upgrade(): """Upgrades satellite from old version to latest version. The following environment variables affect this command: BASE_URL Optional, defaults to available satellite version in CDN. URL for the compose repository TO_VERSION Satellite version to upgrade to and enable repos while upgrading. e.g '6.1','6.2' """ logger.highlight('\n========== SATELLITE UPGRADE =================\n') to_version = os.environ.get('TO_VERSION') rhev_sat_host = os.environ.get('RHEV_SAT_HOST') base_url = os.environ.get('BASE_URL') if to_version not in ['6.1', '6.2']: logger.warning('Wrong Satellite Version Provided to upgrade to. ' 'Provide one of 6.1, 6.2') sys.exit(1) # Setting yum stdout log level to be less verbose set_yum_debug_level() setup_satellite_firewall() run('rm -rf /etc/yum.repos.d/rhel-{optional,released}.repo') logger.info('Updating system packages ... ') update_packages(quiet=True) # Rebooting the system to see possible errors if rhev_sat_host: reboot(160) # Setting Satellite to_version Repos major_ver = distro_info()[1] # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer Repo disable_repos('*', silent=True) enable_repos('rhel-{0}-server-rpms'.format(major_ver)) enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) # If CDN upgrade then enable satellite latest version repo if base_url is None: enable_repos('rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version)) # Remove old custom sat repo for fname in os.listdir('/etc/yum.repos.d/'): if 'sat' in fname.lower(): os.remove('/etc/yum.repos.d/{}'.format(fname)) # Else, consider this as Downstream upgrade else: # Add Sat6 repo from latest compose satellite_repo = StringIO() satellite_repo.write('[sat6]\n') satellite_repo.write('name=satellite 6\n') satellite_repo.write('baseurl={0}\n'.format(base_url)) satellite_repo.write('enabled=1\n') satellite_repo.write('gpgcheck=0\n') put(local_path=satellite_repo, remote_path='/etc/yum.repos.d/sat6.repo') satellite_repo.close() # Check what repos are set run('yum repolist') # Stop katello services, except mongod run('katello-service stop') if to_version == '6.1': run('service-wait mongod start') run('yum clean all', warn_only=True) # Updating the packages again after setting sat6 repo logger.info('Updating satellite packages ... ') preyum_time = datetime.now().replace(microsecond=0) update_packages(quiet=False) postyum_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for satellite packages update - {}'.format( str(postyum_time-preyum_time))) # Rebooting the system again for possible errors # Only for RHEV based satellite and not for personal one if rhev_sat_host: reboot(160) if to_version == '6.1': # Stop the service again which started in restart # This step is not required with 6.2 upgrade as installer itself # stop all the services before upgrade run('katello-service stop') run('service-wait mongod start') # Running Upgrade preup_time = datetime.now().replace(microsecond=0) if to_version == '6.1': run('katello-installer --upgrade') else: run('satellite-installer --scenario satellite --upgrade') postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Satellite Upgrade - {}'.format( str(postup_time-preup_time))) # Test the Upgrade is successful set_hammer_config() hammer('ping') run('katello-service status', warn_only=True) # Enable ostree feature only for rhel7 and sat6.2 if to_version == '6.2' and major_ver == '7': enable_ostree(sat_version='6.2') if os.environ.get('RUN_EXISTANCE_TESTS', 'false').lower() == 'true': logger.info('Setting up postupgrade datastore for existance tests..') set_datastore('postupgrade')
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 satellite6_upgrade(): """Upgrades satellite from old version to latest version. The following environment variables affect this command: BASE_URL Optional, defaults to available satellite version in CDN. URL for the compose repository TO_VERSION Satellite version to upgrade to and enable repos while upgrading. e.g '6.1','6.2' """ to_version = os.environ.get('TO_VERSION') rhev_sat_host = os.environ.get('RHEV_SAT_HOST') base_url = os.environ.get('BASE_URL') if to_version not in ['6.1', '6.2']: print('Wrong Satellite Version Provided to upgrade to. ' 'Provide one of 6.1, 6.2') sys.exit(1) # Setting yum stdout log level to be less verbose set_yum_debug_level() setup_satellite_firewall() run('rm -rf /etc/yum.repos.d/rhel-{optional,released}.repo') print('Wait till Packages update ... ') update_packages(quiet=True) # Rebooting the system to see possible errors if rhev_sat_host: reboot(120) # Setting Satellite to_version Repos major_ver = distro_info()[1] # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer Repo disable_repos('*', silent=True) enable_repos('rhel-{0}-server-rpms'.format(major_ver)) enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) # If CDN upgrade then enable satellite latest version repo if base_url is None: enable_repos('rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version)) # Else, consider this as Downstream upgrade else: # Add Sat6 repo from latest compose satellite_repo = StringIO() satellite_repo.write('[sat6]\n') satellite_repo.write('name=satellite 6\n') satellite_repo.write('baseurl={0}\n'.format(base_url)) satellite_repo.write('enabled=1\n') satellite_repo.write('gpgcheck=0\n') put(local_path=satellite_repo, remote_path='/etc/yum.repos.d/sat6.repo') satellite_repo.close() # Stop katello services, except mongod run('katello-service stop') if to_version == '6.1': run('service-wait mongod start') run('yum clean all', warn_only=True) # Updating the packages again after setting sat6 repo 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())) # Rebooting the system again for possible errors # Only for RHEV based satellite and not for personal one if rhev_sat_host: reboot(120) if to_version == '6.1': # Stop the service again which started in restart # This step is not required with 6.2 upgrade as installer itself # stop all the services before upgrade run('katello-service stop') run('service-wait mongod start') # Verifying impact of BZ #1357655 on upgrade if rhev_sat_host: run('katello-installer --help', quiet=True) # Running Upgrade print('SATELLITE UPGRADE started at: {0}'.format(time.ctime())) if to_version == '6.1': run('katello-installer --upgrade') else: run('satellite-installer --scenario satellite --upgrade') print('SATELLITE UPGRADE finished at: {0}'.format(time.ctime())) # Test the Upgrade is successful set_hammer_config() hammer('ping') run('katello-service status', warn_only=True)
def satellite6_upgrade(zstream=False): """This function is used to perform the satellite upgrade of two type based on their passed parameter. :param zstream: if upgrade_type==None: - Upgrades Satellite Server from old version to latest The following environment variables affect this command: BASE_URL Optional, defaults to available satellite version in CDN. URL for the compose repository FROM_VERSION Current satellite version which will be upgraded to latest version TO_VERSION Satellite version to upgrade to and enable repos while upgrading. e.g '6.1','6.2', '6.3' FOREMAN_MAINTAIN_SATELLITE_UPGRADE use foreman-maintain for satellite upgrade else: - Upgrades Satellite Server 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 FOREMAN_MAINTAIN_SATELLITE_UPGRADE use foreman-maintain for satellite upgrade """ logger.highlight('\n========== SATELLITE UPGRADE =================\n') to_version = os.environ.get('TO_VERSION') from_version = os.environ.get('FROM_VERSION') if zstream: if not from_version == to_version: logger.warning( 'zStream Upgrade on Satellite cannot be performed as ' 'FROM and TO versions are not same!') sys.exit(1) base_url = None if not os.environ.get('BASE_URL') else os.environ.get( 'BASE_URL') major_ver = distro_info()[1] disable_repo_name = ["*"] enable_repos_name = [ 'rhel-{0}-server-rpms'.format(major_ver), 'rhel-server-rhscl-{0}-rpms'.format(major_ver) ] if bz_bug_is_open(1850934): run('echo "apache::mod::proxy::proxy_timeout: 120" >> ' '/etc/foreman-installer/custom-hiera.yaml') # This statement will execute only until downstream release not become beta. if os.environ.get('DOWNSTREAM_FM_UPGRADE') == 'true' or \ os.environ.get('FOREMAN_MAINTAIN_SATELLITE_UPGRADE') == 'false': # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer Repo enable_disable_repo(disable_repo_name, enable_repos_name) os.environ[ "whitelisted_param"] = ", repositories-validate, repositories-setup" else: os.environ["whitelisted_param"] = '' if os.environ.get('FOREMAN_MAINTAIN_SATELLITE_UPGRADE') == 'true' \ and os.environ.get('OS') == 'rhel7': foreman_maintain_upgrade(base_url) else: # To install the package using foreman-maintain and it is applicable # above 6.7 version. setup_satellite_firewall() if not zstream: run('rm -rf /etc/yum.repos.d/rhel-{optional,released}.repo') logger.info('Updating system packages ... ') foreman_packages_installation_check(state="unlock") setup_foreman_maintain() update_packages(quiet=True) if base_url is None: enable_disable_repo([], [ 'rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version) ]) # Remove old custom sat repo repository_cleanup('sat') else: repository_setup("sat6", "satellite 6", base_url, 1, 0) nonfm_upgrade() foreman_packages_installation_check(state="lock") # Rebooting the satellite for kernel update if any reboot(180) host_ssh_availability_check(env.get('satellite_host')) # Test the Upgrade is successful upgrade_validation(True)
def satellite6_upgrade(): """Upgrades satellite from old version to latest version. The following environment variables affect this command: BASE_URL Optional, defaults to available satellite version in CDN. URL for the compose repository TO_VERSION Satellite version to upgrade to and enable repos while upgrading. e.g '6.1','6.2', '6.3' PERFORM_FOREMAN_MAINTAIN_UPGRADE use foreman-maintain for satellite upgrade """ logger.highlight('\n========== SATELLITE UPGRADE =================\n') to_version = os.environ.get('TO_VERSION') base_url = os.environ.get('BASE_URL') if to_version not in ['6.1', '6.2', '6.3', '6.4', '6.5']: logger.warning('Wrong Satellite Version Provided to upgrade to. ' 'Provide one of 6.1, 6.2, 6.3, 6.4, 6.5') sys.exit(1) major_ver = distro_info()[1] # remove once BZ 1644354 fixed run("yum erase ant-junit -y") if os.environ.get('PERFORM_FOREMAN_MAINTAIN_UPGRADE') == 'true' \ and os.environ.get('OS') == 'rhel7': if base_url is None: os.environ['DISTRIBUTION'] = "CDN" else: os.environ['DISTRIBUTION'] = "DOWNSTREAM" # setup foreman-maintain setup_foreman_maintain() preup_time = datetime.now().replace(microsecond=0) # perform upgrade using foreman-maintain upgrade_using_foreman_maintain() postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Satellite Upgrade - {}'.format( str(postup_time - preup_time))) else: setup_satellite_firewall() run('rm -rf /etc/yum.repos.d/rhel-{optional,released}.repo') logger.info('Updating system packages ... ') # setup foreman-maintain setup_foreman_maintain() update_packages(quiet=True) # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer Repo disable_repos('*', silent=True) enable_repos('rhel-{0}-server-rpms'.format(major_ver)) enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) enable_repos('rhel-{0}-server-extras-rpms'.format(major_ver)) # If CDN upgrade then enable satellite latest version repo if base_url is None: enable_repos('rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version)) # Remove old custom sat repo for fname in os.listdir('/etc/yum.repos.d/'): if 'sat' in fname.lower(): os.remove('/etc/yum.repos.d/{}'.format(fname)) # Else, consider this as Downstream upgrade else: # Add Sat6 repo from latest compose satellite_repo = StringIO() satellite_repo.write('[sat6]\n') satellite_repo.write('name=satellite 6\n') satellite_repo.write('baseurl={0}\n'.format(base_url)) satellite_repo.write('enabled=1\n') satellite_repo.write('gpgcheck=0\n') put(local_path=satellite_repo, remote_path='/etc/yum.repos.d/sat6.repo') satellite_repo.close() # Check what repos are set run('yum repolist') # Stop katello services, except mongod run('katello-service stop') if to_version == '6.1': run('service-wait mongod start') run('yum clean all', warn_only=True) # Updating the packages again after setting sat6 repo logger.info('Updating satellite packages ... ') preyum_time = datetime.now().replace(microsecond=0) update_packages(quiet=False) postyum_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for satellite packages update- {}'.format( str(postyum_time - preyum_time))) # Running Upgrade preup_time = datetime.now().replace(microsecond=0) if to_version == '6.1': run('katello-installer --upgrade') else: run('satellite-installer --scenario satellite --upgrade') postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Satellite Upgrade - {}'.format( str(postup_time - preup_time))) # Rebooting the satellite for kernel update if any reboot(180) host_ssh_availability_check(env.get('satellite_host')) # Test the Upgrade is successful run('hammer ping', warn_only=True) run('katello-service status', warn_only=True) # Enable ostree feature only for rhel7 and sat6.2 if to_version == '6.2' and major_ver == 7: enable_ostree(sat_version='6.2')
def sync_capsule_tools_repos_to_upgrade(admin_password=None): """This syncs capsule repos in Satellite server. Useful for upgrading Capsule in feature. :param admin_password: A string. Defaults to 'changeme'. Foreman admin password for hammer commands. Following environment variable affects this function: CAPSULE_URL The url for capsule repo from latest satellite compose. FROM_VERSION Current Satellite version - to differentiate default organization. e.g. '6.1', '6.0' CAPSULE_SUBSCRIPTION List of cv_name, environment, ak_name attached to subscription of capsule in defined sequence. Optional, for upgrade on specific satellite and capsule. """ if os.environ.get('FROM_VERSION') == '6.1': org = '\'Default Organization\'' elif os.environ.get('FROM_VERSION') == '6.0': org = 'Default_Organization' else: print('Wrong FROM_VERSION Provided. Provide one of 6.1 or 6.0...') sys.exit(1) capsule_repo = os.environ.get('CAPSULE_URL') if capsule_repo is None: print('The Capsule repo URL is not provided ' 'to perform Capsule Upgrade in feature!') sys.exit(1) version = distro_info()[1] details = os.environ.get('CAPSULE_SUBSCRIPTION') if details is not None: cv_name, env_name, ak_name = [ item.strip() for item in details.split(',')] else: cv_name = 'rhel{0}_cv'.format(version) env_name = 'DEV' ak_name = 'rhel' if admin_password is None: admin_password = os.environ.get('ADMIN_PASSWORD', 'changeme') initials = 'hammer -u admin -p {0} '.format(admin_password) # First initiate the connection with capsule by syncing it capsule_id = str( run(initials + 'capsule list | grep {0}'.format( env.get('capsule_host')))).split('|')[0].strip() if not os.environ.get('CAPSULE_SUBSCRIPTION'): run(initials + 'capsule content synchronize --id {0}'.format( capsule_id)) # Create product capsule run(initials + 'product create --name capsule6_latest ' '--organization {0}'.format(org)) time.sleep(2) capsule_sub_id = str( run(initials + 'subscription list --organization ' '{0} | grep capsule6_latest'.format(org)) ).split('|')[7].strip() # create repo run(initials + 'repository create --content-type yum ' '--name capsule6_latest_repo --label capsule6_latest_repo ' '--product capsule6_latest --publish-via-http true --url {0} ' '--organization {1}'.format(capsule_repo, org)) # Sync repos run(initials + 'repository synchronize --name capsule6_latest_repo ' '--product capsule6_latest --organization {0}'.format(org)) run(initials + 'content-view list --organization {0} | ' 'grep {1}'.format(org, cv_name)) capsule_repo_id = str( run(initials + 'repository list --organization {0} | ' 'grep capsule6_latest_repo'.format(org))).split('|')[0].strip() # Add repos to CV run(initials + 'content-view add-repository --name {0} ' '--repository-id {1} --organization {2}'.format( cv_name, capsule_repo_id, org)) # publish cv run(initials + 'content-view publish --name {0} ' '--organization {1}'.format(cv_name, org)) # promote cv lc_env_id = str( run(initials + 'lifecycle-environment list ' '--organization {0} | grep {1}'.format(org, env_name))).split( '|')[0].strip() cv_ver_id = str( run(initials + 'content-view version list --content-view {0} ' '--organization {1} | grep {0}'.format( cv_name, org))).split('|')[0].strip() run(initials + 'content-view version promote --content-view {0} ' '--id {1} --lifecycle-environment-id {2} --organization ' '{3}'.format(cv_name, cv_ver_id, lc_env_id, org)) ak_id = str( run(initials + 'activation-key list --organization ' '{0} | grep {1}'.format(org, ak_name))).split('|')[0].strip() # Add new product subscriptions to AK run(initials + 'activation-key add-subscription --id {0} --quantity 1 ' '--subscription-id {1}'.format(ak_id, capsule_sub_id)) # Update subscription on capsule execute( lambda: run('subscription-manager attach --pool={0}'.format( capsule_sub_id)), host=env.get('capsule_host'))
def satellite6_zstream_upgrade(): """Upgrades Satellite Server 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 PERFORM_FOREMAN_MAINTAIN_UPGRADE use foreman-maintain for satellite upgrade """ logger.highlight('\n========== SATELLITE 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 Satellite cannot be performed as ' 'FROM and TO versions are not same!') sys.exit(1) base_url = os.environ.get('BASE_URL') major_ver = distro_info()[1] # remove once BZ 1644354 fixed run("yum erase ant-junit -y") if os.environ.get('PERFORM_FOREMAN_MAINTAIN_UPGRADE') == "true" \ and os.environ.get('OS') == 'rhel7': if base_url is None: os.environ['DISTRIBUTION'] = "CDN" else: os.environ['DISTRIBUTION'] = "DOWNSTREAM" # setup foreman-maintain setup_foreman_maintain() preup_time = datetime.now().replace(microsecond=0) # perform upgrade using foreman-maintain upgrade_using_foreman_maintain() postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Satellite Upgrade - {}'.format( str(postup_time - preup_time))) else: setup_satellite_firewall() # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer Repo disable_repos('*', silent=True) enable_repos('rhel-{0}-server-rpms'.format(major_ver)) enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) enable_repos('rhel-{0}-server-extras-rpms'.format(major_ver)) # If CDN upgrade then enable satellite latest version repo if base_url is None: enable_repos('rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version)) # Remove old custom sat repo for fname in os.listdir('/etc/yum.repos.d/'): if 'sat' in fname.lower(): os.remove('/etc/yum.repos.d/{}'.format(fname)) # Else, consider this as Downstream upgrade else: # Add Sat6 repo from latest compose satellite_repo = StringIO() satellite_repo.write('[sat6]\n') satellite_repo.write('name=satellite 6\n') satellite_repo.write('baseurl={0}\n'.format(base_url)) satellite_repo.write('enabled=1\n') satellite_repo.write('gpgcheck=0\n') put(local_path=satellite_repo, remote_path='/etc/yum.repos.d/sat6.repo') satellite_repo.close() # Check what repos are set run('yum repolist') # Stop katello services, except mongod run('katello-service stop') if to_version == '6.1': run('service-wait mongod start') run('yum clean all', warn_only=True) # Updating the packages again after setting sat6 repo logger.info('Updating system and satellite packages... ') 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 satellite packages update' ' - {}'.format(str(postyum_time - preyum_time))) # Running Upgrade preup_time = datetime.now().replace(microsecond=0) if to_version == '6.1': run('katello-installer --upgrade') else: run('satellite-installer --scenario satellite --upgrade') postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Satellite Upgrade - {}'.format( str(postup_time - preup_time))) # Rebooting the satellite for kernel update if any reboot(180) host_ssh_availability_check(env.get('satellite_host')) # Test the Upgrade is successful run('hammer ping', warn_only=True) run('katello-service status', warn_only=True)
def satellite6_upgrade(zstream=False): """This function is used to perform the satellite upgrade of two type based on their passed parameter. :param zstream: if upgrade_type==None: - Upgrades Satellite Server from old version to latest The following environment variables affect this command: BASE_URL Optional, defaults to available satellite version in CDN. URL for the compose repository FROM_VERSION Current satellite version which will be upgraded to latest version TO_VERSION Satellite version to upgrade to and enable repos while upgrading. e.g '6.1','6.2', '6.3' PERFORM_FOREMAN_MAINTAIN_UPGRADE use foreman-maintain for satellite upgrade else: - Upgrades Satellite Server 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 PERFORM_FOREMAN_MAINTAIN_UPGRADE use foreman-maintain for satellite upgrade """ logger.highlight('\n========== SATELLITE UPGRADE =================\n') to_version = os.environ.get('TO_VERSION') from_version = os.environ.get('FROM_VERSION') if zstream: if not from_version == to_version: logger.warning( 'zStream Upgrade on Satellite cannot be performed as ' 'FROM and TO versions are not same!') sys.exit(1) base_url = os.environ.get('BASE_URL') major_ver = distro_info()[1] disable_repo_name = ["*"] enable_repos_name = [ 'rhel-{0}-server-rpms'.format(major_ver), 'rhel-server-rhscl-{0}-rpms'.format(major_ver) ] if os.environ.get('PERFORM_FOREMAN_MAINTAIN_UPGRADE') == 'true' \ and os.environ.get('OS') == 'rhel7': foreman_maintain_upgrade(base_url) else: setup_satellite_firewall() if not zstream: run('rm -rf /etc/yum.repos.d/rhel-{optional,released}.repo') logger.info('Updating system packages ... ') setup_foreman_maintain() update_packages(quiet=True) # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer Repo enable_disable_repo(disable_repo_name, enable_repos_name) if base_url is None: enable_disable_repo([], [ 'rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version) ]) # Remove old custom sat repo repository_cleanup('sat') else: repository_setup("sat6", "satellite 6", base_url, 1, 0) nonfm_upgrade() # Rebooting the satellite for kernel update if any reboot(180) host_ssh_availability_check(env.get('satellite_host')) # Test the Upgrade is successful upgrade_validation(True)
def satellite6_capsule_upgrade(admin_password=None): """Upgrades capsule from existing version to latest version. :param admin_password: A string. Defaults to 'changeme'. Foreman admin password for hammer commands. 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') if from_version not in ['6.1', '6.0']: print('Wrong Capsule Version Provided. Provide one of 6.1, 6.0.') sys.exit(1) to_version = os.environ.get('TO_VERSION') if to_version not in ['6.1', '6.2']: print('Wrong Capsule Version Provided to upgrade to. ' 'Provide one of 6.1, 6.2') sys.exit(1) if admin_password is None: admin_password = os.environ.get('ADMIN_PASSWORD', 'changeme') # Setting Capsule61 Repos major_ver = distro_info()[1] 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)) # 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 again to see possible errors if os.environ.get('RHEV_CAPSULE'): reboot(120) # 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') # 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 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)
def satellite6_upgrade(admin_password=None): """Upgrades satellite from old version to latest version. :param admin_password: A string. Defaults to 'changeme'. Foreman admin password for hammer commands. The following environment variables affect this command: ADMIN_PASSWORD Optional, defaults to 'changeme'. Foreman admin password. BASE_URL Optional, defaults to available satellite version in CDN. URL for the compose repository. TO_VERSION Satellite version to upgrade to and enable repos while upgrading. e.g '6.1','6.2' """ to_version = os.environ.get('TO_VERSION') if to_version not in ['6.1', '6.2']: print('Wrong Satellite Version Provided to upgrade to. ' 'Provide one of 6.1, 6.2') sys.exit(1) # Sync capsule and tools repo if admin_password is None: admin_password = os.environ.get('ADMIN_PASSWORD', 'changeme') # Setting yum stdout log level to be less verbose set_yum_debug_level() # Removing rhel-released and rhel-optional repo run('rm -rf /etc/yum.repos.d/rhel-{optional,released}.repo') print('Wait till Packages update ... ') update_packages(quiet=True) # Rebooting the system to see possible errors if os.environ.get('RHEV_SATELLITE'): reboot(120) # Setting Satellite61 Repos major_ver = distro_info()[1] base_url = os.environ.get('BASE_URL') # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer disable_repos('*', silent=True) enable_repos('rhel-{0}-server-rpms'.format(major_ver)) enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) if base_url is None: enable_repos('rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version)) else: # Add Sat6 repo from latest compose satellite_repo = StringIO() satellite_repo.write('[sat6]\n') satellite_repo.write('name=satellite 6\n') satellite_repo.write('baseurl={0}\n'.format(base_url)) satellite_repo.write('enabled=1\n') satellite_repo.write('gpgcheck=0\n') put(local_path=satellite_repo, remote_path='/etc/yum.repos.d/sat6.repo') satellite_repo.close() # Stop katello services, except mongod run('katello-service stop') if to_version == '6.1': run('service-wait mongod start') run('yum clean all', warn_only=True) # Updating the packages again after setting sat6 repo 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())) # Rebooting the system again for possible errors if os.environ.get('RHEV_SATELLITE'): reboot(120) # Stop the service again which started in restart run('katello-service stop') if to_version == '6.1': run('service-wait mongod start') # Running Upgrade print('SATELLITE UPGRADE started at: {0}'.format(time.ctime())) if to_version == '6.1': run('katello-installer --upgrade') else: run('satellite-installer --scenario satellite --upgrade') print('SATELLITE UPGRADE finished at: {0}'.format(time.ctime())) # Test the Upgrade is successful run('hammer -u admin -p {0} ping'.format(admin_password), warn_only=True) # Test The status of all katello services run('katello-service status', warn_only=True)
def satellite6_upgrade(): """Upgrades satellite from old version to latest version. The following environment variables affect this command: BASE_URL Optional, defaults to available satellite version in CDN. URL for the compose repository TO_VERSION Satellite version to upgrade to and enable repos while upgrading. e.g '6.1','6.2', '6.3' """ logger.highlight('\n========== SATELLITE UPGRADE =================\n') to_version = os.environ.get('TO_VERSION') rhev_sat_host = os.environ.get('RHEV_SAT_HOST') base_url = os.environ.get('BASE_URL') if to_version not in ['6.1', '6.2', '6.3']: logger.warning('Wrong Satellite Version Provided to upgrade to. ' 'Provide one of 6.1, 6.2, 6.3') sys.exit(1) setup_satellite_firewall() run('rm -rf /etc/yum.repos.d/rhel-{optional,released}.repo') logger.info('Updating system packages ... ') update_packages(quiet=True) # Rebooting the system to see possible errors if rhev_sat_host: reboot(160) # Setting Satellite to_version Repos major_ver = distro_info()[1] # Following disables the old satellite repo and extra repos enabled # during subscribe e.g Load balancer Repo disable_repos('*', silent=True) enable_repos('rhel-{0}-server-rpms'.format(major_ver)) enable_repos('rhel-server-rhscl-{0}-rpms'.format(major_ver)) # If CDN upgrade then enable satellite latest version repo if base_url is None: enable_repos('rhel-{0}-server-satellite-{1}-rpms'.format( major_ver, to_version)) # Remove old custom sat repo for fname in os.listdir('/etc/yum.repos.d/'): if 'sat' in fname.lower(): os.remove('/etc/yum.repos.d/{}'.format(fname)) # Else, consider this as Downstream upgrade else: # Add Sat6 repo from latest compose satellite_repo = StringIO() satellite_repo.write('[sat6]\n') satellite_repo.write('name=satellite 6\n') satellite_repo.write('baseurl={0}\n'.format(base_url)) satellite_repo.write('enabled=1\n') satellite_repo.write('gpgcheck=0\n') put(local_path=satellite_repo, remote_path='/etc/yum.repos.d/sat6.repo') satellite_repo.close() # Check what repos are set run('yum repolist') # Stop katello services, except mongod run('katello-service stop') if to_version == '6.1': run('service-wait mongod start') run('yum clean all', warn_only=True) # Updating the packages again after setting sat6 repo logger.info('Updating satellite packages ... ') preyum_time = datetime.now().replace(microsecond=0) update_packages(quiet=False) postyum_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for satellite packages update - {}'.format( str(postyum_time - preyum_time))) # Rebooting the system again for possible errors # Only for RHEV based satellite and not for personal one if rhev_sat_host: reboot(160) if to_version == '6.1': # Stop the service again which started in restart # This step is not required with 6.2 upgrade as installer itself # stop all the services before upgrade run('katello-service stop') run('service-wait mongod start') # Running Upgrade preup_time = datetime.now().replace(microsecond=0) if to_version == '6.1': run('katello-installer --upgrade') else: run('satellite-installer --scenario satellite --upgrade') postup_time = datetime.now().replace(microsecond=0) logger.highlight('Time taken for Satellite Upgrade - {}'.format( str(postup_time - preup_time))) # Test the Upgrade is successful set_hammer_config() hammer('ping') run('katello-service status', warn_only=True) # Enable ostree feature only for rhel7 and sat6.2 if to_version == '6.2' and major_ver == 7: enable_ostree(sat_version='6.2') if os.environ.get('RUN_EXISTANCE_TESTS', 'false').lower() == 'true': logger.info('Setting up postupgrade datastore for existance tests..') set_datastore('postupgrade')