122 karma · joined February 7, 2022
Not trying to be negative here, trying to understand if there is value or functionality missing from established solutions, because it's not obvious to me.
Looks like a cloud like experience on your own hardware.
If only it were as cheap as dell...
How is this the schedulers fault? Is this not just your resource requests being wildly off? Mapping directly to a "fly machine" just means your "fly machine" utilization will be low
Dagger is the answer to jenkins woes. It's saved my sanity and made CI development tolerable again.
* Real language support. No groovy, no yaml.
* Debugging available in your native IDE tools.
* Clear docs in any language of your choice.
* Reproducible builds you can run locally. Just need docker.
This all comes with the bonus that it can actually just consume GHA yaml with some of the tooling folks have made.
I find that the only difference is that it's YAML - so even harder to debug, and maintains the same model where you must re run an entire pipeline every commit to test functionality.
2. I mean I don't use ansible with any cloud, only with hardware or legacy on prem stacks - older versions of Cisco, Netapp, Vmware. I prefer a stateful system like terraform to a stateless one like ansible.
3. I like typed languages. I hate yaml. Logic in ansible playbooks (yaml) is inevitable and a nightmare at scale.
4. Having moved to a container orchestrator, all of my nodes are immutable, I do not change or modify them. Hardware and VM instances _can_ be born magically into existence. Nearly all infra providers support [cluster-api](https://cluster-api.sigs.k8s.io/) or some other autoscaling controller. Network infrastructure can now be managed with TF, so I go that route.
If you're _really_ bare metal - build the base image, boot pxe and run apt update - not much more complicated than that.
Ansible solved a large problem (config management) before the kubernetes era, but containerization accomplishes the same goal for most applications before deployment.
I've been around long enough to know that any "no code" style interface or GUI are typically the _problem_ not the solution. Regardless of the code they export, you end up with fat fingers, misclicks, forgotten UI paths to follow... Taking a software eng approach to shipping infra is a stable, known process that the infra team and the software teams can understand, no specialized GUI tool knowledge required.
I've been using the same basic terraform modules, jenkins pipelines, and infra architecture for nearly 7 years across multiple companies and numerous cloud deployments. It's not fancy but it justworks.jpg. Every time I re-use that code for a new deployment or account I save TONS of time.
Devops doesn't have to be hard. Infrastructure doesn't have to be complex. Deploying every day isn't _that_ difficult. KISS Method is key, especially when you're looking for speed. Using _less_ tools from the CNCF is better, and will let you move faster, not adding a new one.
This is just a hobbyist prompt and api. If nothing else, I'd say at minimum this highlights that there are likely much larger farms that have been operating in a similar way but at larger scale for longer periods of time (but not talking about it)
Load balancing, logging, and other associated components are all still there. Almost nothing changed in the actual architecture, just how it was hosted.
I have a hard time seeing why this was beneficial.
I always wonder at the authors motivation to use node when the majority of the ecosystem is written in golang. This is actually one of the main reasons I dont use terraform CDK right now. Why is CDK node first (I know there is golang support) when terraform is all golang?
Intuition tells me there must be _many_ more crashes caused by various other manufacturing defects or various other issues caused by "scant oversight".
We have extensive jenkins pipelines, and the "platform team" supports multiple types of build/release models. Most of the infrastructure is written in TF. * 3 languages * 5 "types" (http/cron/flink/etc)
As such we've got huge groovy libraries that codify the build/release process.
I'm using dagger to re-implement most of these libraries, but in a way that I can test and develop locally without getting into tiny commit/rebuild hell.
Using a language like golang with an engine like buildkit behind it, allows me to more easily test each step of the pipeline, without running the whole thing.
Ansible / Terraform are great when you're declarative, but once you start adding too much logic, things get hairy.