https://github.com/cs-si/safescale
SafeScale: multicloud management platform
https://github.com/cs-si/safescale
Last synced: about 1 year ago
JSON representation
SafeScale: multicloud management platform
- Host: GitHub
- URL: https://github.com/cs-si/safescale
- Owner: CS-SI
- License: apache-2.0
- Created: 2018-06-01T08:44:54.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-06-07T12:57:50.000Z (about 3 years ago)
- Last Synced: 2024-06-21T13:09:23.994Z (about 2 years ago)
- Language: Go
- Size: 157 MB
- Stars: 42
- Watchers: 10
- Forks: 15
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# SafeScale: Infrastructure and Platform as Code tool
[](https://github.com/CS-SI/SafeScale/blob/master/LICENSE)
[](https://github.com/CS-SI/SafeScale/releases/latest)




[](https://goreportcard.com/report/github.com/CS-SI/SafeScale/v22)


[](https://pkg.go.dev/github.com/CS-SI/SafeScale/v22/lib)
SafeScale is an Infrastructure and Platform as Code tool.
## Table of content
- [Description](#description)
- [SafeScale Infra](#safescale-infra)
- [SafeScale Platform](#safescale-platform)
- [Available features](#available-features)
- [Contributing](#contributing)
- [License](#license)
## Description
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 to manage Cloud infrastructure (IaaS - Infrastructure as a Service)
- SafeScale Platform to manage Cloud computing platforms (PaaS - Platform as a Service)
### SafeScale Infra
SafeScale Infra offers an API to completely abstract the IaaS services offered by Cloud platforms providers.
It allows to:
- Create / Destroy private networks, Create routers, Manage firewall
- Create / Destroy hosts,
- Create / Destroy block and object storage,
- Mount / Unmount object storage as file system,
- Create / Destroy shares, Connect / Disconnect host to/from shares,
- Create / Destroy clusters
- Add / Remove "features" (software components) on hosts and clusters
SafeScale Infra provides a complete abstraction overlay over underlying IaaS APIs to mask their heterogeneity.
### SafeScale Platform
Safescale Platform provides PaaS (Platform as a Service) capabilities:
- deploy a standard cluster
- deploy a specific cluster, deployment commands are executed in parallel to improve the speed
Platform can deploy a standard cluster with minimal features:
- cluster management environment: BOH (Bunch Of Hosts, ie cluster without workload orchestrator like Kubernetes), K8S (with Kubernetes)
- one or two gateways, including :
- a reverse proxy (Kong) with only SSH and HTTPS access allowed by default
- an internal load balancer over the cluster
- the remote desktop
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:
- using ssh command (the old and manual way):
```
$ 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:
```yml
---
- hosts: nodes
tasks:
- name: Install golang
become: yes
apt:
pkg:
- golang
- bison
```
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.