Ansible2.1が発表された記事がFacebookに流れてきたので、何気に眺めていたらARM(Azure Resource Manager)のサポートが追加されたらしいので少し試してみた。
Broader support for Microsoft Azure, expanding Ansible’s support for hybrid cloud deployments, including the ability to take advantage of Azure’s Resource Manager functionality.
お試しの前に...
実務でAnsibleを使っている場合(特に1.x系)、影響が出てしまうと困るので以下などを参考にpyenv/pyenv-virtualenvを入れて環境を切り替えられるようにしてから試すほうがいいでしょう。
Azure Python SDKのインストール
pyenv環境にazure SDKを入れて試したところ以下のようなエラーが出て、SDKを認識できませんでした。
fatal: [ansible.decr.jp]: FAILED! => {"changed": false, "failed": true, "msg": "The Azure Python SDK is not installed (try 'pip install azure') - No module named enum"}
試しに global の方に入れてみたところ認識されました。*1
$ sudo pip install azure==2.0.0rc2
ちなみに、最新のSDKは2.0.0rc4だったのでこちらで試したところ以下のようなエラーで動作しませんでした。
fatal: [ansible.decr.jp]: FAILED! => {"changed": false, "failed": true, "msg": "Expecting azure.mgmt.compute.__version__ to be >= 2016-03-30. Found version Do you have Azure >= 2.0.0rc2 installed?"}
この辺りはまだ出たばかりなので、今後の改善を期待したいですね。
Ansibleのインストール
Ansible本体をインストールします
$ pip install ansible
Ansibleの設定を書く
- hosts/hosts
Asure関連の処理はlocalで動作するのでhostsはこんな感じで適当に...
[ansibletest] ansibletest.example.com
- roles/azure/tasks/main.yml
<サブスクリプションID>などの設定は各自の環境に合わせて修正してください。*2
- name: Create a resource group azure_rm_resourcegroup: name: Testing location: japanwest state: present subscription_id: <サブスクリプションID> client_id: <クライアントID> secret: <secret> tenant: <テナントID> tags: testing: testing delete: never
- azuretest.yml
--- - name: ansible test hosts: ansibletest connection: local roles: - azure
playbookを実行する
$ ansible-playbook -i hosts/hosts default.yml
PLAY [ansible test] ************************************************************
TASK [setup] *******************************************************************
ok: [ansibletest.example.com]TASK [azure : include] *********************************************************
included: /Users/kaz/dev/ansible21/roles/azure/tasks/resource-group.yml for ansibletest.example.comTASK [azure : Create a resource group] *****************************************
ok: [ansibletest.example.com]PLAY RECAP *********************************************************************
ansibletest.example.com : ok=3 changed=0 unreachable=0 failed=0
問題なく実行されると、portal上でもリソースグループが追加されました。
まとめ
今回はリソースグループを作ってみただけですが、業務に適用できるか引き続き色々試してみようと思います。
TerraformもARM対応したりと色々面白くなってきましたね(^^。