We are happy to announce Azure Resource Manager (ARM) Preview SDKs are available for multiple languages and platforms. These include Java, Python, Go and Ruby SDKs. Each of these language implementations are available through their ecosystem package managers and GitHub, and they're ready for a test drive! The SDKs are preview, so consumers of the SDKs should expect some upcoming changes before their full release. However, even though there will likely be some upcoming change, we're excited and believe the code is ready for use!
Azure is rapidly growing, adding new features and services constantly. This expansion of features and services empowers Azure customers with astonishing new functionality at an astounding pace. The pace of which has been a challenge to parallel across all of Azure’s supported languages and platforms with the same level of fidelity and consistency. The effort required to produce hand-written SDKs at the pace and scale of Azure's evolution is intractable. To that effect, we've been transitioning to a generated code model across all our SDKs to enable our SDKs to scale at the same pace as Azure.
The code in each of these SDKs is generated from Azure RESTful API specifications. These specifications are open source and based on the Swagger v2 specification. The SDK code is generated code via an open source project called AutoRest. AutoRest transforms these RESTful API specifications into client libraries in multiple languages. If there are any aspects of the generated code in the SDKs you would like to improve, the entire set of tools to create the SDKs are open, freely available and based in widely adopted API specification format.
Getting Started: ARM Authentication
Before using the Azure Resource Manager SDKs, you need to understand how the SDKs authenticate and authorize requests. All of the preview SDKs require developers using the SDKs to authenticate via Azure Active Directory to get a bearer token often using OAuth2. While OAuth2 provides many advantages over certificates, programmatic use, such as for scripts on headless servers, requires understanding and creating one or more Service Principals. This can be one of the more difficult concepts for developers getting started with the SDKs. For a reference on setting up a service principal from the command line, see Authenticating a service principal with Azure Resource Manager. For a more robust explanation of authentication in Azure, see Developer’s guide to auth with Azure Resource Manager API.
After creating the service principal, you should have three pieces of information, a client id (GUID), client secret (string), and tenant id (GUID) or domain name (string).
Getting Started: ARM Java SDK Preview
Getting started with the Azure Java SDK is as simple as adding the Azure SDK artifacts via maven to your Java project. The maven artifacts are the simplest way to ensure you have all of the required dependencies for the Java SDK.
After adding the artifacts to your project, check out one of our collections of Getting Started samples in the Azure SDK for Java GitHub repository. These samples will show you how to deploy templates or create virtual machines. There are also several utilities and helpers you will find useful for common tasks in the azure-mgmt-utilities.
Getting Started: ARM Python SDK Preview
The Azure Python SDK is available via PyPI and supports Python 2.7, 3.3 and 3.4. To get started, you can install the entire package via `pip install azure` or the individual packages per the documentation.
Getting Started: ARM Go SDK Preview
The Azure Go SDK is designed to be easy to use, out of the box. It should be “clone and go” for straightforward use. To get started, install the Azure Resource Manager packages for the Go through `go get`. You can find a listing of the packages here.
Getting Started: ARM Ruby SDK Preview
Future of the Azure SDKs
We will be continuing to release more ARM functionality as more API specifications are available and as the AutoRest project matures. All of this work will be taking place in GitHub, and will be open for feedback from the community. If you would like to get involved in any of the projects, please open an issue or submit a pull request. We look forward to coding with you!