Megosztás a következőn keresztül:


Példa: Webalkalmazás létrehozása és üzembe helyezése az Azure-kódtárak használatával

Ez a példa bemutatja, hogyan használhatja az Azure SDK felügyeleti kódtárait Egy Python-szkriptben webalkalmazás létrehozásához és üzembe helyezéséhez az Azure App Service-ben egy GitHub-adattárból lekért alkalmazáskóddal.

Az Azure SDK for Python olyan felügyeleti kódtárakat (névtereket) azure-mgmttartalmaz, amelyek lehetővé teszik az erőforrások konfigurálásának és üzembe helyezésének automatizálását – hasonlóan az Azure Portal, az Azure CLI vagy az ARM-sablonokhoz. Példák: Rövid útmutató: Python (Django vagy Flask) webalkalmazás üzembe helyezése az Azure App Service-ben.

1: A helyi fejlesztési környezet beállítása

Ha még nem tette meg, hozzon létre egy környezetet, ahol futtathatja ezt a kódot. Íme néhány lehetőség:

2: A szükséges Azure-kódtárcsomagok telepítése

Hozzon létre egy requirements.txt nevű fájlt a következő tartalommal:

azure-mgmt-resource
azure-mgmt-web
azure-identity

A helyi fejlesztési környezetben telepítse a követelményeket a következő kóddal:

pip install -r requirements.txt

3: A mintaadattár ágaztatása

  1. Látogassa meg https://github.com/Azure-Samples/python-docs-hello-world és forkolja le az adattárat a saját GitHub-fiókjába. Az elágazás használata biztosítja, hogy rendelkezik az alkalmazás Azure-ban való üzembe helyezéséhez szükséges engedélyekkel.

    A mintaadattár forkolása a GitHubon

  2. Ezután hozzon létre egy környezeti változót, REPO_URL és állítsa be az elágazott adattár URL-címére. Ezt a változót a következő szakaszban található példakód írja elő.

export REPO_URL=<url_of_your_fork>
export AZURE_SUBSCRIPTION_ID=<subscription_id>

4: Kód írása webalkalmazás létrehozásához és üzembe helyezéséhez

Hozzon létre egy provision_deploy_web_app.py nevű Python-fájlt, és adja hozzá a következő kódot. A soron belüli megjegyzések a szkript egyes részeit ismertetik. A REPO_URL és a AZURE_SUBSCRIPTION_ID környezeti változók már be kell hogy legyenek állítva az előző lépésben.

import random, os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.web import WebSiteManagementClient

# Acquire a credential object using CLI-based authentication.
credential = AzureCliCredential()

# Retrieve subscription ID from environment variable
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]

# Constants we need in multiple places: the resource group name and the region
# in which we provision resources. You can change these values however you want.
RESOURCE_GROUP_NAME = 'PythonAzureExample-WebApp-rg'
LOCATION = "centralus"

# Step 1: Provision the resource group.
resource_client = ResourceManagementClient(credential, subscription_id)

rg_result = resource_client.resource_groups.create_or_update(RESOURCE_GROUP_NAME,
    { "location": LOCATION })

print(f"Provisioned resource group {rg_result.name}")

# For details on the previous code, see Example: Provision a resource group
# at https://docs.microsoft.com/azure/developer/python/azure-sdk-example-resource-group


#Step 2: Provision the App Service plan, which defines the underlying VM for the web app.

# Names for the App Service plan and App Service. We use a random number with the
# latter to create a reasonably unique name. If you've already provisioned a
# web app and need to re-run the script, set the WEB_APP_NAME environment 
# variable to that name instead.
SERVICE_PLAN_NAME = 'PythonAzureExample-WebApp-plan'
WEB_APP_NAME = os.environ.get("WEB_APP_NAME", f"PythonAzureExample-WebApp-{random.randint(1,100000):05}")

# Obtain the client object
app_service_client = WebSiteManagementClient(credential, subscription_id)

# Provision the plan; Linux is the default
poller = app_service_client.app_service_plans.begin_create_or_update(RESOURCE_GROUP_NAME,
    SERVICE_PLAN_NAME,
    {
        "location": LOCATION,
        "reserved": True,
        "sku" : {"name" : "B1"}
    }
)

plan_result = poller.result()

print(f"Provisioned App Service plan {plan_result.name}")


# Step 3: With the plan in place, provision the web app itself, which is the process that can host
# whatever code we want to deploy to it.

poller = app_service_client.web_apps.begin_create_or_update(RESOURCE_GROUP_NAME,
    WEB_APP_NAME,
    {
        "location": LOCATION,
        "server_farm_id": plan_result.id,
        "site_config": {
            "linux_fx_version": "python|3.8"
        }
    }
)

web_app_result = poller.result()

print(f"Provisioned web app {web_app_result.name} at {web_app_result.default_host_name}")

# Step 4: deploy code from a GitHub repository. For Python code, App Service on Linux runs
# the code inside a container that makes certain assumptions about the structure of the code.
# For more information, see How to configure Python apps,
# https://docs.microsoft.com/azure/app-service/containers/how-to-configure-python.
#
# The create_or_update_source_control method doesn't provision a web app. It only sets the
# source control configuration for the app. In this case we're simply pointing to
# a GitHub repository.
#
# You can call this method again to change the repo.

REPO_URL = os.environ["REPO_URL"]

poller = app_service_client.web_apps.begin_create_or_update_source_control(RESOURCE_GROUP_NAME,
    WEB_APP_NAME, 
    { 
        "location": "GitHub",
        "repo_url": REPO_URL,
        "branch": "master",
        "is_manual_integration": True
    }
)

sc_result = poller.result()

print(f"Set source control on web app to {sc_result.branch} branch of {sc_result.repo_url}")

# Step 5: Deploy the code using the repository and branch configured in the previous step.
#
# If you push subsequent code changes to the repo and branch, you must call this method again
# or use another Azure tool like the Azure CLI or Azure portal to redeploy. 
# Note: By default, the method returns None.

app_service_client.web_apps.sync_repository(RESOURCE_GROUP_NAME, WEB_APP_NAME)

print(f"Deploy code")

Ez a kód CLI-alapú hitelesítést használ (AzureCliCredential), mert bemutatja azokat a műveleteket, amelyeket egyébként közvetlenül az Azure CLI használatával végezhetne. Mindkét esetben ugyanazt az identitást használja a hitelesítéshez. A környezettől függően előfordulhat, hogy először futtatnia az login kell a hitelesítéshez.

Ha az ilyen kódot éles szkriptben szeretné használni (például a virtuális gépek felügyeletének automatizálásához), használja DefaultAzureCredential (ajánlott) egy egyszerű szolgáltatásalapú metódussal a Python-alkalmazások Azure-szolgáltatásokkal való hitelesítéséről szóló cikkben leírtak szerint.

5: A szkript futtatása

python provision_deploy_web_app.py

6: A webalkalmazás üzembe helyezésének ellenőrzése

Az üzembe helyezett webhely megtekintéséhez futtassa a következő parancsot:

az webapp browse --name <PythonAzureExample-WebApp-12345> --resource-group PythonAzureExample-WebApp-rg

Cserélje le a webalkalmazás nevét (--name) a szkript által létrehozott értékre. Az erőforráscsoport nevét (--resource-group) csak akkor kell módosítania, ha azt a szkriptben megváltoztatta. Amikor megnyitja a webhelyet, a következőt kell látnia: "Hello, World!" a böngészőjében.

Jótanács

Ha nem látja a várt kimenetet, várjon néhány percet, és próbálkozzon újra.

Ha továbbra sem látja a várt kimenetet:

  1. Nyissa meg az Azure Portalt.
  2. Keresse meg az erőforráscsoportokat, és keresse meg a létrehozott erőforráscsoportot.
  3. Válassza ki az erőforráscsoportot az erőforrások megtekintéséhez. Győződjön meg arról, hogy egy App Service-csomagot és egy App Service-t is tartalmaz.
  4. Válassza ki az App Service-t, majd lépjen az Üzembe helyezési központba.
  5. Nyissa meg a naplók lapot az üzembehelyezési naplók hiba- vagy állapotfrissítéseinek ellenőrzéséhez.

7: A webalkalmazás kódjának ismételt üzembe helyezése (nem kötelező)

A szkript minden szükséges erőforrást kioszt a webalkalmazás üzemeltetéséhez, és konfigurálja az üzembehelyezési forrást az elágazott adattár manuális integrációval való használatára. A manuális integrációval manuálisan kell aktiválnia a webalkalmazást, hogy a megadott adattárból és ágból lekérje a frissítéseket.

A szkript a WebSiteManagementClient.web_apps.sync_repository metódussal aktiválja a webalkalmazást a kód lekéréséhez az adattárból. Ha további módosításokat hajt végre a kódon, újból üzembe helyezheti ezt az API-t, vagy más Azure-eszközök, például az Azure CLI vagy az Azure Portal használatával.

A kódot újra üzembe helyezheti az Azure CLI-vel az az webapp deployment source sync parancs futtatásával:

az webapp deployment source sync --name <PythonAzureExample-WebApp-12345> --resource-group PythonAzureExample-WebApp-rg

Az erőforráscsoport nevét (--resource-group) csak akkor kell módosítania, ha azt a szkriptben megváltoztatta.

A kód üzembe helyezése az Azure Portalon:

  1. Nyissa meg az Azure Portalt.
  2. Keresse meg az erőforráscsoportokat, és keresse meg a létrehozott erőforráscsoportot.
  3. Válassza ki az erőforráscsoport nevét az erőforrások megtekintéséhez. Győződjön meg arról, hogy egy App Service-csomagot és egy App Service-t is tartalmaz.
  4. Válassza ki az App Service-t, majd lépjen az Üzembe helyezési központba.
  5. A felső menüben válassza a Szinkronizálás lehetőséget a kód üzembe helyezésének elindításához.

8: Erőforrások törlése

az group delete --name PythonAzureExample-WebApp-rg --no-wait

Az erőforráscsoport nevét (--resource-group lehetőséget) csak akkor kell módosítania, ha a szkriptben már módosította.

Ha már nincs szüksége a példában létrehozott erőforráscsoportra, az az csoporttörlés parancs futtatásával törölheti azt. Bár az erőforráscsoportok nem generálnak folyamatos költségeket, érdemes a fel nem használt erőforrásokat eltávolítani. --no-wait Az argumentum használatával azonnal visszajuttathatja a vezérlőt a parancssorba anélkül, hogy megvárja a törlés befejezését.

Az erőforráscsoportokat programozott módon is törölheti a ResourceManagementClient.resource_groups.begin_delete metódus használatával.

Lásd még