Skip to content
This repository has been archived by the owner on Jan 29, 2021. It is now read-only.

rdeusser/overseer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overseer

GoDoc Build Status Go Report Card

A provisioning toolkit.

Overseer uses something called a "buildspec" to determine how to build a physical or virtual machine. Server names are read from another kind of spec called a "hostspec". All of your buildspecs should live inside a directory (e.g. /etc/overseer/buildspecs) and ideally would be version controlled in git. Each buildspec should represent an environment or type of host.

A buildspec looks like this:

spec "indy.prod.kafka" {
    vsphere {
        cpus = 2
        cores = 1
        memory = 8096
        domain = "qa.local"
        cluster = "cluster01"
        datastore = "ds01"
        folder = "folder01"
        datacenter = "dc01"

        device "disk" "Hard disk 1" {
            size = 40
        }

        device "network" "Network adapter 1" {
            build_vlan = "dv-build"
            vlan = "dv-appservers"
            switch_type = "distributed"
        }

        device "scsi" "SCSI controller 1" {
            type = "paravirtual"
        }
    }

    foreman {
        hostgroup = "hg01"
        location = "location01"
        organization = "org01"
        environment = "env01"
        compute_profile = "compute01"
        architecture_id = 6
        compute_resource = "lol"
        domain_id = 6
        operating_system_id = 2
        partition_table_id = 6
        medium = "centos-7"
    }

    chef {
        run_list = [
            "role[role01]",
            "role[role02]"
        ]
    }
}

A hostspec for a physical host:

hello.qa.local 1C:29:DF:E5:AA:B5
lol.qa.local 52:65:06:7A:C5:C8
with1234.qa.local 37:25:61:C8:B5:9C
nope.qa.local 19:62:AD:A7:92:BA
sometimes123135.qa.local E5:CF:60:13:C2:3E

A hostspec for a virtual host:

hello.qa.local
lol.qa.local
with1234.qa.local
nope.qa.local
sometimes123135.qa.local

Overseer kinda seems like Terraform?

Yeah, they do share some similarities. The buildspec concept was taken from how SaltStack uses profiles. The one big difference and the reason I created this was because Terraform currently needs to maintain state. Overseer does not and will never maintain state of any kind. The idea here is that you pass a list of hostnames (or use a hostspec) and a buildspec that describes the kind of build you want and it'll go through and create all of the necessary resources for you.