Ceph Object Gateway support

Overview

Ceph project is a powerful distributed storage system. It contains object store and provides a RADOS Gateway Swift API which is compatible with OpenStack Swift API. These two APIs use different formats for their temporary URLs.

Ironic added support for RADOS Gateway temporary URL in the Mitaka release.

Configure Ironic and Glance with RADOS Gateway

  1. Install Ceph storage with RADOS Gateway. See Ceph documentation.

  2. Create RADOS Gateway credentials for Glance by executing the following commands on the RADOS Gateway admin host:

    sudo radosgw-admin user create --uid="GLANCE_USERNAME" --display-name="User for Glance"
    
    sudo radosgw-admin subuser create --uid=GLANCE_USERNAME --subuser=GLANCE_USERNAME:swift --access=full
    
    sudo radosgw-admin key create --subuser=GLANCE_USERNAME:swift --key-type=swift --secret=STORE_KEY
    
    sudo radosgw-admin user modify --uid=GLANCE_USERNAME --temp-url-key=TEMP_URL_KEY
    

    Replace GLANCE_USERNAME with a user name for Glance access, and replace STORE_KEY and TEMP_URL_KEY with suitable keys.

    Note: Do not use “–gen-secret” CLI parameter because it will cause the “radosgw-admin” utility to generate keys with slash symbols which do not work with Glance.

  3. Configure Glance API service for RADOS Swift API as backend. Edit the configuration file for the Glance API service (is typically located at /etc/glance/glance-api.conf). Replace RADOS_IP and PORT with the IP/port of the RADOS Gateway API service:

    [glance_store]
    
    stores = file, http, swift
    default_store = swift
    swift_store_auth_version = 1
    swift_store_auth_address = http://RADOS_IP:PORT/auth/1.0
    swift_store_user = GLANCE_USERNAME:swift
    swift_store_key = STORE_KEY
    swift_store_container = glance
    swift_store_create_container_on_put = True
    

    Note: RADOS Gateway uses FastCGI protocol for interacting with HTTP server. Read your HTTP server documentation if you want to enable HTTPS support.

  4. Restart Glance API service and upload all needed images.

  5. Change Ironic configuration file on the conductor host(s) as follows:

    [glance]
    
    swift_container = glance
    swift_api_version = v1
    swift_endpoint_url = http://RADOS_IP:PORT
    swift_temp_url_key = TEMP_URL_KEY
    
    [deploy]
    
    object_store_endpoint_type = radosgw
    
  6. Restart Ironic conductor service(s).