AzureをAnsibleから弄ってみる
どうも。
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
$ 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]
$ sudo pip install ansible
$ sudo pip install ansible[azure]
自分はpyenvを常用しているが、どうやらansibleはライブラリを読み込むのはデフォルトのパス(/usr/lin/python2.7
)らしいので、一旦pyenv global system
した。本当はvirtualenvとか使ったほうがいいのかもしれない。
playbookの作成
参考
Author And Source
この問題について(AzureをAnsibleから弄ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/onokatio/items/c687cffcc1d03f4aff3d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .