10000 GitHub - jdenen/crucible
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

jdenen/crucible

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crucible

Code as infrastructure with Elixir

Idea

"Infrastructure as code" is a misnomer.

We should call it "infrastructure as configuration" or "infrastructure as data" because YAML (Ansible/CloudFormation) and glorified JSON (Terraform) are not code.

Just as functional languages enable us to treat code as data, I believe they give us the ability to treat code as infrastructure.

Crucible is going to explore this idea.

Core concepts

  1. Declarative and idempotent
  2. Granular control of create/delete/rollback behavior
  3. Rollbacks as a first class citizen
  4. Testing as a first class citizen
  5. Does not track state outside of execution

Thought dump

defmodule My.Vpc do
  @moduledoc """
  Some thoughts on what the end goal could look like.
  """
  use Crucible.DSL

  vpc(:my_vpc) do
    subnet :my_subnet_1, cidr: "10.0.3.0/24" do
      vm :jenkins do
      end

      vm :foobar do
      end
    end

    subnet :my_subnet_2, cidr: "10.0.4.0/24" do
      on_create fn x -> do_something(x) end
    end
  end
end

Installation

If available in Hex, the package can be installed by adding crucible to your list of dependencies in mix.exs:

def deps do
  [
    {:crucible, "~> 0.0.1"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/crucible.

Contributing

  1. Fork the project
  2. Make change(s) on a feature branch of your fork
  3. Run docker build . to validate formatting, style, and tests
  4. Submit a PR

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  
0