LoginSignup
0
0

はじめに

私はゲームのサーバーをAzureVMで実行して、日々ゲーミングライフを楽しんでいます。
DiscordからAzureVMを起動するために、Python側から起動と停止を調べたので書き記します。

準備

この後のコードで使用するためのSUBSCRIPTION_IDCLIENT_IDCLIENT_SECRETTENANT_IDはそれぞればれたらまずい(SUBSCRIPTION_IDは問題ないかもしれない)ので、環境変数にしてあげます。
それぞれの取得方法は以下の通りです。

AzureVMは作成済みの状態で、「Microsoft Entra ID>アプリの登録>新規登録」に進みます。
設定は特に変えずに名前を変えて登録します。
image.png
こちらの画像の赤文字が対応しています。それぞれコピーしましょう。

CLIENT_SECRETは「証明書またはシークレットの追加」を押せばシークレットキーが作成できるページに飛ぶので、「新しいクライアントシークレット」から追加してください。

image.png
次に自分のAzureVMの管理ページを開き、それぞれコピーします。

起動

まず、AzureVM起動のプログラムを書きます。
azure-identityazure-mgmt-computeの2つをインストールする必要があります。

pip install azure-identity azure-mgmt-compute

それぞれazure-identityは認証用に、azure-mgmt-computeはAzureVMの起動などの操作に使用します。

from azure.identity import ClientSecretCredential
from azure.mgmt.compute import ComputeManagementClient
import os

subscription_id = os.environ["SUBSCRIPTION_ID"]
resource_group_name = "MyVM_group"
vm_name = "MyVM"

client_id = os.environ["CLIENT_ID"]
client_secret = os.environ["CLIENT_SECRET"]
tenant_id = os.environ["TENANT_ID"]

credentials = ClientSecretCredential(tenant_id, client_id, client_secret)

compute_client = ComputeManagementClient(credentials, subscription_id)

vm = compute_client.virtual_machines.get(resource_group_name, vm_name)

operation = compute_client.virtual_machines.begin_start(resource_group_name, vm_name)
print("AzureVMを起動します。")

SUBSCRIPTION_IDCLIENT_IDCLIENT_SECRETTENANT_IDには先ほど控えたものを入れればOKです。

待機

起動といっても、現在のコードでは「起動しろ」という命令を送っただけなので、実際に起動するのはもう少し先になります。

operation = compute_client.virtual_machines.begin_start(resource_group_name, vm_name)
print("AzureVMを起動します。")
operation.wait()
print("AzureVMが起動しました。")

operation.wait()を使用することでAzureVMが完全に起動するまでの待機が可能です。

停止

停止はするときも似たような書き方でbegin_deallocateを使用します。

operation = compute_client.virtual_machines.begin_deallocate(resource_group_name, vm_name)

私が実際に使用するときには停止完了を検知していませんが、上のoperation.wait()で待機できるはずです(確か)。

おわりに

私は全部読めていませんが、こちらのサンプルコードがまとまっています。
Azure-Samples/azure-samples-python-management

実際にDiscordBotと連携して、AzureVMを制御できるとAzureにログインしていない鯖の人でもAzureVMの起動をすることができるので重宝させてもらっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0