There isn’t a universal language to fill all these needs. DevOps covers a ton of areas so you want several tools in your toolbelt instead of just one (granted if you’re an incredibly talented greybeard bash can honestly do everything and do it fairly fast; I’ve never taken this analysis too seriously).
- bash is something you need for every day tasks and quick tooling to improve everything else in this list
- POSIX tooling is something you should know well to improve everything else on this list (eg awk is something you’ll use a lot in bash)
- Python with or without types will handle more advanced scripting in a cleaner and more maintainable way for your team (explaining bashisms slows things down. Does your junior know what
:
is or why we currently prefer$()
over backticks?) - Go is something you want to use for containerization and scaling servers
- Rust is something you want to use for process work and embeddables
Each of these languages meets some of the requirements on your list but not all. That’s because nothing is a silver bullet. Depending on what you’re doing, you might even want to introduce, say, Java or C# in your pipelines if that’s what you’re maintaining. DevOps should support not alienate and overall it needs to be flexible.