Giter Club home page Giter Club logo
Calvinverse photo

calvinverse Goto Github PK

repos: 51.0 gists: 0.0

Name: Calvinverse

Type: Organization

Bio: The Calvinverse repositories provide a collection of scripts used to create the VM and Docker images for an immutable build infrastructure

Calvinverse

Provides the tools and services to to create, configure and destroy environments for an application or service in a repeatable manner.

An environment is the collection of exclusive resources, services and data that work together to achieve one or more goals, e.g. to allow users to achieve their tasks.

Why

In some cases it would be nice to be able to create an environment in repeatable way, for instance

  • When running tests on a new feature or for performance. The ability to execute these in a fresh environment that matches the current production configuration reduces differences between the test and production.
  • The ability to create a new environment in a different geographic region.

The problem is that creating an environment from scratch is hard. It often involves creating different resources (container instances, load balancers, event systems, service discovery, configuration storage, data storage etc.) as well as configuring these systems, providing valid certificates, DNS names, securing the resources, setting up configurations etc..

Why not use (insert favorite tool here)

The problem of creating, updating and deleting resources is solved by many different tools, e.g. terraform or one of the orchestration systems (docker, Kubernetes etc.). But introducing secrets, certificates and configurations isn't always easy. This often involves different tools to handle these tasks in a safe and secure manner.

In cases where an environment needs to be destroyed after user it is often left to the user to initiate the destroy action. However users may forget this leading to expensive resources going unused. Most of the tools that are used to create resources aren't able to destroy the same resources on a schedule or based on events.

The goal for Calvinverse is to provide a service that will use the well known tools to create, update and destroy environments while adding the ability to inject configurations, certificates and secrets.

What is in the box

The Calvinverse resources can be divided into two groups. The first group contains the resources and services necessary to create new environments. This environment is called the provisioning or meta environment. The second group contains the resources that form a build environment for the Calvinverse resources. This environment can be created if desired but there are other ways to construct the services and resources in the first group.

Meta environment

The meta environment contains the following services and resources

  • A Dockerised service that provides a Web UI though which users can request creation, updating or deletion of environments. Additionally this UI provides an overview of all existing environments that a user has access to.
  • A Dockerised service that processes user requests by invoking the appropriate tools, e.g. Terraform, to apply the requested changes. This service also tracks the current state of all the known environments. This service is known as the provisioning service.

In order to create the meta environment one can either use the configuration file for the orchestrator of choice or the provisioning service locally and provide it with the desired environment configuration. The benefit of the latter approach is that, with the appropriate templates, it is possible to create the desired orchestrators prior to creation of the user environments.

Calvinverse build environment

The build environment contains the services and resources required to create all the images necessary for the meta environment.

This build environment may be used, however it is not required to do so if the meta environment images can be created in another fashion.

Environment requirements

Both the meta environment and the build environment make some assumptions about their greater surroundings. The following assumptions are made:

  • Service discovery is done via Consul. If a Consul datacenter exists then resources can be attached to this datacenter, otherwise there is a resource that can be used to create a Consul server cluster.
  • Environments can be defined in many ways. The Calvinverse resources assume that all the resources reachable via their own service discovery datacenter are part of their own environment.

Calvinverse's Projects

base.vm.linux icon base.vm.linux

Stores the scripts and configurations for the creation of Linux base images

base.vm.windows icon base.vm.windows

Stores the scripts and configurations for the creation of Windows 2016 (non-nano) base images

calvinverse.configuration icon calvinverse.configuration

This repository holds the scripts that are used to create my internal build infrastructure on a Hyper-V server

calvinverse.ideas icon calvinverse.ideas

Collects ideas and suggestions for resources and services that should be added to the Calvinverse environment

resource.artefacts icon resource.artefacts

This repository contains the source code and Packer configuration files to create an image, for either Hyper-V or Azure, that contains an instance of the Sonatype Nexus server.

resource.build.agent.windows icon resource.build.agent.windows

This repository contains the source code and Packer configuration files to create an image, for either Hyper-V or Azure, that contains an instance of a Jenkins build agent on a Windows operating system

resource.build.master icon resource.build.master

This repository contains the source code and Packer configuration files to create an image, for either Hyper-V or Azure, that contains an instance of the Jenkins build server.

resource.documents.dashboard icon resource.documents.dashboard

This repository contains the source code and Packer configuration files to create an image, for either Hyper-V or Azure, that contains an instance of the Kibana application.

resource.documents.storage icon resource.documents.storage

This repository contains the source code and Packer configuration files to create an image, for either Hyper-V or Azure, that contains an instance of the Elasticsearch search engine.

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.