This is mainly post for myself to not forget, what was done.
To configure Openstack to provide object storage service via Cpeh you need to create RadosGW server (or HA cluster).
On openstack utility node:
openstack user create ceph --password-prompt openstack role add --user ceph --project admin admin
On ceph controller node, edit ceph.config file:
/etc/ceph/ceph.conf
[client.rgw.radosgw1.domain.tld] rgw_frontends = "civetweb port=80" rgw keystone url = http://keystone_url:5000 rgw keystone admin user = ceph rgw keystone admin password = secret rgw keystone admin project = admin rgw keystone admin domain = default rgw keystone api version = 3 rgw keystone token cache size = 500 rgw keystone revocation interval = 500 rgw s3 auth use keystone = true rgw keystone verify ssl = false rgw keystone accepted roles = admin, swift_admin
Note: ‘swift_admin’ represents a additional role, which can be added to non-admin user for him to be able create containers in Object store.
Install radosGw:
ceph-deploy install --rgw radosgw1.domain.tld ceph-deploy rgw create radosgw1.domain.tld
On opestack utility node:
openstack service create --name swift object-store
NOTE: ceph documentation is bit misleading. The command below:
keystone endpoint-create --service-id <id> --publicurl http://radosgw.example.com/swift/v1 \ --internalurl http://radosgw.example.com/swift/v1 --adminurl http://radosgw.example.com/swift/v1
Fails with openstack endpoint create: error: argument <interface>: invalid choice: error.
The solution is to create endpoints one-by-one:
openstack endpoint create --region RegionOne swift public http://radosgw1.domain.tld/swift/v1 openstack endpoint create --region RegionOne swift admin http://radosgw1.domain.tld/swift/v1 openstack endpoint create --region RegionOne swift internal http://radosgw1.domain.tld/swift/v1