Giter Club home page Giter Club logo

cosmos's Introduction


The Cosmos project logo depicting an astronaut

Cosmos

"If you wish to make an ๐ŸŽ ๐Ÿฅง from scratch, you must first invent the universe." -- Carl Sagan

Explore the docs ยป


๐Ÿš€ About the Project

Cosmos is a monorepo where I define and manage infrastructure in my homelab and on various cloud provider platforms, adhering to Infrastructure as Code (IaC) principles where possible.

๐Ÿงฌ Structure

This project is subdivided by cloud provider platform. Each platform contains documentation specific to what tools are used to manage it, and how to use them.

๐Ÿ” SecOps

IT security and strategies for handling secrets is an entire discipline to itself. After much deliberation and weighing tradeoffs, I settled on using SOPS (Standard Operating ProcedureS) and Age for encryption of sensitive information that will be committed to version control.

What is SOPS?

A simple and flexible tool for managing secrets.

Github Link

What is Age?

Pronounced (aghe with a "hard" g), it's a simple, modern and secure encryption tool with small explicit keys, no config options, and UNIX-style composability.

Tradeoffs

Pros Cons
Ease of intergration (in the future) with other key management services Operational overhead
File format agnostic Key management complexity
It's free ๐Ÿ’ฐ

General Thoughts

This, by itself, is NOT comprehensive, but is "adequate enough" for me. None of the workloads, systems, or processes managed here are life-or-death. This project is, in large part, centered around learning and tinkering. That said, I have taken time to consider what security means to me and my IT infrastructure, and implore you to do the same.

๐Ÿ”ง Tooling

  • Ansible - a radically simple IT automation platform that makes your applications and systems easier to deploy and maintain.
  • Terraform - Infrastructure automation to provision and manage resources in any cloud or data center.
  • Secrets OPerationS (SOPS) - Simple and flexible tool for managing secrets.
  • Age - A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.

๐Ÿ”ค Naming Convention

I use the following convention to name my compute where possible:

  • Platform

    Describes "where" the compute lives.

    Code Description
    HLB Homelab
    AWS Amazon Web Services
    GCP Google Cloud Platform
    MAZ Microsoft Azure
  • Compute Type

    Describes the "material" composition of the compute unit.

    Code Description
    P Physical machine
    V Virtual machine
  • Configuration

    Describes the "relationship" of the compute unit to other units.

    Code Description
    S Standalone
    C Cluster
  • Environment

    Describes the environment "volatility" that the compute unit resides in. (e.g., development is highly volatile, test is less volatile but still not guaranteed to be fully operational, and production is reliable/available).

    Code Description
    D Development
    T Test
    P Production
  • Numeric ID

    Provides a "unique" numeric identifier (most useful for identifying units of compute in a large cluster configuration).

    Code Description
    NNN (ex: 001, 002, ... 100)

Examples

  • HLB-PSD-001 - A homelab-hosted (HLB) physical machine (P) in a standalone (S) configuration used for development (D) environment workloads.

  • AWS-VCP-666 - An AWS-hosted (AWS) virtual machine (V) in a cluster (C) configuration used for production (P) environment workloads.

๐Ÿชช License

This project is licensed under the MIT License - see the LICENSE file for details.

cosmos's People

Contributors

bryborge avatar

Watchers

 avatar

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.