LoginSignup
1
0

More than 5 years have passed since last update.

IDCFクラウドでAnsible Dynamic Inventory

Posted at

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
1
0
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
1
0