SafeScale is an Infrastructure and Platform as Code tool.
SafeScale offers an APIs and a CLI tools to deploy versatile computing clusters that span multiple Clouds. These APIs and CLIs are divided in 2 service layers:
SafeScale Infra offers an API to completely abstract the IaaS services offered by Cloud platforms providers. It allows to:
SafeScale Infra provides a complete abstraction overlay over underlying IaaS APIs to mask their heterogeneity.
Safescale Platform provides PaaS (Platform as a Service) capabilities:
Platform can deploy a standard cluster with minimal features:
For example the following command creates a Kubernetes cluster named k8s-cluster
using Normal
complexity (3 masters and 3 nodes):
$ safescale cluster create --flavor k8s --complexity Normal k8s-cluster
Supplemental software and/or configurations can be installed in 3 ways on SafeScale Hosts or Clusters:
$ safescale ssh run -c "apt install nginx" my-host
using "SafeScale Feature
", that can be seen as the "ansible" for SafeScale:
$ safescale cluster feature add mycluster ntpclient
and using ansible, which is the PREFERRED method to install your software in a SafeScale cluster: installing a simple script:
$ safescale cluster ansible playbook my-cluster my-ansible-script.yml
where my-ansible-script.yml is something like:
---
or a more complex one (put all your files in a .zip)
$ safescale cluster ansible playbook my-cluster my-zipped-scripts.zip
A "SafeScale `Feature`" is a file in YAML format that describes the operations to check/add/remove software and/or configuration on a target (Host or Cluster).
A `Feature` can describe operations using bash snippets.
Additionally, a `Feature` is able to apply:
- reverse proxy rules
## Available features
SafeScale is currently under active development and does not yet offer all the abilities planned. However, we are already publishing it with the following ones:
- SafeScale Infra:
- Create / Destroy private networks
- Create / Destroy hosts,
- Create / Destroy block and object storage,
- Mount object storage on file system,
- Create Shares, Connect/disconnect host to share,
- Create / Update/Destroy Security Groups,
- SafeScale Platform:
- Create / Destroy clusters composed of a network, servers and services
currently supported:
- BOH = Bunch Of Hosts (without any cluster management layer)
- Kubernetes
- Add / Remove "features" on host and clusters
- Supported Cloud providers:
- OVH Public Cloud
- FlexibleEngine
- CloudFerro
- Generic OpenStack
- AWS
- GCP (Google Cloud Platform)
- Outscale
- Azure (Work In Progress)
## Contributing
We are looking for new contributors.
If you wish to contribute you can [fork the project](https://help.github.com/forking/), make your changes, commit to your repository, and then [create a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/). The development team can then review your contribution and commit it upstream as appropriate.
As much as possible, try following these guides:
- [godoc documentation tool formalism](https://blog.golang.org/godoc-documenting-go-code).
- [Go style guide](https://github.com/golang/go/wiki/CodeReviewComments)
- [Effective Go](https://golang.org/doc/effective_go)
For bugs and feature requests, [please create an issue](https://github.com/CS-SI/SafeScale/issues/new/choose).
## Build
[See Build file](doc/build/BUILDING.md)
## Usage
[See Usage file](doc/USAGE.md)
## License
SafeScale is distributed by [CS Systemes d'Information](http://csgroup.eu) under the [Apache License, Version 2.0](LICENSE). Please see the [third-party notices](NOTICE) file for additional copyright notices and license terms applicable to portions of the software.