Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Ignition is a tire fire and I despise it with all my heart. It's made worse by there being like 5 different incompatible under-documented versions each with their own cutesy bugs

In last contact I had with Flatcar (before we moved to Bottlerocket) one could still use cloud-init yaml even with Flatcar so that's what I'd recommend instead of trying to read through the unbounded number of github issues trying to track down why simple things don't work with ignition

As for "what advantages Flatcar provides," the answer is always "in comparison to what?" I haven't run a general-purpose OS in production in over 8 years, and I don't intend to ever go back to having a mutable OS. There are just too many opportunities for randos to "just ssh in and do this one thing" and then I have to spend hours tracking down why some machines behave different from their peers



> Ignition is a tire fire and I despise it with all my heart.

Could you elaborate on this? I helped [1] create Ignition with Alex Crawford [0], its original author, while @ CoreOS in ~2015. To call what we were making then a "tire fire" seems comically hyperbolic for what was such a rudimentary bootstrapping tool, and generally unexpected for something we'd ship.

Has its scope grown out of control since those early days, or has it been mismanaged? We're coming up on a decade since my involvement...

[0] https://github.com/coreos/ignition/commits?author=crawford

[1] https://github.com/coreos/ignition/commits?author=vcaputo


Ultimately I'm sure I'm going to be sorry I weighed into this, because maybe it's just personal preference and I'm not going to change anyone's mind and you are unquestionably not going to get me to ever touch that again. And I'm sorry if your feelings are hurt, and I appreciate that you and your coauthor know and love the system but my experience with it mirrors that Microservices YouTube joke

My biggest heartburn is that I have[1] to compile a boot configuration document. Some of that may be a concession to Ignition being inexplicably written in JSON, but it's possible the transpiler does some massaging and restructuring of keys, I dunno, I didn't want to compile a boot document

This is how one creates a file in Ignition: https://coreos.github.io/ignition/examples/#create-files-on-...

Contrast that with https://cloudinit.readthedocs.io/en/20.1/topics/examples.htm...

I grant you that https://coreos.github.io/butane/examples/#files may be the example of pre-transpilation using the `inline:` structure but for my use case of authoring that UserData dynamically, I don't have a `!TranspileUsingCuteNameOfTheDay` in CloudFormation

And since I haven't had my hands on the Flatcar ecosystem in a few years, I'm not going to have access to the very specific pain points of "well, this cutesy named thing is broken because it depends on this other cutesy named thing" but what it boils down to is cloud-init behaves sanely, has been around forever, and can be authored easily in a bunch of different circumstances

fn-1: yes, I can appreciate it's "just a JSON document" but no reasonable person is going to author JSON string literals containing data: URIs for contents


“Ultimately I'm sure I'm going to be sorry I weighed into this”

Maybe you wouldn’t be if you didn’t use phrases like “tire fire” at other people’s work?

It sounds like Ignition isn’t your cup of tea, which is perfectly fine and few people could take issue with that. Tire fire is unnecessarily caustic and doesn’t really improve the discussion.


I use it exclusively thru the terraform provider which abstracts over some of the details.

I like it a lot more than cloud-init in this scenario.


So if I understand correctly, "I don't like RFC 2397 and JSON" == "tire fire"?


I guess if you found my comment to be "comically hyperbolic" then replying to mine with a "comically reductionist" is fair game

So, anyway, I actually did dig up a concrete example of my experience with it, and I cannot link to the "Additional information" section but that is both why I think the thing was a mess and also why the Miroservices YT joke resonated: https://github.com/flatcar/Flatcar/issues/220

I think the CoreOS boot strategy was decomposed into a bunch of different executables, each responsible for doing their own little slice of the world. Maybe it drew inspiration from systemd in that way. But, just like my real life experience with microservices, it requires keeping a bunch of different projects and their upgrade paths in ones head, knowing their disparate config formats, and when one of them inevitably has a bug, understanding how to troubleshoot what went wrong with the system as a whole

And, again in trying to be reasonable in this discussion[1] I do also understand why one would opt for the data URI, given how much of the rest of Ignition loads content from URLs. I don't believe cloud-init has that remote content paradigm baked into it nearly the same way, so I hear you about that.

And yes, my belief is that JSON is a data-exchange format from _computer to computer_ and making people write them is a poor DX choice, IN MY OPINION. And, to reiterate, I know that CoreOS's perspective is that it is a computer-to-computer transmission from the transpiler-project-o-the-day to the Ignition binary, but that is predicated on one having access to that transpiler binary in all cases, which is quite different from the problem that cloud-init is trying to solve

fn-1: I'm sorry you got hurt by my "tire fire" outburst, and that evidently derailed this whole interaction, but it was my experience


I have one complaint about Ignition: its builtin file download functionality is too limited:

- there is a limited amount of retries (5?), so a network hiccup can easily cause the download to fail

- no control over which responses are fatal, so if you boot a VM with a config that references a URL that's still 404 due to async nature of something, then only a single attempt is made.

The company I work for uses Flatcar exclusively, but we don't use config chaining due to these limitations, and we have moved all file downloads to the shell scripts embedded into the config.


Sounds like something that could be addressed, worth filing an issue/PR in https://github.com/coreos/ignition/




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: