tools/centos-mirror-tools
Scott Little fb3df727c0 failmoved logs polluted by non-errors
Problem:
   The wiki states that one of the criteria for verifying
a successful download_mirror.sh is that logs/*_failmove_*.log
be empty.

In reality the logs are not empty due to content improperly
routed to these logs.

e.g.

logs/L1_failmoved_url_centos.log:url_srpm:http://mirror.starlingx.cengn.ca:80/mirror/centos/centos/mirror.centos.org/centos/7.5.1804/updates/x86_64/Packages/iptables-1.4.21-24.1.el7_5.i686.rpm
logs/L1_failmoved_url_centos.log:http://mirror.starlingx.cengn.ca:80/mirror/centos/centos/mirror.centos.org/centos/7.5.1804/updates/x86_64/Packages/iptables-1.4.21-24.1.el7_5.x86_64.rpm
logs/L1_failmoved_url_centos.log:found_srpm:iptables-1.4.21-24.1.el7_5.x86_64.rpm
...

Solution:
1) 'url_srpm:' and 'found_srpm:' should not be routed to the
_failmove_ log.  We'll send those to stdout instead.

2) The http: log was traces to the get_url function returning two
entries.  It was discovered that appending --url to the yum download
command causes it to ignore the --archlist arguement.  As a result
the output must be manually filtered to find the arch we are looking
for.

Story: 2003906
Task: 27974
Change-Id: Iabf0859ff3317acc1f298e9c791bd47b95366477
Signed-off-by: Scott Little <scott.little@windriver.com>
2018-11-19 16:27:57 -05:00
..
rpm-gpg-keys Add missing key for CentOS Virtualization. 2018-08-16 15:26:41 -05:00
stx_mirror_scripts StarlingX mirror bug fixes 2018-11-07 11:26:18 -05:00
yum.repos.d Enable starlingx mirror 2018-11-02 13:33:00 -04:00
Dockerfile Split and move repo data files to yum.repo.d subdirectory. 2018-08-07 16:48:16 -04:00
README.rst Port documentation from markdown into rst file 2 2018-07-09 09:43:00 -05:00
dl_other_from_centos_repo.sh Enable starlingx mirror 2018-11-02 13:33:00 -04:00
dl_rpms.sh failmoved logs polluted by non-errors 2018-11-19 16:27:57 -05:00
dl_tarball.sh Enable starlingx mirror 2018-11-02 13:33:00 -04:00
download_mirror.sh StarlingX mirror bug fixes 2018-11-07 11:26:18 -05:00
make_stx_mirror_yum_conf.sh Enable starlingx mirror 2018-11-02 13:33:00 -04:00
mirror-check.sh Check for releasever in yum.conf before grepping 2018-09-06 11:18:28 -04:00
mvn-artifacts.lst StarlingX: Tar Compressed files repository 2018-07-03 06:04:28 -07:00
other_downloads.lst Add build tools 2018-06-08 17:01:43 -05:00
rpms_3rdparties.lst Upversion kubernetes client from 4.0 to 6.0 2018-11-02 10:27:08 -05:00
rpms_centos.lst Merge "Refactor patches for rsync package" 2018-11-19 01:31:13 +00:00
rpms_centos3rdparties.lst refactor audit 2018-11-16 02:21:03 +00:00
show_imported_rpm_gpg_keys.sh Add build tools 2018-06-08 17:01:43 -05:00
starlingx_add_pkgs.sh Merge "Split and move repo data files to yum.repo.d subdirectory." 2018-08-08 16:25:51 +00:00
tarball-dl.lst Rebase openstack-helm and openstack-helm-infra 2018-11-16 10:12:31 -05:00
url_utils.sh Enable starlingx mirror 2018-11-02 13:33:00 -04:00
utils.sh failmoved logs polluted by non-errors 2018-11-19 16:27:57 -05:00
utils_tests.sh Refactor on dl_rpms.sh 2018-09-10 09:57:39 -05:00
yum.conf.sample yum.conf.sample: Add example yum.conf 2018-09-13 13:56:39 -07:00

README.rst

Create mirror for StarlingX

Step 0 - Build the container

Build the docker image on your Linux host (with Docker supported). NOTE: if necessary you might have to set http/https proxy in your Dockerfile before building the docker image below.

$ docker build -t <your_docker_image_name>:<your_image_version> -f Dockerfile .

Step 1 - Run the container

The container shall be run from the same directory where the other scripts are stored.

$ docker run -it -v $(pwd):/localdisk <your_docker_image_name>:<your_image_version>

The container can also be run the following way, so the download_mirror.sh runs automatically without having to enter the container and the step 2can be simplified.

$ docker run -it -v $(pwd):/localdisk <your_docker_image_name>:<your_image_version> download_mirror.sh

As /localdisk is defined as the workdir of the container, the same folder name should be used to define the volume. The container will start to run and populate a logs and output folders in this directory. The container shall be run from the same directory where the other scripts are stored.

step 2 - Run the download_mirror.sh script

Once inside the container run the downloader script

$ ./download_mirror.sh

NOTE: in case there are some downloading failures due to network instability (or timeout), you should download them manually, to assure you get all RPMs listed in "rpms_from_3rd_parties.lst" and "rpms_from_centos_repo.lst".

step 3 - Copy the files to the mirror

After all downloading complete, copy the download files to mirror.

$ find ./output -name "*.i686.rpm" | xargs rm -f $ chown 751:751 -R ./output $ cp -rf output/stx-r1/ <your_mirror_folder>/

In this case <your_mirror_folder> can be whatever folder you want to use as mirror.

step 4 - Tweaks in the StarlingX build system.

NOTE: step below is not needed if you've synced the latest codebase.

Go into StarlingX build system (another container which hosts cgcs build system), and follow up below steps:

Debugging issues

The download_mirror.sh script will create log files in the form of centos_rpms_*.txt. After the download is complete, it's recommended to check the content of these files to see if everything was downloaded correctly.

A quick look into these files could be:

$ cd output/ $ cat missing

In this case, there shoudn't be any package in the "missing" files.