Funny thing: judging by the styling, that text might be from the documentation for Ansible, the declarative configuration manager. Well, you can’t run Ansible itself in Windows, you need a *nix vm, even if WSL — though you can control Windows machines via Ansible. Afaik the same is true for the popular alternatives Salt, Puppet and Chef.
(Though I couldn’t find the page where that text is from.)
Ansible, the declarative configuration manager
Ansible declarative? That takes a lot of effort I think.
Hm? Most of the time the config is like ‘these packages should be installed, and these files should be in these directories’. Even stuff that requires running shell commands can and should be written in an idempotent way, basically just checking if the changes are already done.
Though Ansible kept introducing features like loops and conditionals, but the latter are required for aforementioned checks, and loops are useful for sanity.
I was talking about playbooks mostly, not individual tasks.
E.g. if you have a playbook where in one location you make sure a package is installed and in another to add a line to its config files, you need to ensure installation is performed first.
Another generic example is conflicting definitions, e.g. you define a package as present and somewhere else you define that one of its dependencies should be absent. Depending on the order, you either get an error or it works fine (but ignores the package absent directive). Or is my understanding wrong here?