Comments (2)
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.
Thank you for the detailed explanation.
from jumppad.
Related Issues (20)
- Add --unset flag to the shipyard env command HOT 1
- Add --unset flag to the shipyard env command HOT 1
- sha mismatch on latest release reported in BREW HOT 2
- M1 Mac
- Cgroups v2 Mac and Arm64
- Panic when starting shipyard without having Docker installed
- Connector gets deleted when a subdirectory gets destroyed?
- shipyard destroy with blueprint does not destroy resources HOT 1
- checksums.txt for v0.4.11 includes only a checksum for windows x86_64 HOT 3
- Shipyard status incorrectly reports Disabled as Failed in the status count
- Error during down creates incomplete state
- [FEATURE REQUEST] - Command health check
- Parse jumppad variables from environment variables
- Nomad cluster creation fails if datacenter is not dc1 HOT 4
- Nomad cluster is unable to pull docker images from private registry HOT 10
- Port stanza has undocumented required field `remote` HOT 2
- checksums.txt and *.rpm were missing from 0.6.0 HOT 3
- Asset names are wrong at 0.9.0 HOT 1
- The Checksum of darwin/arm64 is wrong at 0.9.1 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jumppad.