Azure CLI und Azure SDK - Verbindung mit der deutschen Azure Cloud

Wenn ihr gerne mit der Azure CLI arbeitet und euch nun entschlossen habt eure Daten und VMs in einem deutsch Rechnezentrum zu Verwalten, kommt ziemlich schnell nur die Deutsche Azure Cloud in Frage.

Die deutsche Azure Cloud wird von Microsoft angeboten, jedoch von deutschen Unternehmen nach deutschen Datenschutzrecht, betrieben und überwacht. Ihr findet viele Informationen dazu im Netz.

Da es eine vollständige Trennung der deutschen Azure Cloud von der globalen Cloud gibt, können die meisten Tools nicht "einfach so" mit der kleinen deutschen Schwester reden. Alle API - Endpunkte sind auf einer anderen URL, meist mit der Endung ".de" zu finden. Der Azure CLI kann
ohne großen Aufwand beigebracht werden eine Verbindung mit der deutschen Cloud aufzunehmen.
Die Entwickler haben analog zur Azure China und US Government Cloud auch für den deutschen Ableger alle notwendigen URLs im Code hinterlegt.

Ein "Umbiegen" der Endpunkte erfolgt mit folgendem Konfigurationsbefehl:

az cloud set --name AzureGermanCloud


Ganz ähnlich verhält es sich (endlich) mit dem Python SDK für Azure.

Seit wenigen Wochen ist nun endlich eine Implementierung in der Bibliothek "msrestazure" vorhanden, welche es erlaubt sich ohne Hacks mit der deutschen Azure Cloud zu verbinden.

Hier ein Codesample:
#!/usr/bin/env python
# requirements: pip install azure msrestazure
import os
'''
AZURE_PUBLIC_CLOUD
AZURE_CHINA_CLOUD
AZURE_US_GOV_CLOUD
AZURE_GERMAN_CLOUD
'''
from msrestazure.azure_cloud import AZURE_GERMAN_CLOUD as cloud_environment
from msrestazure.azure_active_directory import UserPassCredentials
from msrestazure.azure_active_directory import ServicePrincipalCredentials
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.compute import ComputeManagementClient
# Prefered way for Azure connection is the use of ServicePrincipalCredentials
# in environment variables. When they are not existing, then we ask for
# username and password
if os.environ.has_key("AZURE_CLIENT_ID"):
credentials = ServicePrincipalCredentials(
client_id=os.environ['AZURE_CLIENT_ID'],
secret=os.environ['AZURE_CLIENT_SECRET'],
tenant=os.environ['AZURE_TENANT_ID'],
cloud_environment=cloud_environment
)
else:
credentials = UserPassCredentials(
username=raw_input('Username: '),
password=raw_input('Password: '),
tenant=raw_input('Tenant (AD Identifier): '),
cloud_environment=cloud_environment
)
if os.environ.has_key("AZURE_SUBSCRIPTION_ID"):
subscription_id = os.environ.get('AZURE_SUBSCRIPTION_ID')
else:
subscription_id = raw_input('Subscription (ID): ')
client = ResourceManagementClient(
credentials,
subscription_id,
base_url=cloud_environment.endpoints.resource_manager
)
compute_client = ComputeManagementClient(
credentials,
subscription_id,
base_url=cloud_environment.endpoints.resource_manager
)
try:
# List VMs in subscription
print('\nList VMs in subscription')
for vm in compute_client.virtual_machines.list_all():
print("\tVM: {}".format(vm.name))
pass
except Exception as e:
print e
raise
finally:
print ('done')
pass
view raw getVMs.py hosted with ❤ by GitHub

Keine Kommentare: