Giter Site home page Giter Site logo

Rename from Shipyard to Jumppad about jumppad HOT 2 CLOSED

zcubbs avatar zcubbs commented on August 16, 2024
Rename from Shipyard to Jumppad

from jumppad.

Comments (2)

nicholasjackson avatar nicholasjackson commented on August 16, 2024 3

Hi @zcubbs, we posted something up in the discord channel but have not yet added anything to the website and ReadMe. Over the last few months we have been working on a new parser for the configuration that brings huge upgrades to the way that you define resources.

For example, in the old system you could do something like this to create a templated config file and use it from a container.

template "consul_config" {

  source = <<-EOF
    data_dir = "#{{ .Vars.data_dir }}"
  EOF

  destination = "./consul_config/consul.hcl"

  vars = {
    data_dir = "/tmp"
  }
}

container "consul" {
  depends_on = ["template.consul_config"]

  command = ["consul", "agent", "-config-file=/config/consul.hcl"]

  volume {
    source      = "./consul_config"
    destination = "/config"
  }
}

With the new syntax this can be rewritten removing the depends_on as all properties are now reference-able, whenever you reference a property of another resource, jumppad automatically creates a dependency.

resource "template" "consul_config" {

  source = <<-EOF
    data_dir = "#{{ .Vars.data_dir }}"
  EOF

  destination = "./consul_config/consul.hcl"

  variables = {
    data_dir = "/tmp"
  }
}

resource "container" "consul" {
  command = ["consul", "agent", "-config-file=/config/consul.hcl"]

  volume {
    source      = resource.template.consul_config.destination
    destination = "/config/config.hcl"
  }
}

This in our humble opinion is a huge improvement but also a very big breaking change to the current configuration.

We have also dramatically improved modules, all resources in modules are now module scoped, this means that no longer do modules have to contain unique references. You can use a module more than once in the same configuration. Variables for modules are now module scoped rather than globally scoped giving a vastly improved experience. For example, you can now do something like this.

resource "network" "local" {
  subnet = "10.5.0.0/16"
}

resource "k8s_cluster" "k3s" {
  driver = "k3s" // default

  nodes = 1 // default

  network {
    id = resource.network.local.id
  }
}

module "vault1" {
  source = "github.com/jumppad-labs/blueprints/modules//vault"

  variables = {
    namespace      = "one"
    helm_version   = "0.24.0"
    api_port       = 8200
    k8s_cluster_id = resource.k8s_cluster.k3s.id
  }
}

module "vault2" {
  source = "github.com/jumppad-labs/blueprints/modules//vault"

  variables = {
    namespace      = "two"
    helm_version   = "0.24.0"
    api_port       = 8200
    k8s_cluster_id = resource.k8s_cluster.k3s.id
  }
}

output "VAULT_ADDR_1" {
  value = module.vault1.output.vault_addr
}

output "VAULT_ADDR_2" {
  value = module.vault2.output.vault_addr
}

output "KUBECONFIG" {
  value = resource.k8s_cluster.k3s.kubeconfig
}

This is a huge upgrade on the previous way of working and off and is something we always wanted to do when starting the project, but, processing HCL with go-hcl does not give this capability. We had to write a higher level parser that uses go-hcl, something that was quite a bit of work. The impact of the new parser also meant that the core Shipyard code needed quite a few changes, something that is still ongoing, but, right now is stable.

So to your question, "Why rename Shipyard to Jumppad?", there are some amazing things we want to do with Shipyard this year, creating an easy to use module registry, enabling easy connections between blueprints, and more.

Since there is already a similarly named project (not getting into who claimed Shipyard first, it was actually neither of us, it was Docker), and the new version would introduce so many breaking changes, we felt that this was also the right time to rename the project, give it a unique identity, and relaunch it. It will probably take a few more weeks to get the docs and other elements finalised but things are pretty good right now. No acquisitions, the project is still staying OSS, we just wanted a unique identity.

We hope you really like the new features, we have been using Jumppad as my daily driver for a couple of weeks to try get the bugs out. In my humble opinion, the way that Jumppad now works is the way that we always wanted it to work when we started the project a few years ago.

from jumppad.

zcubbs avatar zcubbs commented on August 16, 2024

Thank you for the detailed explanation.

from jumppad.

Related Issues (20)

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.