Code Monkey home page Code Monkey logo

exosphere's Introduction

Exosphere

User-friendly, extensible client for cloud computing. Currently targeting OpenStack.

development stage: alpha pipeline status hi mom!

  • Do you have access to an OpenStack cloud? Want a really pleasant way to use it?
  • Are you a cloud operator? Want to offer same to your users?

...then Exosphere may be for you!

Features and Goals

Right now:

  • The most user-friendly way to manage cloud computers on OpenStack
  • Works great for:
    • Compute-intensive workloads ("I need a really big computer")
      • Including GPU instances
    • Persistent servers ("I need this one to stick around for years")
    • Disposable experiments ("I need a place to try this thing")
  • Delivers on each instance:
  • Use with any OpenStack cloud
  • Completely standalone app, no custom backend/server required
  • App is engineered for ease of adoption, troubleshooting, and development

Soon:

  • Support for the following as first-class resources:
    • Docker and Singularity containers
    • Jupyter Notebooks
  • Compute cluster orchestration: head and worker nodes
  • One-click remote graphical session to your cloud instances (with support for 3D GPU acceleration). No knowledge of VNC/SSH/etc. required!
  • Community-supported deployment automations for custom services and scientific workflows

Later:

  • Multi-cloud support (providers other than OpenStack)
  • Automated deployment of data processing clusters (Hadoop, Spark, etc.)

Try Exosphere

Right now we recommend trying Exosphere as an Electron app, rather than in a web browser.

Build and Run Exosphere as Electron App

First install node.js + npm. (If you use Ubuntu/Debian you may also need to apt-get install nodejs-legacy.)

Then install the project's dependencies (including Elm & Electron). Convenience command to do this (run from the root of the exosphere repo):

npm install

To compile and run the app:

npm run electron-build
npm run electron-start-dev

To watch for changes to *.elm files, auto-compile when they change, and hot-reloading of the app:

npm run electron-watch-dev

Based on the instructions found here:

https://medium.com/@ezekeal/building-an-electron-app-with-elm-part-1-boilerplate-3416a730731f

Try Exosphere in a browser (not currently recommended)

Try Exosphere on GitLab Pages

Why is a Browser Not Recommended?

Connecting to cloud providers from Exosphere running in a browser is currently problematic because of the same-origin policy (making cross-origin credentialed requests and viewing headers of the responses). A way around this is to 1. install a browser extension like CORS Everywhere, and/or(?) 2. Connect to an OpenStack cloud whose Keystone is configured to allow cross-origin requests. This works for testing/evaluation purposes but is not recommended for security reasons.

Build and Run Exosphere (in a browser)

First install node.js + npm. (If you use Ubuntu/Debian you may also need to apt-get install nodejs-legacy.)

Then install the project's dependencies (including Elm). Convenience command to do this (run from the root of the exosphere repo):

npm install

To compile the app:

elm make src/Exosphere.elm

Then browse to the compiled index.html.

Note about self-signed certificates for terminal and server dashboard

Currently the Cockpit dashboard and terminal for a provisioned server is served using a self-signed TLS certificate. While we work on a permanent solution which does not require trusting self-signed certificates we have to enable the ignore-certificate-errors switch for Electron.

// Uncomment this for testing with self-signed certificates
app.commandLine.appendSwitch('ignore-certificate-errors', 'true');

Do not enable this by default.

Until the permanent solution has been implemented, please do not use the terminal or server dashboard functionality over untrusted networks, and do not type or transfer any sensitive information into a server via a terminal window or dashboard view.

Collaborate

Real-time chat (sign in with email or GitHub)

Package Exosphere as a distributable Electron app

This uses electron-builder. See the link for more information.

On/For Mac OS X

npm install
npm run electron-build
npm run dist

On/For Linux

(Tested with Ubuntu 16.04)

npm install
npm run electron-build
npx electron-builder --linux deb tar.xz

Note:

  • Currently only tested with MacOS and Linux (Ubuntu 16.04) - need testing and instructions for Windows.
  • Add instructions for code signing

Style Guide

Imports

In the spirit of PEP 8, each file should import modules grouped into sections as follows:

  1. Elm Standard libraries
  2. Community libraries
  3. Local app-specific libraries/imports

Unlike Python/PEP8 you will not be able to separate each section with a space because elm-format will remove the spaces. The spaces are not an Elm convention.

The imports in each section should be in alphabetical order.

OpenStack and CORS

In order to use Exosphere in a browser as opposed to Electron (again, this is still not recommended), OpenStack services must be configured to allow cross-origin requests. This is because Exosphere is served from a different domain than the OpenStack APIs.

(todo describe security implications)

The OpenStack admin guide has a great page on how to enable CORS across OpenStack services. This guide was removed but is fortunately still accessible via Wayback Machine.

At minimum, need the following in glance.conf, keystone.conf, and neutron.conf:

[cors]
allowed_origin: *

The following in nova.conf:

[cors]
allowed_origin = *
allow_headers = Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma,X-Custom-Header,OpenStack-API-Version,X-Auth-Token

exosphere's People

Contributors

c-mart avatar julianpistorius avatar marneedear avatar lenards avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.