2
3

More than 3 years have passed since last update.

AzureをAnsibleから弄ってみる

Last updated at Posted at 2019-10-20

どうも。
AnsibleでVMの構成管理をしたいことってありますよね。
ただ、公式ドキュメントが散らばっていてわかりにくいので、自分なりにまとめてみました。

Azure cliツールを導入する

brewとかで入ります。環境により方法が違うので割愛。

Azure cliから自分のアカウントにログインする

$ az login

すると、デフォルトブラウザでログイン画面が開きます。ログインが終わると、ブラウザでコードの入力を求められるので、az loginした後に表示されているコードを入力します。

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

いわゆるアプリケーション登録らしいです。

$ az ad sp create-for-rbac --query [appId,password,tenant]

[
    "aaaaa-aaaaa-aaaaaa",
    "bbbbb-bbbbb-bbbbbb",
    "ccccc-ccccc-cccccc"
]

実行すると、キーが3つ入ったjsonが帰ってきます。
上から順に、アプリケーションID、アプリケーションパスワード、テナント、らしいです。

TwittterのOAuthでいうアプリケーションキーとアプリケーションシークレットみたいな感じですかね。

また、自分のサブスクリプションIDも必要らしいので、取得します。

$ az account show --query [id] --output tsv

ddddd-ddddd-ddddd

認証情報の追加

~/.azure/credentialsというファイルを作り編集します。
サブスクリプションIDには先程取得したもの、クライアントIDからテナントまでは、先程のjsonの順番のとおりで大丈夫です。

[default]
subscription_id=ddddd-ddddd-ddddd
client_id=aaaaa-aaaaa-aaaaaa
secret=bbbbb-bbbbb-bbbbbb
tenant=ccccc-ccccc-cccccc

cli(コマンドライン)から試す

場所を選ぶ。

$ az account list-locations | grep -B1 -A6 Japan

をすると、データセンターの場所が選べる。日本は西日本か東日本の2つしか無い。
今回はjapaneastを選ぶ。

リソースグループを選ぶ

$ az group list

をすると、今どんなリソースグループがあるか確認できる。
以下で新しく作成もできる。

$ az group create --name test-by-ansible --location japaneast

サーバーのサイズを選ぶ

$ az vm list-sizes --location japaneast

を実行すると、japaneastで使えるVMの種類リストが出てきます。
たとえばStandard_B1msは、1CPU、メモリ2G、SSDが4GBのプランになっています。

ネットワークを選ぶ

$ az network vnet list

みたいに実行すると、今Azureにある仮想ネットワークが表示される。
仮想ネットワークは、単純にVM同士をつなげたりするのに使う。
以下のようにして、新しく作ることもできる。

$ az network vnet create --name test-network --resource-group test-by-ansible

OSを選ぶ

$ az vm image list

を実行すると、UbuntuやらCentOSやら色々出てくる。
今回はUbuntu 16.04 LTSを選んだ。
offer, sku, publisher, versionを覚えておく。

VMを作成する

$ az vm create --name test-vm --resource-group test-by-ansible --image UbuntuLTS --size Standard_B1ms --vnet-name test-network --admin-username onokatio  --ssh-key-value ~/.ssh/azure.pub

みたいに実行する。

実際にAnsibleのplaybookで動かしてみる

ライブラリなどのインストール

$ sudo pip install ansible
$ sudo pip install ansible[azure]

自分はpyenvを常用しているが、どうやらansibleはライブラリを読み込むのはデフォルトのパス(/usr/lin/python2.7)らしいので、一旦pyenv global systemした。本当はvirtualenvとか使ったほうがいいのかもしれない。

playbookの作成

参考

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