AnsibleでAzure上のWindows管理
最近、お仕事でAnsibleを使う機会が増えてきました。というか、自分が好んで使っているだけですが…
ネット上で情報収集するも、管理対象がLinux系が多く、なかなかWindows系が出てこないので、自分の忘備録もかねて。
Azure上のリソースを払い出し
これはネットや書籍にサンプルが載っているものがありましたが、流れと利用モジュールは以下になるかと思います。
- リソースグループ作成
- azure_rm_resourcegroup
- 仮想ネットワーク作成
- azure_rm_virtualnetwork
- セキュリティグループ作成
- azure_rm_securitygroup
- サブネット作成
- azure_rm_subnet
- パブリックIP作成
- azure_rm_publicipaddress
- ネットワークインターフェース作成
- azure_rm_networkinterface
- VM作成
- azure_rm_virtualmachine
- azure_rm_virtualmachineextension
最後のVM作成は azure_rm_virtualmachine だけで作成はされますが、WinRM設定を実施するため azure_rm_virtualmachineextension を利用しています。
以下、こんな感じで使ってますよの例です。
--- - name: Create virtual machine azure_rm_virtualmachine: resource_group: "{{ rg_name }}" name: "{{ item.name }}" admin_username: "{{ item.username }}" admin_password: "{{ item.password }}" vm_size: "{{ item.vm_size }}" os_type: "{{ item.os_type }}" network_interfaces: "{{ item.name }}-nic" image: offer: "{{ item.image_offer }}" publisher: "{{ item.image_publisher }}" sku: "{{ item.image_sku }}" version: "{{ item.image_version }}" loop: "{{ azure_vms }}" - name: Create VM script extension to enable HTTPS WinRM listener azure_rm_virtualmachineextension: name: "{{ item.name }}-extension" resource_group: "{{ rg_name }}" virtual_machine_name: "{{ item.name }}" publisher: Microsoft.Compute virtual_machine_extension_type: CustomScriptExtension type_handler_version: '1.9' settings: '{"fileUris": ["https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"],"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File ConfigureRemotingForAnsible.ps1"}' auto_upgrade_minor_version: true loop: "{{ azure_vms }}" ...
azure_rm_virtualmachineextension のなかで CustomScriptExtension を使用し、公式のWinRM設定スクリプトを実行しています。
ただし、ここにも記載があるとおり、基本認証が設定されるため、トレーニングや開発での使用としてください。
これで払い出された仮想マシンに対して win_*** なモジュールが利用できる状態となります。