0.准备
1.安装azure cli
2.确保powershell的版本在5.0以上
1.切换及登录
az cloud set -n AzureChinaCloud
az login #输入后会弹出登录界面
2. 创建RBAC
az ad sp create-for-rbac -n "testrole" --role Contributor --scopes /subscriptions/{subId}/resourceGroups/{resourceGroup}
3.Golang SDK(环境变量模式)
os.Setenv("AZURE_TENANT_ID", tenantId)
os.Setenv("AZURE_CLIENT_ID", clientId)
os.Setenv("AZURE_CLIENT_SECRET", clientSecret)
clientOption := arm.ClientOptions{policy.ClientOptions{}, nil, false, arm.AzureChina}
credential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil || credential == nil {
log.Error("[NewAzureLocalClient] Failed to Generate AzureCredential")
return nil
}
virtualMachinesClient := armcompute.NewVirtualMachinesClient(subscriptionId, credential, &clientOption)
if virtualMachinesClient == nil {
log.Error("[NewAzureLocalClient] Failed to Generate VirtualMachinesClient")
return nil
}
4.Golang SDK(认证模式)
credential, err := azidentity.NewClientSecretCredential(tenantId, clientId, clientPass, loginOption)
if err != nil || credential == nil {
log.Error("[NewAzureLocalClient] Failed to Generate AzureCredential")
return nil
}
virtualMachinesClient := armcompute.NewVirtualMachinesClient(subscriptionId, credential, &clientOption)
if virtualMachinesClient == nil {
log.Error("[NewAzureLocalClient] Failed to Generate VirtualMachinesClient")
return nil
}
5.Golang SDK(代理模式)
// 设置代理访问
proxy, _ := url.Parse("http://xx.xx.xx.xx:9090")
defaultTransport := &http.Transport{
Proxy: http.ProxyURL(proxy),
DialContext: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
}).DialContext,
ForceAttemptHTTP2: true,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
TLSClientConfig: &tls.Config{
MinVersion: tls.VersionTLS12,
},
}
defaultHTTPClient := &http.Client{
Transport: defaultTransport,
}
clientOptions := azcore.ClientOptions{}
clientOptions.Transport = defaultHTTPClient
// 非环境变量编程模式
loginOption := &azidentity.ClientSecretCredentialOptions{clientOptions, azidentity.AzureChina}
credential, err := azidentity.NewClientSecretCredential(tenantId, clientId, clientPass, loginOption)
if err != nil || credential == nil {
log.Error("[NewAzureLocalClient] Failed to Generate AzureCredential")
return nil
}
armOption := &arm.ClientOptions{clientOptions, nil, false, arm.AzureChina}
virtualMachinesClient := armcompute.NewVirtualMachinesClient(subscriptionId, credential, armOption)
if virtualMachinesClient == nil {
log.Error("[NewAzureLocalClient] Failed to Generate VirtualMachinesClient")
return nil
}