IGTF:Distribution Build
The International Grid Trust Federastion (IGTF) maintains a distribution of trust anchors for use by relying parties, based on a Common Source maintained by the chairs or trusted introducers of the member PMAs: David Groep for the EUGridPMA, Mike Helm for the TAGPMA, and Yoshio Tanaka for the APGridPMA APGridPMA. The Common Source is hosted on the EUGridPMA CVS Repository, alongside the build tools.
Working with the CVS CA Repository
The CVS Repository is hosted at cvs.eugridpma.org at the Nikhef Data Processing facility in the secured services network (194.171.96.67). The CVS settings are
CVSROOT=:ext:username@cvs.eugridpma.org:/cvs/eugridpma CVS_RSH=ssh
where username is the one assigned for ssh login (via cvs only!) to the TI for the PMA. The CVS repository contains two branches
- CA repository carep/ hosting the trust anchors and the IGTF build tools
- utilities provided by the IGTF, including the old (v2) fetch-crl, the LCG and EGI build tools, the PMA expiration-warning tool, and the GFD.125 compliance test suite
When working with the CA repository, make sure it remains consistent and secure, and periodically check for intrusions by comparing with a local trusted host. The typical work flow is:
- go to your own secure build host
- do a "cvs update -A -R -d ." in the carep/ directory
- review manually any changes imported!
- apply your own updates and carefully review them for compliance with the PMA status, GFD.125 and a valid signing_policy and namespaces file (for all accredited CAs)
- update the CHANGES file in the top-level directory
- do a "cvs commit" of the tree, checking if all changes made were found, and the CHANGES file updated
Build tools
Go to the carep/buildtools directory. Until at least mid-2012, we will build two formats of the IGTF distribution: a dual-hash OpenSSLv1 compliance version (with debian support), and a old-style single-hash version (without Debian support). Each of these formats uses its own build tool:
- cabuild3.pl
- dual-hash distribution with all formats. This is the version being actively developed and maintained, and any new formats or unit tests should be added here
- cabuild.pl
- single-hash old distribution for legacy/OSG/VOMS-Admin compatibility.
cabuild3
- go to the buildtools/ directory
- make sure the VERSION file has the correct version number (e.g. "1.99")
- make sure the RPM signing key (keyID 3CDBBC71) is available and defined in the rpmmacros file. Insert the secure USB key from the safe in the build host
- make sure an RPM build directory structure is available
- run the build tool, with signing ("-s"), overwriting any previous content ("-f"), with Debian support ("--mkdeb"), and writing the distribution output to a directory ("-o dirname")
./cabuild3.pl --version=AUTO -s -f -o ~/1.99 --mkdeb
- give the passphrase
- copy the new distribution to the preview or target web site
rsync -e ssh -rav --delete ~/1.99 webegp@weikuip:/project/srv/www/site/eugridpma-dist/html/distribution/tests/PMA-PRIVATE-PREVIEW/
- remove the USB signing key from the build host and put it back in the safe (or bujild the legacy distro or EGI release now)
cabuild
- build the new-style distribution first, to run the unit tests
- run the old-build command, writing to a new directory ("-old")
./cabuild.pl --version=AUTO -s -f -o ~/1.99-old
- copy the new "old" distribution to the preview or target web site
rsync -e ssh -rav --delete ~/1.40-old webegp@weikuip:/project/srv/www/site/eugridpma-dist/html/distribution/tests/PMA-PRIVATE-PREVIEW/
- remove the USB signing key from the build host and put it back in the safe (or bujild the legacy distro or EGI release now)
Signing keys
The IGTF uses the EUGridPMA Signing Key #3 for signing the distribution, RPMs and Debian repo files:
pub 1024D/3CDBBC71 2005-07-12 Key fingerprint = D12E 9228 22BE 64D5 0146 188B C32D 99C8 3CDB BC71 uid EUGridPMA Distribution Signing Key 3 <info@eugridpma.org>
The RPM macros file should read:
%_topdir /home/davidg/rpmbuild %_tmppath /home/davidg/rpmbuild/tmp %_signature gpg %_gpg_path /home/davidg/.gnupg/ %_gpg_name 3CDBBC71
where ~/.gnupg is a symlink to the USB mount point of the secure key, and the following directories must exist for rpmbuild to succeed
mkdir -p /home/davidg/rpmbuild/ mkdir -p /home/davidg/rpmbuild/SOURCES mkdir -p /home/davidg/rpmbuild/SPECS mkdir -p /home/davidg/rpmbuild/SRPMS mkdir -p /home/davidg/rpmbuild/RPMS mkdir -p /home/davidg/rpmbuild/RPMS/noarch mkdir -p /home/davidg/rpmbuild/BUILD mkdir -p /home/davidg/rpmbuild/tmp
Publication Repositories
The publication repository (dist.eugridpma.info) is hosted on the NDPF secure services network at 194.171.96.74 (with a luke-warm space at our fail-over location in Haarlem at lama.nikhefhousing.nl). Both services should be in synch, and this has to be done manually (see later).
Location of the web site data
All of the "distribution/" bit of the web site is contained at
/project/srv/www/site/eugridpma-dist/html/distribution/
as a flat-file repository. The web site cannot do any dynamic content (on purpose, it has no scripting language installed), so what you see is what you get. The IGTF distribution is contained in the igtf/subdirectory.
To install the distribution, on the secure build host build both old and new formats, and then do (for e.g. 1.99):
rsync -e ssh -rav --delete ~/1.99 webegp@weikuip:/project/srv/www/site/eugridpma-dist/html/distribution/igtf/ rsync -e ssh -rav --delete ~/1.99-old webegp@weikuip:/project/srv/www/site/eugridpma-dist/html/distribution/igtf/
then go to the distribution web site host and update the links to make it active:
rm current current-new current-old 1.98-is-current ; ln -s 1.99 current ; ln -s 1.99 current-new ; ln -s 1.99-old current-old ; touch 1.99-is-current
and then immediately go to the public web site (on zeis, www.eugridpma.org) and upload
- the news letter:
- take the previous one as a template
- update the version numbers everywhere (global replace)
- put in the new changelog file
- upload the newsletter to the www.eugridpma.org web site under newsletters/
- update the home page of the eugridpma to update the vresion number everywhere (use vi ;-)
- update the news block on the right on the same home page (still using vi)
- sync the public web site (on zeis) to the warm-spare public site (dodo) in haarlem using ./push-to-haarlem)
- send out the newsletter (mind the date/time) to announce@eugridpma.org (you should get a posting ack from mailman)
Syncing the luke-warm spare
Login to the master node as the service user, and from its home directory run the synch script after every change on the master host:
./push-dist-to-haarlem
You as a TI will be able to access the warm-spare with the same SSH public key and the same service account name.
And the same for the public web site (on zeis) when you change it:
./push-to-haarlem