.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2019 Samsung Electronics Co., Ltd.

OOM ONAP Offline Installer Package Build Guide
=============================================================

This document is describing procedure for building offline installer packages. It is supposed to be triggered on server with internet connectivity and will download all artifacts required for ONAP deployment based on our static lists. The server used for the procedure in this guide is preferred to be separate build server.

Procedure was completely tested on RHEL 7.4 as it’s tested target platform, however with small adaptations it should be applicable also for other platforms.

Part 1. Preparations
--------------------

We assume that procedure is executed on RHEL 7.4 server with \~300G disc space, 16G+ RAM and internet connectivity

More-over following sw packages has to be installed:

* for the Preparation (Part 1), the Download artifacts for offline installer (Part 2) and the application helm charts preparation and patching (Part 4)
    -  git
    -  wget

* for the Download artifacts for offline installer (Part 2) only
    -  createrepo
    -  dpkg-dev
    -  python2-pip

* for the Download artifacts for offline installer (Part 2) and the Populate local nexus (Part 3)
    -  nodejs
    -  jq
    -  docker (exact version docker-ce-17.03.2)

* for the Download artifacts for offline installer (Part 2) and for the Application helm charts preparation and patching (Part 4)
    -  patch

* for the Populate local nexus (Part 3)
    -  twine

This can be achieved by following commands:

::

    # Register server
    subscription-manager register --username <rhel licence name> --password <password> --auto-attach

    # enable epel for npm and jq
    rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    # enable rhel-7-server-e4s-optional-rpms in /etc/yum.repos.d/redhat.repo

    # install following packages
    yum install -y expect nodejs git wget createrepo python2-pip jq patch

    pip install twine

    # install docker
    curl https://releases.rancher.com/install-docker/17.03.sh | sh

Then it is necessary to clone all installer and build related repositories and prepare the directory structure.

::

    # prepare the onap build directory structure
    cd /tmp
    git clone -b casablanca https://gerrit.onap.org/r/oom/offline-installer
    cd onap-offline

Part 2. Download artifacts for offline installer
------------------------------------------------

**Note: Skip this step if you have already all necessary resources and continue with Part 3. Populate local nexus**

All artifacts should be downloaded by running the download script as follows:

./build/download_offline_data_by_lists.sh <project>

For example:

``$ ./build/download_offline_data_by_lists.sh onap_3.0.0``

Download is as reliable as network connectivity to internet, it is highly recommended to run it in screen and save log file from this script execution for checking if all artifacts were successfully collected. Each start and end of script call should contain timestamp in console output. Downloading consists of 10 steps, which should be checked at the end one-by-one.

**Verify:** *Please take a look on following comments to respective
parts of download script*

[Step 1/10 Download collected docker images]

=> image download step is quite reliable and contain retry logic

E.g

::

    == pkg #143 of 163 ==
    rancher/etc-host-updater:v0.0.3
    digest:sha256:bc156a5ae480d6d6d536aa454a9cc2a88385988617a388808b271e06dc309ce8
    Error response from daemon: Get https://registry-1.docker.io/v2/rancher/etc-host-updater/manifests/v0.0.3: Get
    https://auth.docker.io/token?scope=repository%3Arancher%2Fetc-host-updater%3Apull&service=registry.docker.io: net/http: TLS handshake timeout
    WARNING [!]: warning Command docker -l error pull rancher/etc-host-updater:v0.0.3 failed.
    Attempt: 2/5
    INFO: info waiting 10s for another try...
    v0.0.3: Pulling from rancher/etc-host-updater
    b3e1c725a85f: Already exists
    6a710864a9fc: Already exists
    d0ac3b234321: Already exists
    87f567b5cf58: Already exists
    16914729cfd3: Already exists
    83c2da5790af: Pulling fs layer
    83c2da5790af: Verifying Checksum
    83c2da5790af: Download complete
    83c2da5790af: Pull complete

[Step 2/10 Build own nginx image]

=> there is no hardening in this step, if it failed needs to be
retriggered. It should end with **Successfully built <id>**

[Step 3/10 Save docker images from docker cache to tarfiles]

=> quite reliable, retry logic in place

[Step 4/10 move infra related images to infra folder]

=> should be safe, precondition is not failing step(3)

[Step 5/10 Download git repos]

=> potentially unsafe, no hardening in place. If it not download all git repos. It has to be executed again. Easiest way is probably to comment-out other steps in load script and run it again.

E.g.

::

    Cloning into bare repository
    'github.com/rancher/community-catalog.git'...
    error: RPC failed; result=28, HTTP code = 0
    fatal: The remote end hung up unexpectedly
    Cloning into bare repository 'git.rancher.io/rancher-catalog.git'...
    Cloning into bare repository
    'gerrit.onap.org/r/testsuite/properties.git'...
    Cloning into bare repository 'gerrit.onap.org/r/portal.git'...
    Cloning into bare repository 'gerrit.onap.org/r/aaf/authz.git'...
    Cloning into bare repository 'gerrit.onap.org/r/demo.git'...
    Cloning into bare repository
    'gerrit.onap.org/r/dmaap/messagerouter/messageservice.git'...
    Cloning into bare repository 'gerrit.onap.org/r/so/docker-config.git'...

[Step 6/10 Download http files]

[Step 7/10 Download npm pkgs]

[Step 8/10 Download bin tools]

=> work quite reliably, If it not download all artifacts. Easiest way is probably to comment-out other steps in load script and run it again.

[Step 9/10 Download rhel pkgs]

=> this is the step which will work on rhel only, for other platform different packages has to be downloaded.

Following is considered as sucessfull run of this part:

::

      Available: 1:net-snmp-devel-5.7.2-32.el7.i686 (rhel-7-server-rpms)
        net-snmp-devel = 1:5.7.2-32.el7
      Available: 1:net-snmp-devel-5.7.2-33.el7_5.2.i686 (rhel-7-server-rpms)
        net-snmp-devel = 1:5.7.2-33.el7_5.2
    Dependency resolution failed, some packages will not be downloaded.
    No Presto metadata available for rhel-7-server-rpms
    https://ftp.icm.edu.pl/pub/Linux/fedora/linux/epel/7/x86_64/Packages/p/perl-CDB_File-0.98-9.el7.x86_64.rpm:
    [Errno 12\] Timeout on
    https://ftp.icm.edu.pl/pub/Linux/fedora/linux/epel/7/x86_64/Packages/p/perl-CDB_File-0.98-9.el7.x86_64.rpm:
    (28, 'Operation timed out after 30001 milliseconds with 0 out of 0 bytes
    received')
    Trying other mirror.
    Spawning worker 0 with 230 pkgs
    Spawning worker 1 with 230 pkgs
    Spawning worker 2 with 230 pkgs
    Spawning worker 3 with 230 pkgs
    Spawning worker 4 with 229 pkgs
    Spawning worker 5 with 229 pkgs
    Spawning worker 6 with 229 pkgs
    Spawning worker 7 with 229 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete

[Step 10/10 Download sdnc-ansible-server packages]

=> there is again no retry logic in this part, it is collecting packages for sdnc-ansible-server in the exactly same way how that container is doing it, however there is a bug in upstream that image in place will not work with those packages as old ones are not available and newer are not compatible with other stuff inside that image

Part 3. Populate local nexus
----------------------------

Prerequisites:

- All data lists and resources which are pushed to local nexus repository are available
- Following ports are not occupied buy another service: 80, 8081, 8082, 10001
- There's no docker container called "nexus"

**Note: In case you skipped the Part 2 for the artifacts download,
please ensure that the copy of resources data are untarred in
./install/onap-offline/resources/**

Whole nexus blob data tarball will be created by running script
build\_nexus\_blob.sh. It will load the listed docker images, run the
Nexus, configure it as npm and docker repository. Then it will push all
listed npm packages and docker images to the repositories. After all is
done the repository container is stopped and from the nexus-data
directory is created tarball.

There are mandatory parameters need to be set in configuration file:

+------------------------------+------------------------------------------------------------------------------------------+
| Parameter                    | Description                                                                              |
+==============================+==========================================================================================+
| NXS\_SRC\_DOCKER\_IMG\_DIR   | resource directory of docker images                                                      |
+------------------------------+------------------------------------------------------------------------------------------+
| NXS\_SRC\_NPM\_DIR           | resource directory of npm packages                                                       |
+------------------------------+------------------------------------------------------------------------------------------+
| NXS\_SRC\_PYPI\_DIR           | resource directory of npm packages                                                      |
+------------------------------+------------------------------------------------------------------------------------------+
| NXS\_DOCKER\_IMG\_LIST       | list of docker images to be pushed to Nexus repository                                   |
+------------------------------+------------------------------------------------------------------------------------------+
| NXS\_DOCKER\_WO\_LIST        | list of docker images which uses default repository                                      |
+------------------------------+------------------------------------------------------------------------------------------+
| NXS\_NPM\_LIST               | list of npm packages to be published to Nexus repository                                 |
+-------------------------------------------------------------------------------------------------------------------------+
| NXS\_PYPI\_LIST              | list of pypi packages to be published to Nexus repository                                |
+------------------------------+------------------------------------------------------------------------------------------+
| NEXUS\_DATA\_TAR             | target tarball of Nexus data path/name                                                   |
+------------------------------+------------------------------------------------------------------------------------------+
| NEXUS\_DATA\_DIR             | directory used for the Nexus blob build                                                  |
+------------------------------+------------------------------------------------------------------------------------------+
| NEXUS\_IMAGE                 | Sonatype/Nexus3 docker image which will be used for data blob creation for this script   |
+------------------------------+------------------------------------------------------------------------------------------+

Some of the docker images using default registry requires special
treatment (e.g. they use different ports or SSL connection), therefore
there is the list NXS\_DOCKER\_WO\_LIST by which are the images retagged
to be able to push them to our nexus repository.

**Note: It's recomended to use abolute paths in the configuration file
for the current script**

Example of the configuration file:

::

    NXS_SRC_DOCKER_IMG_DIR="/tmp/onap-offline/resources/offline_data/docker_images_for_nexus"
    NXS_SRC_NPM_DIR="/tmp/onap-offline/resources/offline_data/npm_tar"
    NXS_DOCKER_IMG_LIST="/tmp/onap-me-data_lists/docker_img.list"
    NXS_DOCKER_WO_LIST="/tmp/onap-me-data_lists/docker_no_registry.list"
    NXS_NPM_LIST="/tmp/onap-offline/bash/tools/data_list/npm_list.txt"
    NXS_SRC_PYPI_DIR="/tmp/onap-offline/resources/offline_data/pypi"
    NXS_DOCKER_IMG_LIST="/tmp/onap-me-data_lists/docker_img.list"
    NXS_DOCKER_WO_LIST="/tmp/onap-me-data_lists/docker_no_registry.list"
    NXS_NPM_LIST="/tmp/onap-offline/bash/tools/data_list/onap_3.0.0-npm.list"
    NEXUS_DATA_TAR="/root/nexus_data.tar"
    NEXUS_DATA_DIR="/tmp/onap-offline/resources/nexus_data"
    NEXUS_IMAGE="/tmp/onap-offline/resources/offline_data/docker_images_infra/sonatype_nexus3_latest.tar"

Once everything is ready you can run the script as following example:

``$ ./install/onap-offline/build_nexus_blob.sh /root/nexus_build.conf``

Where the nexus\_build.conf is the configuration file and the
/root/nexus\_data.tar is the destination tarball

**Note: Move, link or mount the NEXUS\_DATA\_DIR to the resources
directory if there was different directory specified in configuration or
use the resulting nexus\_data.tar for movement between machines.**

Once the Nexus data blob is created, the docker images and npm packages
can be deleted to reduce the package size as they won't be needed in the
installation time:

E.g.

::

    rm -f /tmp/onap-offline/resources/offline_data/docker_images_for_nexus/*
    rm -rf /tmp/onap-offline/resources/offline_data/npm_tar

Part 4. Application helm charts preparation and patching
--------------------------------------------------------

This is about to clone oom repository and patch it to be able to use it
offline. Use the following command:

./build/fetch\_and\_patch\_charts.sh <helm charts repo>
<commit/tag/branch> <patchfile> <target\_dir>

For example:

``$ ./build/fetch_and_patch_charts.sh https://gerrit.onap.org/r/oom 3.0.0-ONAP /tmp/offline-installer/patches/casablanca_3.0.0.patch /tmp/oom-clone``

Part 5. Creating offline installation package
---------------------------------------------

For the packagin itself it's necessary to prepare configuration. You can
use ./build/package.conf as template or
directly modify it.

There are some parameters needs to be set in configuration file.
Example values below are setup according to steps done in this guide to package ONAP.

+---------------------------------------+------------------------------------------------------------------------------+
| Parameter                             | Description                                                                  |
+=======================================+==============================================================================+
| HELM\_CHARTS\_DIR                     | directory with Helm charts for the application                               |
|                                       | Example: /tmp/oom-clone/kubernetes                                           |
+---------------------------------------+------------------------------------------------------------------------------+
| APP\_CONFIGURATION                    | application install configuration (application_configuration.yml) for        |
|                                       | ansible installer and custom ansible role code directories if any.           |
|                                       | Example:                                                                     |
|                                       | APP_CONFIGURATION=(                                                          |
|                                       |    /tmp/offline-installer/config/application_configuration.yml               |
|                                       |    /tmp/offline-installer/patches/onap-casablanca-patch-role                 |
|                                       | )                                                                            |
+---------------------------------------+------------------------------------------------------------------------------+
| APP\_BINARY\_RESOURCES\_DIR           | directory with all (binary) resources for offline infra and application      |
|                                       | Example: /tmp/onap-offline/resources                                         |
+---------------------------------------+------------------------------------------------------------------------------+
| APP\_AUX\_BINARIES                    | additional binaries such as docker images loaded during runtime   [optional] |
+---------------------------------------+------------------------------------------------------------------------------+

Offline installer packages are created with prepopulated data via
following command run from offline-installer directory

./build/package.sh <project> <version> <packaging target directory>

E.g.

``$ ./build/package.sh onap 1.0.1 /tmp/package"``


So in the target directory you should find tar files with

offline-<PROJECT\_NAME>-<PROJECT\_VERSION>-sw.tar

offline-<PROJECT\_NAME>-<PROJECT\_VERSION>-resources.tar

offline-<PROJECT\_NAME>-<PROJECT\_VERSION>-aux-resources.tar
