89 lines
2.8 KiB
Markdown
89 lines
2.8 KiB
Markdown
|
# Microsoft Azure SDK for Go
|
||
|
|
||
|
This project provides various Go packages to perform operations
|
||
|
on Microsoft Azure REST APIs.
|
||
|
|
||
|
[![GoDoc](https://godoc.org/github.com/Azure/azure-sdk-for-go?status.svg)](https://godoc.org/github.com/Azure/azure-sdk-for-go) [![Build Status](https://travis-ci.org/Azure/azure-sdk-for-go.svg?branch=master)](https://travis-ci.org/Azure/azure-sdk-for-go)
|
||
|
|
||
|
See list of implemented API clients [here](http://godoc.org/github.com/Azure/azure-sdk-for-go).
|
||
|
|
||
|
> **NOTE:** This repository is under heavy ongoing development and
|
||
|
is likely to break over time. We currently do not have any releases
|
||
|
yet. If you are planning to use the repository, please consider vendoring
|
||
|
the packages in your project and update them when a stable tag is out.
|
||
|
|
||
|
# Installation
|
||
|
|
||
|
go get -d github.com/Azure/azure-sdk-for-go/management
|
||
|
|
||
|
# Usage
|
||
|
|
||
|
Read Godoc of the repository at: http://godoc.org/github.com/Azure/azure-sdk-for-go/
|
||
|
|
||
|
The client currently supports authentication to the Service Management
|
||
|
API with certificates or Azure `.publishSettings` file. You can
|
||
|
download the `.publishSettings` file for your subscriptions
|
||
|
[here](https://manage.windowsazure.com/publishsettings).
|
||
|
|
||
|
### Example: Creating a Linux Virtual Machine
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"encoding/base64"
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/Azure/azure-sdk-for-go/management"
|
||
|
"github.com/Azure/azure-sdk-for-go/management/hostedservice"
|
||
|
"github.com/Azure/azure-sdk-for-go/management/virtualmachine"
|
||
|
"github.com/Azure/azure-sdk-for-go/management/vmutils"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
dnsName := "test-vm-from-go"
|
||
|
storageAccount := "mystorageaccount"
|
||
|
location := "West US"
|
||
|
vmSize := "Small"
|
||
|
vmImage := "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04-LTS-amd64-server-20140724-en-us-30GB"
|
||
|
userName := "testuser"
|
||
|
userPassword := "Test123"
|
||
|
|
||
|
client, err := management.ClientFromPublishSettingsFile("path/to/downloaded.publishsettings", "")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
// create hosted service
|
||
|
if err := hostedservice.NewClient(client).CreateHostedService(hostedservice.CreateHostedServiceParameters{
|
||
|
ServiceName: dnsName,
|
||
|
Location: location,
|
||
|
Label: base64.StdEncoding.EncodeToString([]byte(dnsName))}); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
// create virtual machine
|
||
|
role := vmutils.NewVMConfiguration(dnsName, vmSize)
|
||
|
vmutils.ConfigureDeploymentFromPlatformImage(
|
||
|
&role,
|
||
|
vmImage,
|
||
|
fmt.Sprintf("http://%s.blob.core.windows.net/sdktest/%s.vhd", storageAccount, dnsName),
|
||
|
"")
|
||
|
vmutils.ConfigureForLinux(&role, dnsName, userName, userPassword)
|
||
|
vmutils.ConfigureWithPublicSSH(&role)
|
||
|
|
||
|
operationID, err := virtualmachine.NewClient(client).
|
||
|
CreateDeployment(role, dnsName, virtualmachine.CreateDeploymentOptions{})
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
if err := client.WaitForOperation(operationID, nil); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
# License
|
||
|
|
||
|
This project is published under [Apache 2.0 License](LICENSE).
|