LoginSignup
4
3

More than 3 years have passed since last update.

Azure CLIコマンドをdocker runと同時に実行して、実行が終わったらコンテナを破棄する

Last updated at Posted at 2018-12-25

公式dockerイメージを使ったazコマンド実行方法

Azure CLIには公式のDockerイメージがあります。
mcr.microsoft.com/azure-cli

このイメージを使って、docker runでazコマンド実行しようと思ったんですが、使い方を見てみるとazのコマンドプロンプトが立ち上がるだけで、そのあと手動でコマンド実行しないといけない仕様でした。
使い方はこんなイメージ。

  • docker run実行
$ docker run -it mcr.microsoft.com/azure-cli
bash-4.4# 
  • az login手動実行
bash-4.4# az login
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code xxxxxxx to authenticate.
  • 任意のazコマンド実行
bash-4.4# az vm list

このように対話式だと、Botから実行したり、CIにのせたりできないので、docker run時に目的のコマンドを実行して破棄するようなイメージを作りました。

azコマンドをdocker runと同時に実行してコンテナを破棄する

  • Dockerfileを作ります。
  • サービスプリンシパルは事前に作っておいてください。過去に記事を書いたのでご参考まで。(権限は要件に合わせて設定してください)
    サービスプリンシパル作成
FROM mcr.microsoft.com/azure-cli:latest

CMD /usr/local/bin/az login --service-principal \
    -u $AZURE_APPLICATION_ID \
    -p $AZURE_SECRET \
    --tenant $AZURE_TENANT_ID > /dev/null && \
    $CMD
  • buildします。
$ docker build -f Dockerfile -t azurecli:v1.0 .
  • azコマンドを実行します。Secretとかべた書きすると履歴が残っちゃうので、別ファイルに書いておいて実行時に読み込むなりしたほうがよいですね。
$ docker run --rm -e AZURE_APPLICATION_ID=[Your Application ID] \
                  -e AZURE_SECRET=[Your Secret] \
                  -e AZURE_TENANT_ID=[Your Tenant ID] \
                  -e CMD="/usr/local/bin/az vm start -g [ResourceGroup] -n [VM Name]" azurecli:v1.0
4
3
2

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
4
3