Skip to content

CS-SI/SafeScale

Repository files navigation

SafeScale: Infrastructure and Platform as Code tool

License Version Downloads

Contributors Forks Stars

Go Report Card Go Versions CodeSizeInBytes

Packages Documentation

SafeScale is an Infrastructure and Platform as Code tool.

Table of content

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-clusterusing Normalcomplexity (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:

---
- 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, make your changes, commit to your repository, and then create a pull request. The development team can then review your contribution and commit it upstream as appropriate.

As much as possible, try following these guides:

For bugs and feature requests, please create an issue.

Build

See Build file

Usage

See Usage file

License

SafeScale is distributed by CS Systemes d'Information under the Apache License, Version 2.0. Please see the third-party notices file for additional copyright notices and license terms applicable to portions of the software.