9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Azure CLI をバッチで使用する方法

Last updated at Posted at 2018-02-15

はじめに

Azure Portal にアクセスして仮想マシンを管理していたのですが、台数が多いと起動停止だけでも手順が少し煩雑に感じられてきました。この記事では Azure CLI 2.0 を使用してどうやったら簡単にパブリッククラウドの必要なときに必要なだけという柔軟なリソースを享受できるのかというのを目的にあれこれ試した備忘録を残しておこうと思います。
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

Azure CLI でバッチ使用するための準備

Azure CLI でログインするための方法あれこれ

 Azure CLI で自動化するにあたって、ログインする必要があります。いつも自分でコマンドラインを実行できる環境なら問題無いですが、そもそもコマンドラインから管理したい理由は抜け漏れがないようにしたいことと自動化(macOS のAutomaterあたりで実行できたらいいなと考えている)を視野にいれているため、インタラクティブなログインだと都合が悪い。
コマンドラインでIDとパスを渡す方式は2要素認証が設定されていると使用できないため、サービスプリンシパルを使用することにしました。
検討に際してドキュメントを一読するとよいと思います。

前提環境

サービスプリンシパルの作り方

サービスプリンシパルは Azure CLI で作成します。
詳細はマニュアル(Create an Azure service principal with Azure CLI 2.0)を参考にしてください。
作業前に az login しておきます。(コマンド実行結果は適当に伏せ字です。)

$ az ad sp create-for-rbac --name spuser --password p@ssw0rd
Retrying role assignment creation: 1/36
{
  "appId": "abcdefgh-ijkl-mnop-qrst-uvwxyz12345",
  "displayName": "spuser",
  "name": "http://spuser",
  "password": "p@ssw0rd",
  "tenant": "12345678-90ab-cdef-ghij-klmnopqrstuv"
}

サービスプリンシパルに権限付与します。
今回はビルトインのOwnerをアサインしました。ビルトインのロールの詳細はこちらのドキュメントBuilt-in roles for Azure role-based access control に記載があります。

$ az role assignment create --assignee abcdefgh-ijkl-mnop-qrst-uvwxyz12345 --role Owner
{
  "id": "/subscriptions/...snip.../providers/Microsoft.Authorization/roleAssignments/...snip...",
  "name": "...snip...",
  "properties": {
    "additionalProperties": {
      "createdBy": null,
      "createdOn": "2018-02-15T10:12:32.6334177Z",
      "updatedBy": "...snip...",
      "updatedOn": "2018-02-15T10:12:32.6334177Z"
    },
    "principalId": "...snip...",
    "roleDefinitionId": "/subscriptions/...snip.../providers/Microsoft.Authorization/roleDefinitions/...snip...",
    "scope": "/subscriptions/...snip..."
  },
  "type": "Microsoft.Authorization/roleAssignments"
}

サービスプリンシパルでログインします。

az login --service-principal --username abcdefgh-ijkl-mnop-qrst-uvwxyz12345 --password p@ssw0rd --tenant 12345678-90ab-cdef-ghij-klmnopqrstuv

[
  {
    "cloudName": "AzureCloud",
    "id": "...snip...",
    "isDefault": true,
    "name": "Microsoft Azure ...snip...",
    "state": "Enabled",
    "tenantId": "...snip...",
    "user": {
      "name": "...snip...",
      "type": "servicePrincipal"
    }
  }
]

ログイン完了。具体的な操作はまた今度。

参考資料

Create an Azure service principal with Azure CLI 2.0

Built-in roles for Azure role-based access control

Azure CLI 2.0 を使用してログインする

9
7
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
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?