use "crux" for creating users/endpoints

this patch introduces the "crux" [1] tool for creating keystone
users, services, and endpoints in an idempotent fashion.  E.g., to
create a user that doesn't exist:

    $ crux user-create -n lars -t lars -p secret
    creating new tenant
    created tenant lars (d74cec5023c4428da533066bb11943db)
    creating new user lars
    created user lars (adf2c2d92e894a3d90a403c5885f192e)

And performing the same operation a second time:

    $ crux user-create -n lars -t lars -p secret
    using existing tenant lars (d74cec5023c4428da533066bb11943db)
    using existing user lars (adf2c2d92e894a3d90a403c5885f192e)

The behavior is similar for creating keystone endpoints.

[1]: https://github.com/larsks/crux

Change-Id: I694e0c1bdcdde595e1af2ee8ef5d0f239a9ad4cd
added hautoproxy auto-configuring haproxy

This image configures haproxy to forward connections for all available
kubernetes services.  It is meant to be run alongside other contains in
a kubernetes pod to provide access to "remote" services at a consistent
address so that keystone api endpoints can be configured in a sane
fashion.

Change-Id: Ic923c6a772f1bdf36b97b05a1d04de9e5b841ddd
Merge "use "crux" for creating users/endpoints"
Merge "added hautoproxy auto-configuring haproxy"
Validate JSON

Let's get that quickly so we can add a gate. There was some respacing
along the way (used http://jsonlint.com)

Change-Id: Id18b9f9757306cf3f06e6221a21a9f600db1bd2e
renamed keystone services

This renames the keystone services so that they are named by function,
rather than port number (which would be confusing if they were running
on a different port).

Change-Id: Ibb0263a133c28a104563df431870a9effe584012
remove "master" from mariadb k8s configs

Labelling things foo-master crept into this repository from the
kubernetes guestbook example (which has redis-master and redis-slaves).
We're not running clustered software at the moment so these labels are
unnecessary.

Change-Id: Ibf4cb2b005cc57bcb11e298dd5109cfe309c9ec3
hautoproxy testing with keystone

Change-Id: I908c53b62fff91b3ec7312175be14c709a1d6fd0
hautoproxy changes for glance

Change-Id: I757a7f1fef6843aa8d07f83d1c29caf3ec86db84
wait for required services before trying to use them

Change-Id: Ic54e945ee6fe469eb5de127b4d8bab9696896511
fix issues with glance scripts

- glance was using wrong var name for admin_password
- also missing "\" in several places, breaking multi-line crudini
  commands.
- glance was using wrong tenant name

Change-Id: I280d1db3ed576988f2bf29ea665e1922a37f8752
both config files should be populated

in the registry container, glance-manage appears to reference
glance-api.conf

Change-Id: I8c08d0b267568bdbfb1398d1c8a21d984ce98b38
replace endpoints on start

Change-Id: If83b589717a8327ba2191ba0584d36bf9e88dc75