Walkthrough: Setting up and managing an offline patch catalog for Linux


This topic is intended for system administrators or patch administrators in charge of performing patching for Linux servers in an environment that does not have access to the internet.

Introduction

This topic is intended for system and patch administrators. The goal of this topic is to demonstrate how to organize patch information by setting up a central location for storing metadata about a type of patch. BSA calls these locations patch catalogs. By creating patch catalogs customized to your needs, it becomes easier to select the patches you want to evaluate on servers.

What is a patch catalog?

A patch catalog provides a place to store metadata about patches and the patch payloads themselves. Patch catalogs can be designed for specific needs. For example, a patch catalog can used for a particular operating system, such as Red Hat Enterprise Linux (RHEL). With well designed patch catalogs, it is easier to select the patches that should be used when evaluating the patch configuration of a particular server.

 What does this walkthrough show?

 This walkthrough shows how to download RHEL patches from the Shavlik website to any server having internet access, using the offline downloader utility shipped with BMC Server Automation. After downloading the RHEL patches, you can perform patching operations by transferring the metadata and payload information, using a removable storage, to the patch repository within the air-gapped environment.

  • Download the payload and metadata information from Red Hat website to any server having internet access. In this walkthrough, we will download the patch payload and metadata to a Linux server.
  • Use filters to limit the amount of information added to the catalog.
  • Schedule the catalog update job to run at a particular time in future and set up notifications for the patch administrator in charge of Linux patching

What do I need to do before I get started?

For this walkthrough, you must have the following:

  • An air-gapped environment that uses BMC Server Automation 8.6 or later to manage its Windows servers.
  • Any server with access to the internet. In this walkthrough we will be using a Linux server to download the patch payload from the Red Hat website.
  • From the BMC Software Electronic Product Distribution (EPD) website, download and extract the installer package (BBSA<version>-<platform>64) to the Linux machine on which you want to download the payload and metadata. For steps on downloading installer package files from the EPD website, see Downloading the installation files.

    Extract the BBSA<version>-<platform>64 installer package that you have downloaded from the EPD, and navigate to either of the following directories:

    • If you are planning to download the patch payload and metadata on a Linux server: <installer-path>/Disk1/files/installers/other_files/All-OS-Patch-Downloaders-linux-build-8.7.00
    • if you are planning to download the patch payload and metadata on Windows server: <installer-path>/Disk1/files/installers/other_files/All-OS-Patch-Downloaders-windows-build-8.7.00

    Note

    In this walkthrough we will use the offline downloader utilities in the first directory path as we are downloading the patch payload on a Linux server.

  • The server that houses the patch repository must have the createrepo and pythonurl-grabber packages pre-installed before download begins. The required version for the packages is as follows:

    Package

    Tested version

    createrepo

    0.4.6

    pythonurl-grabber

    2.9.6

    Note

    You do not require createrepo and pythonurl-grabber if you are using a Microsoft Windows server to run the Patch Downloader utility.

  • Ensure that your Linux machine has the glibc.i686 library installed. Alternatively, you can ensure that the JRE version is upgraded to 1.8 or later.

How to add configuration settings and filter information to sample XML file

The first step is to prepare the configuration file, which contains XML information that is used by the Patch Downloader utility. The configuration file must contain the download settings and patch filter information as show in the image below. You can also enter proxy server information if you are using one.

redhat config.PNG

BMC Server Automation provides sample configuration files in the installer package at <installer-path>/Disk1/files/installers/other_files/All-OS-Patch-Downloaders-linux-build-8.7.00/sample-downloader-config-files/. Edit the sample XML configuration file (sample-redhat-downloader-config.xml) provided by BMC, and add the following XML tags based on your requirements:

  1. (Optional) Add proxy information using the following XML tags:

  2. Define download settings using the following XML tags:

    Example of download settings in configuration file
     <temporary-location>/tmp</temporary-location>
    <validate-payload-certificate>true</validate-payload-certificate>
    <payload-repository-location>/home/Payload_location</payload-repository-location>
    <download-request-retries>10</download-request-retries>
    <download-request-timeout>180000</download-request-timeout>
    <downloader-parallel-threads>10</downloader-parallel-threads>
  3. Specify filters to limit the patches downloaded in the catalog. The same filters entered here must also be entered during catalog creation in the console.
    • For example, to create a filter that downloads the latest RPMs by errata type, use the following XML tags:

      <errata-type-filter>
           <os>RHES5</os>
           <arch>x86</arch>
           <channel-label>rhel-i386-server-5</channel-label>
           <errata-severity>
             <critical>true</critical>
             <important>true</important>
             <moderate>true</moderate>
             <low>true</low>
           </errata-severity>
           <errata-type>
             <security>true</security>
             <bugfix>true</bugfix>
             <enhancement>true</enhancement>
           </errata-type>
         </errata-type-filter>
      If you are creating filters for RHEL 7, click here.

      If you are creating a filter for RHEL 7, you cannot use the errata-type filter. You must use the channel type of filter instead.

      <channel-type-filter>
           <os>RHES7</os>
           <arch>x86</arch>
           <channel-label>rhel-i386-server-7</channel-label>
      </channel-type-filter>
    • To create a filter that downloads a specific errata by errata id. This filter should be used only if the downloader is executed on a Linux machine. Use the following syntax:

        <errata-ids-filter>
           <os>RHAS4</os>
           <arch>x86</arch>
           <channel-label>rhel-i386-as-4</channel-label>
           <errata-ids>
             <errata-id>RHSA-2009:0429</errata-id>
             <errata-id>RHBA-2009:0388</errata-id>
           </errata-ids>
        </errata-ids-filter>

      Parameter

      Description

      <os> </os>

      OS for the channel label

      <arch> </arch>

      Architecture for the channel label

      <channel-label>
      </channel-label>

      Channel label that you want to download

      <errata-id>
      </errata-id>

      A valid Errata ID for the channel label specified in the filter

    • (Not applicable for RHEL 7) To create a filter that downloads a specific update level, use the following syntax:

      <update-level-filter>
           <os>RHAS4</os>
           <arch>x86</arch>
           <channel-label>rhel-i386-as-4</channel-label>
           <update-level>5</update-level>
      </update-level-filter>

      Parameter

      Description

      <os></os>

      OS for the channel label

      <arch></arch>

      Architecture for the channel label

      <channel-label>
      </channel-label>

      Channel label you want to download

      <update-level>
      </update-level>

      A valid update level for the channel label specified in the filter Note: The update-level filter works only on Linux computers. It does not work on windows computers.

  4. Save the configuration file. Use the sample configuration file below as a reference:

    <redhat-downloader-config>
     <config>
       <!--<proxy-settings>
          <port>8080</port>
          <host>_IPAddress_</host>
          <username>patch</username>
          <password>NWKIPRTPCWEB</password>
          <domain-name />
          <proxy-type>ntlm</proxy-type>
        </proxy-settings>-->


    <temporary-location>c:\tmp</temporary-location>
    <payload-repository-location>/home/repo/</payload-repository-location>
       <download-request-retries>10</download-request-retries>
       <download-request-timeout>180000</download-request-timeout>
       <downloader-parallel-threads>10</downloader-parallel-threads>
     </config>

     <subscription>
       <errata-type-filter>
         <os>RHES5</os>
         <arch>x86</arch>
         <channel-label>rhel-i386-server-5</channel-label>
         <errata-severity>
           <critical>true</critical>
           <important>true</important>
           <moderate>true</moderate>
           <low>true</low>
         </errata-severity>
         <errata-type>
           <security>true</security>
           <bugfix>true</bugfix>
           <enhancement>true</enhancement>
         </errata-type>
       </errata-type-filter>
       <errata-ids-filter>
         <os>RHAS4</os>
         <arch>x86</arch>
         <channel-label>rhel-i386-as-4</channel-label>
         <errata-ids>
           <errata-id>RHSA-2009:0429</errata-id>
           <errata-id>RHBA-2009:0388</errata-id>
         </errata-ids>
       </errata-ids-filter>
      
       <update-level-filter>
         <os>RHAS4</os>
         <arch>x86</arch>
         <channel-label>rhel-i386-as-4</channel-label>
         <update-level>5</update-level>
     </update-level-filter>

    </subscription>
    </redhat-downloader-config>

How to create a Red Hat Linux patch catalog


Wrapping it up

Congratulations. You have downloaded Red Hat patch payload and metadata on a Linux machine. You have also set up a job that creates a patch catalog for RHEL that will run at a specific time in the future.

Where to go from here

Now that you have a serviceable patch catalog it is time to use it to measure your RHEL servers for patch compliance. See Walkthrough-Basic-Red-Hat-Linux-patch-analysis.

 

 

 

 

If you creating filters for RHEL 7, click here...

If you are creating a filter for RHEL 7, you cannot use the errata-type filter. You must use the channel type of filter instead.

<channel-type-filter>
     <os>RHES7</os>
     <arch>x86</arch>
     <channel-label>rhel-i386-server-7</channel-label>
</channel-type-filter>

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*