A Curious Mind

the professional side of Dru Sellers

Platform Automation

Build and deploy a system to automate the existing manual process for provisioning cloud resources.

Systems

AWS
GCP
Azure

Technologies

Java
PostgreSQL
bash, ssh
Crystal
SystemD

Automating Drudgery

Outcomes
Automated manual system for provisioning new cloud resources
Time to deployment was reduced from 24 hrs to 5 minutes

Overview

Built and deployed a system to automate the process of provisioning cloud resources based on customer requests.

    graph LR
    U[User Request] ---- System
    Cd[Config Data] --- System
    R[Packages] --- System
    System --- AWS
    System --- GCP
    System --- Azure
    AWS --- Agent
    GCP --- Agent
    Azure --- Agent

    

Processes

This was a full stack system. Not only did this system support connecting to a customer’s private cloud, but would spin up servers, included a concept of bootstrapping servers, running and installing software of multiple variations.

  • package deployment (shipit -> depo)
  • package and release tracking
  • network creation and deployment
  • multi-cloud
  • local daemon to pull updates (depot-agent)
  • local cli to automate remote http actions
  • fault tolerent
  • instance abstraction
  • bootstrapping
  • configuration data (by environment)
  • cloud
    • load balancer management
    • white labeled DNS

Releasing new Code

    graph LR
    Code --> Package --- Registry
    Code --> Metadata --- Registry

    
  • software packaging and a repository (in-house format)

Configuration Data

    graph LR
    User --> Config --- ConfigStore

    

Alternatives would have been etcd, counsul, cloud native options like Azure Key Vault, AWS SSM Parameter Store. We wanted something that was multi-cloud, and wouldn’t require a cloud specific security credential.