Add ceph_client recipe

To use RBD as a block-storage backend, both the compute workers and the
cinder-api service need to be able to talk to the Ceph cluster.

Nova-compute makes use of the `rbd` CLI tool, cinder-api and libvirt use
librbd's Python binding.  Therefore, it might make sense to have this
"common" recipe provide the necessary infrastructure to a) reach the
ceph cluster and b) install ceph packages if need be.

Besides block storage, RBD can also be used for storing images, so
that's another reason to put this into openstack-common.

This commit also introduces a template, "ceph.client.keyring.erb", to
allow the creation of client keys from other recipes in a DRY way:

    template '/etc/ceph/client.cinder.keyring' do
      template 'ceph.client.keyring.erb'
      cookbook 'openstack-common'
      owner node['openstack']['block-storage']['user']
      group node['openstack']['block-storage']['group']
      mode '600'
      variables(
        name: rbd_user,
        key: rbd_key
      )
    end

A LWRP for this would be an improvement, but this should do for now.

Implements: blueprint rbd-for-block-storage

Change-Id: Icd046830c9542bd71fa3a1857c1f4d1bb3c41cec
Merge "Add ceph_client recipe"