genesis-index is a small CF-ready application that tracks
stemcells and releases from bosh.io and other
places. The [genesis][genesis] utility uses the index to look up
versions, URLs and SHA1 checksums of said releases and stemcells.
indexer is a small Bash script that provides a basic
command-line interface for dealing with the Genesis Index.
It obeys the following environment variables:
GENESIS_INDEX- The base URL of the Genesis Index. If not set, defaults tohttps://genesis.starkandwayne.comGENESIS_CREDS- The username and password for accessing the protected parts of the Index API, separated by a colon.INDEXER_DEBUG- Set to a non-empty value to enable debugging
Here are the commands:
indexer version (release|stemcell) NAME [VERSION]
indexer show (release|stemcell) NAME
indexer check (release|stemcell) NAME VERSION
indexer create (release|stemcell) NAME URL
indexer remove (release|stemcell) NAME [VERSION]
indexer releases
indexer stemcells
indexer help
So, for example, to get the latest version of the SHIELD BOSH release:
$ indexer version release shield
Or, to get the SHA1 sum of v19 of the Consul BOSH release:
$ indexer version release consul 19
The Genesis Index API strives to be simple and clean
GET /v1/release
GET /v1/release/latest
GET /v1/release/:name
GET /v1/release/:name/metadata
GET /v1/release/:name/latest
GET /v1/release/:name/v/:version
(this endpoint requires authentication)
POST /v1/release
{
"name": "release name",
"url": "https://wherever/to/get/it?v={{version}}"
}
(this endpoint requires authentication)
PUT /v1/release/:name/v/:version
(this endpoint requires authentication)
DELETE /v1/release/:name
(this endpoint requires authentication)
DELETE /v1/release/:name/v/:version
GET /v1/stemcell
GET /v1/stemcell/latest
GET /v1/stemcell/:name
GET /v1/stemcell/:name/metadata
GET /v1/stemcell/:name/latest
GET /v1/stemcell/:name/v/:version
(this endpoint requires authentication)
POST /v1/stemcell
{
"name": "stemcell name",
"url": "https://wherever/to/get/it?v={{version}}"
}
(this endpoint requires authentication)
PUT /v1/stemcell/:name/v/:version
(this endpoint requires authentication)
DELETE /v1/stemcell/:name
(this endpoint requires authentication)
DELETE /v1/stemcell/:name/v/:version
To deploy to Pivotal Web Services:
cf push
You need to bind a PostgreSQL database to your running app. The
application will automatically detect the service if it is tagged
postgres.
The following environment variables should also be set:
AUTH_USERNAME- The username for authenticated endpointsAUTH_PASSWORD- The password for authenticated endpoints
Tracking all those versions and letting Genesis Index know when they need updated is tedious work. Let's make the robots do it!
The pipeline/ directory contains the scripts for building a
concourse pipeline based off of the current configured set of
tracked releases and stemcells. To use it:
./pipeline/repipe
At the moment, it's tied directly to the Stark & Wayne concourse
installation, under the alias sw. That may change in the future
(Note: the ci/ directory name is reserved for a future in which
we want / need to do CI/CD for the Genesis Index code / deployment
itself.)
if anyone is interested in more flexibility.