Install Cyborg from Source

This section describes how to install and configure the Acceleration Service for Ubuntu 18.04.1 LTS from source code.

Install from git repository

  1. Create a folder which will hold all Cyborg components.

    mkdir ~/cyborg
    
  2. Clone the cyborg git repository to the management server.

    cd ~/cyborg
    git clone https://opendev.org/openstack/cyborg
    
  3. Set up the cyborg config file

    First, generate a sample configuration file, using tox

    cd ~/cyborg/cyborg
    tox -e genconfig
    

    And make a copy of it for further modifications

    cp -r ~/cyborg/cyborg/etc/cyborg /etc
    cd /etc/cyborg
    ln -s cyborg.conf.sample cyborg.conf
    
  4. Install Cyborg packages.

    cd ~/cyborg/cyborg
    sudo python setup.py install
    

Common Configuration

Regardless of the package or code source you must do the following to properly setup the Accelerator Life Cycle Management service. A database, service credentials, and API endpoints must be created.

  1. To create the database, complete these steps:

    • Use the database access client to connect to the database server as the root user:

      $ mysql -u root -p
      
    • Create the cyborg database:

      CREATE DATABASE cyborg;
      
    • Grant proper access to the cyborg database:

      GRANT ALL PRIVILEGES ON cyborg.* TO 'cyborg'@'localhost' IDENTIFIED BY 'CYBORG_DBPASS';
      

      Replace CYBORG_DBPASS with a suitable password.

    • Exit the database access client.

      exit;
      
  2. Source the admin credentials to gain access to admin-only CLI commands:

    $ . admin-openrc
    
  3. To create the service credentials, complete these steps:

    • Create the cyborg user:

      $ openstack user create --domain default --password-prompt cyborg
      
    • Add the admin role to the cyborg user:

      $ openstack role add --project service --user cyborg admin
      
    • Create the cyborg service entities:

      $ openstack service create --name cyborg --description "Acceleration Service" accelerator
      
  4. Create the Acceleration service API endpoints:

    • If cyborg-api service is deployed using uwsgi, create the following endpoints:

    $ openstack endpoint create --region RegionOne \
      accelerator public http://<cyborg-ip>/accelerator/v2
    $ openstack endpoint create --region RegionOne \
      accelerator internal http://<cyborg-ip>/accelerator/v2
    $ openstack endpoint create --region RegionOne \
      accelerator admin http://<cyborg-ip>/accelerator/v2
    
    • Otherwise, if cyborg-api service is running as a python process, create the following endpoints:

    $ openstack endpoint create --region RegionOne \
      accelerator public http://<cyborg-ip>:6666/v2
    $ openstack endpoint create --region RegionOne \
      accelerator internal http://<cyborg-ip>:6666/v2
    $ openstack endpoint create --region RegionOne \
      accelerator admin http://<cyborg-ip>:6666/v2
    

    Note

    URLs (publicurl, internalurl and adminurl) may be different depending on your environment.

Configure Cyborg

  1. Edit cyborg.conf with your favorite editor. Below is an example which contains basic settings you likely need to configure.

    [DEFAULT]
    transport_url = rabbit://%RABBITMQ_USER%:%RABBITMQ_PASSWORD%@%OPENSTACK_HOST_IP%:5672/
    use_syslog = False
    state_path = /var/lib/cyborg
    debug = True
    
    ...
    
    [api]
    host_ip = 0.0.0.0
    
    ...
    
    [database]
    connection = mysql+pymysql://%DATABASE_USER%:%DATABASE_PASSWORD%@%OPENSTACK_HOST_IP%/cyborg
    
    ...
    
    [service_catalog]
    cafile = /opt/stack/data/ca-bundle.pem
    project_domain_id = default
    user_domain_id = default
    project_name = service
    password = cyborg
    username = cyborg
    auth_url = http://%OPENSTACK_HOST_IP%/identity
    auth_type = password
    
    ...
    
    [placement]
    project_domain_name = Default
    project_name = service
    user_domain_name = Default
    password = password
    username = placement
    auth_url = http://%OPENSTACK_HOST_IP%/identity
    auth_type = password
    auth_section = keystone_authtoken
    
    ...
    
    [nova]
    project_domain_name = Default
    project_name = service
    user_domain_name = Default
    password = password
    username = nova
    auth_url = http://%OPENSTACK_HOST_IP%/identity
    auth_type = password
    auth_section = keystone_authtoken
    
    ...
    
    [keystone_authtoken]
    memcached_servers = localhost:11211
    signing_dir = /var/cache/cyborg/api
    cafile = /opt/stack/data/ca-bundle.pem
    project_domain_name = Default
    project_name = service
    user_domain_name = Default
    password = cyborg
    username = cyborg
    auth_url = http://%OPENSTACK_HOST_IP%/identity
    auth_type = password
    
  2. Create database tables for Cyborg.

    cyborg-dbsync --config-file /etc/cyborg/cyborg.conf upgrade
    
  3. Install Cyborg API via WSGI api-uwsgi

Note

Cyborg-api service can also be run as a Python command that runs a web serve, which can be launched as follows with different Acceleration service API endpoints as mentioned in Prerequisites part. However, we would like to recommend you the uwsgi way since when a project provides a WSGI application the API service gains flexibility in terms of deployment, performance, configuration and scaling. BYW, if you choose devstack to deploy your acceleration service, uwsgi is a default choice.

cyborg-api –config-file=/etc/cyborg/cyborg.conf

  1. Launch Cyborg Conductor, Cyborg Agent services. Open a separate terminal for each service since the console will be locked by a running process.

    cyborg-conductor --config-file=/etc/cyborg/cyborg.conf
    cyborg-agent --config-file=/etc/cyborg/cyborg.conf