User-friendly, extensible client for cloud computing. Currently targeting OpenStack.
- 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!
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")
- Compute-intensive workloads ("I need a really big computer")
- Delivers on each instance:
- One-click terminal, no knowledge of SSH required
- One-click graphical dashboard
- Use with any OpenStack cloud
- Completely standalone app, no custom backend/server required
- App is engineered for ease of adoption, troubleshooting, and development
- No runtime exceptions!
- Open source and open development process. Come hack with us!
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.)
Right now we recommend trying Exosphere as an Electron app, rather than in a web 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 & 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
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.
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.
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.
Real-time chat (sign in with email or GitHub)
This uses electron-builder. See the link for more information.
npm install
npm run electron-build
npm run dist
(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
In the spirit of PEP 8, each file should import modules grouped into sections as follows:
- Elm Standard libraries
- Community libraries
- 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.
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