I see Ansible as necessary evil. Not requiring server-side installed tools to work is great. But choosing yaml of all things for playbooks is downright vile. So there’s nothing casual about administering that many servers and machines, especially with constant warnings about Python version incompatibility.
If we ever meet an advanced alien society, I really want to see what solutions they came up with for:
Configuration languages
GUI frameworks
Because those two areas seem like there will never be a “perfect” solution.
And to anyone that says “an alien society might be so different that they don’t have those things”, I think if you’ve invented computers then at some point you will want some way to configure them, and some way to interact with programs running on them.
If they navigate programs entirely by sound or some shit, that’d still be interesting to see.
Watch it turn out that most advanced alien societies just use the terminal.
Then it turns out the reason they are exploring the depths of space is to see if any other civilizations have figured out a better way to handle those things because their current solutions work but kinda suck (along with several other problems we can’t yet fathom). And worse, they get excited when you start describing our systems.
“Wait wait wait, please tell me more about this… stack… that allows you to reuse code with different initial values for variables. That sounds revolutionary!”
Excellent observation. I’m honestly surprised there’s no well-known “universal parser” for common languages that can handle JSON, YAML, TOML, maybe even some form of XML, etc.
Its syntax is plenty when it comes to “wrong”. I’ve been using it for a while now and I still run into some issue with its formatting, but that of course can only be discovered when you run deployment or provisioning scripts, giving it high chance of pissing me off because it will cause something to be half-configured when it shouldn’t be.
I don’t particularly like yaml as a data storage language because of its use of significant whitespaces, but for the minimal complexity of my own playbooks, I don’t mind it.
What would you consider to be an ideal language for playbooks?
Am not sure to be honest. I always liked JSON even though it’s very rigid. Even so, most of software I write stores config in JSON simply because it’s easy to parse and it’s supported by literally everything. It’s also pretty minimalist.
Perhaps something more strict and defined would be better. I think I’d even prefer XML to YAML.
yq can take either JSON or Yaml (or maybe others, I haven’t checked) as input, then it converts it to JSON before passing it to jq. yq outputs JSON by default, or Yaml if you pass it the --yaml-output option.
And all of them are universally bad. Especially all the Kubernetes tools, Helm is so bad and at least half of it is due to the combination of YAML and templating.
You know, for how stale its entire idea is, Ansible isn’t bad. I code fucking yaml daily.
Having said that, It’s a generation behind its competition on terms of everything except calendar age. Fuck’s sake, it grew from the same incubator that spawned mgmtConfig, which is as better than chef/cinc/salt/puppet as those are better than ansible. It was born with its own grandson, if there was any shared dna.
Using Ansible is like working with Unfrozen Caveman Lawyer. Each day it grows more clunky, more waddling with the bags on its side, more obsolete. It’s the 50-foot coiled rj-12 cable of config management.
I see Ansible as necessary evil. Not requiring server-side installed tools to work is great. But choosing yaml of all things for playbooks is downright vile. So there’s nothing casual about administering that many servers and machines, especially with constant warnings about Python version incompatibility.
If we ever meet an advanced alien society, I really want to see what solutions they came up with for:
Because those two areas seem like there will never be a “perfect” solution.
And to anyone that says “an alien society might be so different that they don’t have those things”, I think if you’ve invented computers then at some point you will want some way to configure them, and some way to interact with programs running on them.
If they navigate programs entirely by sound or some shit, that’d still be interesting to see.
Watch it turn out that most advanced alien societies just use the terminal.
Then it turns out the reason they are exploring the depths of space is to see if any other civilizations have figured out a better way to handle those things because their current solutions work but kinda suck (along with several other problems we can’t yet fathom). And worse, they get excited when you start describing our systems.
“Wait wait wait, please tell me more about this… stack… that allows you to reuse code with different initial values for variables. That sounds revolutionary!”
Excellent observation. I’m honestly surprised there’s no well-known “universal parser” for common languages that can handle JSON, YAML, TOML, maybe even some form of XML, etc.
besides the annoying syntax, whats so wrong with yaml?
its a standard tool used across many different things, id expect it to be adopted.
Its syntax is plenty when it comes to “wrong”. I’ve been using it for a while now and I still run into some issue with its formatting, but that of course can only be discovered when you run deployment or provisioning scripts, giving it high chance of pissing me off because it will cause something to be half-configured when it shouldn’t be.
I don’t particularly like yaml as a data storage language because of its use of significant whitespaces, but for the minimal complexity of my own playbooks, I don’t mind it.
What would you consider to be an ideal language for playbooks?
Am not sure to be honest. I always liked JSON even though it’s very rigid. Even so, most of software I write stores config in JSON simply because it’s easy to parse and it’s supported by literally everything. It’s also pretty minimalist.
Perhaps something more strict and defined would be better. I think I’d even prefer XML to YAML.
You can use JSON to write the playbooks, then use a program like
yq
(which is a Yaml wrapper forjq
) to convert it to Yaml. Something likeI did not know that. That’s a useful one. Does it work the other way around?
Yes, both
yq
andjq
are fantastic programs.yq
can take either JSON or Yaml (or maybe others, I haven’t checked) as input, then it converts it to JSON before passing it tojq
.yq
outputs JSON by default, or Yaml if you pass it the--yaml-output
option.YAML is used across a lot of modern technologies. I would imagine using YAML makes it easier to learn for a lot of DevOps type people.
And all of them are universally bad. Especially all the Kubernetes tools, Helm is so bad and at least half of it is due to the combination of YAML and templating.
You know, for how stale its entire idea is, Ansible isn’t bad. I code fucking yaml daily.
Having said that, It’s a generation behind its competition on terms of everything except calendar age. Fuck’s sake, it grew from the same incubator that spawned mgmtConfig, which is as better than chef/cinc/salt/puppet as those are better than ansible. It was born with its own grandson, if there was any shared dna.
Using Ansible is like working with Unfrozen Caveman Lawyer. Each day it grows more clunky, more waddling with the bags on its side, more obsolete. It’s the 50-foot coiled rj-12 cable of config management.
I love yaml so maybe its just a matter of personal choice.