Added autodiscovery using consul for ceph nodes

NOTE: This PR depends on PR #3 in jiocloud/puppet-ceph.

Here is the flow

1. stmonleader1 (Only one in the role stmonleader), initialize itself as ceph
mon and register itself to consul as "stmon" service
2. All other ceph servers and clients (All st, stmon, cp, oc roles) will wait
for at least one node with active "stmon" service in consul before they
initialize.
3. After the storage cluster initialization, both stmon and stmonleader will
serve the same purpose.

Here are the internals and changes.

* rjil::ceph will not add ceph mon configuration details now - this has been
  moved as different defines.
* rjil::ceph::mon::mon_config will add mon configuration only for ceph mons.
  It get stmon service IPs from consul and configure them.
  * It add its own mon configuration with mon_name and id as its hostname and
mon_addr with its IP address of private interface. The reason why this is
required is that ceph init script only start that mon configuration which match
the node's hostname and mon_addr must be in form of IPaddress:port - a name even
which resolves to IP will not work.
  * It add rest of the mon configuration just with IP address got from consul as
    both mon_name, id and mon_addr.
* rjil::ceph::mon_config will add mon configuration for all ceph osds and ceph
 clients. It stmon service IPs from consul and configure them as both mon_name,
id and mon_addr.
* dns_resolve is a custom function to do dns forward lookup and return IP list.
* ceph mon test script is added which will be used as check_script for stmon
consul service
* Ceph mon test script need root access, so added the user "consul" sudoers.
* Added service blocker for st and stmon roles to make sure they wait for at
least one stmon node (stmonleader) is up before they start.
* Added appropriate node definition in cloud.vagrantlxc.yaml.
* Added spec tests.
Do not randomly change journal size

Just fail. Randomly adjusting the passed in
journal size is extremely confusing and not
all that helpful.

It is better to just fail.
Update for orchestration of ceph install

- adds stmon roles to cloud resource files
- adds ceph specific data to at and vagrant-vbox hiera
- changes define rjil::ceph::mon::mon_config to a class
- adds mon_config as a class param
- allow option in mon_config to set leader vs. follower
- ensure followers fail when mon_config is empty
- change rjil::ceph::mon_config to class
- fix dependencies on blocker resource
- comment osd classes from mon roles (b/c it does not
  work yet)
- make stmonleader a service in consul so it can be
  blocked on
- pin ceph to the correct branch
Ensure that consul is installed as a part of bootstapping

This patch adds consul config to jiocloud to ensure
that it happens during the intial bootstrapping
phase. This is so that we can assume that DNS
can resolve external addresses during Puppet
compile time, so that we can use a Puppet
function to determine if a list of ip addresses
has been registered for a service.

It also fixes the following things required
to support this feature:

1. removes the consul user code from the manifest,
b/c it was causing the sudoers file to be overwriteen
when consul is installed as a part of the bootstrapping
process. The user is instead set in hiera, just like
other system users.

2. Updates service_blocker to ensure that is only
happens after services have been refreshed in
consul.

3. Ensures that consul service does not start for
agents until at least one server is registered via
the discovery token.

4. Ensure that service restarts force consul reload
Add ntp

This commit adds ntp support

1. adds an ntp class included by the system
class

2. assumes that etcd node will also serve as the
ntp server (this assumpton is made b/c the k/v
server and ntp should have the same cardinality
requirements for quorum.
Pin revision for cassandra

Currently, the upstream repo for cassandra
has changed in a way that breaks our deployent.

This commit pins the revision to the last known
working revision.
Only update local version once validation passes

Previously, the current version was set as soon
as puppet completed without error. This was problematic
for cases where Puppet may need to run multiple times
to result in a converged state. Although this is not
a desired case, this is currently required for ceph
installation.

It also makes sense to continue trying to re-running Puppet
when in an unvalidated state in hopes that it might result
in a functional system.

This commit ensures that the current version is not set
until the actual service has been validated.
Increase timeout

Builds take longer b/c of ceph.
Merge pull request #97 from bodepd/ceph

Ceph
Glance rbd backend support

Added glance rbd backend support.