Cloud Portal

Reference UI for the Fog Project

View project on GitHub

What is Cloud Portal?

The fog cloud abstraction library is an excellent way to interact with multiple cloud providers without having to deal with the complexity of their individual APIs. This is great for system-admins and developers, but what if you want normal users to be able to provision cloud instances? Enter Cloud Portal.

Cloud Portal allows you to create definitions of cloud components you want users to be able to request. Once requested it will automatically provision those instances on your cloud providers. Because it's powered by fog underneath, you get all the benefits of the abstration layer without needing to interact with multiple APIs.

Concepts

First an administrator will configure the products that it wants users to be able request. These products are comprised of multiple cloud components (services in the cloud, eg: a database, some compute etc) and each will be configured by the admin. It can support multiple cloud providers within the one product (ie: An Oracle Databae cloud service + some IaaS running on Amazon), though you will need to consider networking issues.

Once the products are configured, users can create projects that they can request environments for (DEV, TEST etc). Each environment is tied to one of the products, and once approved will automatically provision the instances in the cloud(s).

Getting Started

Download this git project and install it somewhere. You will also need to download a plugin for one of the supported cloud providers. This will add specific UI and business logic to handle the interactions with the fog library. At this point only the Oracle Cloud Platform is supported (feel free to create support for another provider) and is included by default in this project.

Next configure the server by running:

bundle install
to install the dependencies (the Oracle Cloud plugin will be installed at this point). Next, configure the database by running
rails db:migrate
rails db:seed
Finally you need to add a config file called app_config.yml to your config directory, containing the following:

---
defaults: &defaults
  oracle_username: username>
  oracle_password: password>
  oracle_domain: identity domain>
  oracle_compute_api: compute api
  oracle_region: region ('emea' for the european data centres, remove if using the US)
  oracle_storage_api: storage api
  plugins: 
    oraclecloud: 
      - name: Database
        class: CpOraclecloud::DatabaseComponent
      - name: WebLogic
        class: CpOraclecloud::JavaComponent

development:
  <<: *defaults

test:
  <<: *defaults

production:
  <<: *defaults

This will configure access to the Oracle Cloud (if you're just testing this out you don't need valid credentials to the cloud, it will use the mocking capabilities of the Fog library to simulate calls to the cloud platform). It will also tell the application what components from the plugin you support. Here we've included support for the Oracle Database and Java services. If we didn't have a subscription to them, we would just not include them in this config.

Log in to the application using the following default user credentials (you should change them if using this for real):

  • admin@example.com/welcome1: This user can do everything, but importantly can create and edit product definitions
  • jcooper@example.com/welcome1: This user can create projects and request environments, but can't edit product definitions

Creating pages manually

If you prefer to not use the automatic generator, push a branch named gh-pages to your repository to create a page manually. In addition to supporting regular HTML content, GitHub Pages support Jekyll, a simple, blog aware static site generator. Jekyll makes it easy to create site-wide headers and footers without having to copy them across every page. It also offers intelligent blog support and other advanced templating features.

Support or Contact

This is an open-source project provided with no warranty