By Christos Matskas, Premier Azure Dev PFE at Microsoft
Microsoft Azure has seen a massive adoption in the enterprise and it’s continually growing in size, availability and service offerings. As adoption grows, IT teams and professionals need the right tools in their arsenal to be able to work with the cloud platform as efficiently as possible, but what should these tools offer in terms of features to make them appealing and usable? Today, tools need to satisfy some basic requirements:
- They should be fully cross-platform
- They should be well documented
- They should support plugins and contributions from the community
- They should be enterprise-friendly
- They should be fast and easy to work with good supporting documentation
Thankfully, Azure offers a number of tools that satisfy these requirements and make working with the platform easy and intuitive, while reducing the learning curve. In this post, we'll examine these options and hopefully find the tool that's right for you.
Azure PowerShell builds on the much-loved Windows PowerShell, the v2 of the extremely mature command line. To use PowerShell with Azure, you need to download the appropriate installer from the Azure Downloads page. The installer will add all the necessary cmd-lets to let you interact with Azure services using, ideally, the new Azure Resource Manager or the older Azure Service Management APIs.
Azure Powershell - the good
PowerShell has been out for a while and IT administrator will find it extremely easy to transition. The command format is familiar and there's an option to develop and debug scripts using the PoSH ISE (a basic IDE). Having a debugger is great as it can speed up development and help disambiguate how the Azure API works. For developers, PowerShell comes with hidden, advanced features - the ability to inject/write .NET code in the scripts. In effect, in the hands of a developer, PoSH becomes a wrapper around the .NET Framework that allows anyone to pull namespaces from the .NET framework and consume the necessary APIs. PoSH is also very extensible, so you can build your own cmd-lets to hide complexity or reuse bits of code/scripts that are common across many operations.
Finally, PoSh is now cross-platform and you can install and use it on your favourite OS. If you don't like the PoSH ISE, you now have the option to use Visual Studio Code for developing and debugging PoSH scripts. In effect, you end up with an awesome, cross-platform IDE with an equally awesome and cross-platform scripting framework.
Azure PowerShell - the bad
There are still some limitations outside the Windows ecosystem. The Azure cmd-lets are mostly complete but you may find that things are missing as the teams are slowly transitioning to the cross-platform framework. As such, it may not be the best tool if you intend to work on Linux or MacOS right now. In addition, PowerShell syntax introduces a new paradigm, so there's a bit of a learning curve if you haven't worked with PoSH before. Depending on the developer, PoSH scripts can be either too verbose or too compressed using aliases etc, making them harder to read or understand.
Azure CLI (v2.0)
The newly released and revamped Azure CLI is the first Azure tool that was designed to be cross-platform. The first version was built on top of Node.js but the team decided to move version 2 to Python for many reasons, primarily performance. The new CLI makes working with Azure a breeze, even if you haven't worked with the CLI before. Add the az interactive feature and now you get a fool-proof tool that can guide you every step of the way.
Azure CLI - the good
Truly cross platform and lightning fast. It's designed with performance in mind, making it possible to run multiple concurrent tasks in the background. This makes it stand out from its competition (primarily PoSH). I also find the interactive mode an excellent way to help onboard new uses to the tooling. The documentation is good and comes with useful examples on how to use it.
Azure CLI - the bad
Unlike PowerShell, this tool is not extensible. Consequently, you can't write your own "cmd-lets" - native commands that can be imported and used by the Azure CLI. It would also be great to have a few more "real-world" examples in the documentation to help drive adoption. However, it’s still early days and I expect the documentation to be extended and improve as adoption grows.
Visual Studio Code
If you live under a rock or haven't had the chance to try Visual Studio Code, then you're missing out on a great text editor. It's not an IDE, though it does come with many features that make it look like an IDE. Try to think of VS Code as the best of both worlds: an extremely fast, cross-platform editor that also allows you to write and debug code. For certain languages, like Node.js and .NET Core, it offers features like IntelliSense so you end up with a very powerful tool. VS Code also supports plugins, and this is where VS Code can become very useful for working with Azure. Similarly to PoSH and the Azure CLI, you get a lot of intelligent assistance, such as ARM template autocompletion, Azure Tools for VS Code, error detection and more.
VS Code - the good
VS Code can transform the way you interact with Azure or the way you automate your processes. It's also the tool of choice for many Azure services, fore example Functions, because you can create and debug Functions locally using VS Code! Visual Studio was slower to catch up with this service so there are many added benefits. It's also cross platform, it has great integration with source control and it's fast. There's a plethora of plugins to extend its capabilities, and the team behind the editor is constantly working to add new features and make it even more stable and snappy.
VS Code - the bad
I have still to find someone that has something negative to say about this tool. The Azure integration is great and the missing features are constantly added. If you feel that there's something missing, make sure that you reach out to the team and let them know. They are actively listening to the community because they want this to be a success.
Azure Cloud Shell
A newly released tool that brings your favourite CLI on the browser. That’s right, you get a command line right in the Azure Portal with the ability to manage your resources from your preferred browser. This is mind blowing, considering that you can now interact with your Azure subscription and underlying resources from any browser, including your phone (ignoring screen size and usability). At the moment (the tool is still in preview!), it only works with the Azure CLI but support for PowerShell is coming very soon.
Cloud Shell - The good
If you’re familiar with the Azure CLI, then this will feel like at home. It’s extremely easy to get started you don’t have to install anything on your machine. All you need to do is login to the Azure Portal and it’s there, ready to be used. It can be much faster than clicking around the portal and it works on all major browsers. As an added bonus, it even supports Azure Interactive mode.
Cloud Shell – The bad
Due to the fact this is a CLI as a Service™ the tool is not extensible. The Cloud Shell runs in a sandbox inside a browser, requires an active Azure subscription, and will file share using Azure Storage, so it comes with a cost, albeit an insignificant one. The file share is necessary for persisting your scripts, which is great in case you’re in the middle of an epic script editing session and your browser crashes. Consequently, there’s a cost but a minor one, and you should be aware of this.
If you work with Azure on a daily basis, you now have a number of tools that you can pick and choose depending on your preferences. If you're a hardcore CMD-loving person, then the CLI is a great choice. If, on the other hand, you have great skills with PoSH, then you can be extremely productive with it. Finally, if you like working inside a GUI-based environment, Visual Studio Code is a great tool and offers the ability to work either through the text editor or the integrated command line, making it the most versatile choice. I personally like to use them interchangeably, but we would be keen to hear your experience and your preferences. Let us know in the comments and if you haven't tried all of them yet, I encourage you to go out there and do it. You'll be surprised!