Ansible
IDCFクラウド

IDCFクラウドでAnsible Dynamic Inventory

More than 1 year has passed since last update.

IDCFクラウドは価格がお手頃なので個人的によく使っているのですが、Ansibleを使うときにIPをinventoryファイルに直書きするのが不便なのでシェルスクリプトでDynamic Inventoryを簡易的に実装してみました。


実装したスクリプト


idcf.sh

#!/bin/bash -e

groups="$(idcfcloud compute listVirtualMachines | jq -r '.data.virtualmachine[].group' | uniq)"

for group in $groups ; do
ips=$(idcfcloud compute listVirtualMachines | jq -r ".data.virtualmachine[] | select(.group == \"$group\") | .nic[0].ipaddress")
jo_params=$jo_params\ $group=$(jo hosts="$(jo -a $ips)")
done

jo -p $jo_params



実行に必要なツール

実行するにはidcfcloudとjqとjoコマンドがインストールされている必要があります。


スクリプト実行結果例

仮想マシンに設定したグループ名毎にIPのリストが出力されるようにしました。


  • IDCFクラウドの仮想マシンのグループ名設定箇所
    image.png

$ ./idcf.sh

{
"group1": {
"hosts": [
"10.13.0.250",
"10.13.0.199"
]
},
"group2": {
"hosts": [
"10.13.0.149"
]
}
}


配置例

Inventoryとして指定してあげればAnsibleが実行してくれます。

├── ansible.cfg

├── playbook.yml
├── group_vars
│   ├── all.yml
│   ├── group1.yml
│   └── group2.yml
├── hosts
│   ├── base
│   └── idcf.sh