Jerikan: A configuration management system for network teams
vincent.bernat.ch
vincent.bernat.ch
We push the opinion you need to manage the whole configuration to avoid getting out-of-sync with their expected state or putting the state inside your device. Once you are able to manage the whole configuration, the things you describe are possible: propagate a VLAN, adding IP to an access-list, etc. The other way around is not true.
I can haz function library?
>inb4 muh idempotence
Seriously, idempotence != YAML.
Unrelated but I've been experimenting with having a central KV store to host network state for physical devices (Cisco, Arista, etc) and when the state is updated, the network devices are updated (via a templating engine with SSH or API calls to end devices) but even with that it still takes templates to write the config.
I've mentioned it. I want functions. I don't care what they do. They may as well construct some data model under the hood. But I want real programming language, not templating YAML.
All that is needed are functions that can either directly contact the remote or build data model with which the tool will later do its magic.
See e.g. how you define infrastructure with Pulumi. It's just an example. I'm not advocating it. In fact, I have zero experience with it. But the point is, that it looks like imperative programming, but you're actually just building some model. You can employ language that's more functional. It doesn't matter.
Everytime someones mentions idempotence as a selling point of YAML abominations, they're mistaken. :-)
Mocking anyone who might disagree with you is unlikely to help convince people.