なっく日報

技術やら生活やらのメモ

一発ネタ。ワンライナーでDynamic Inventory

このままでは使えないですが、何かのヒントにはなるかもしれません。

GCPなんかで、AnsibleのDynamic Inventoryを使う場合、↓の公式ページによれば

http://docs.ansible.com/ansible/guide_gce.html#gce-dynamic-inventory

gcp.pyでやるのをオススメしてます。

が、Dynamic Inverntoryを実現するスクリプトを作るのは結構簡単です。

↓のルールを守って、JSON形式の標準出力でホスト一覧を返せばよいと。
Developing Dynamic Inventory Sources — Ansible Documentation

このレベルであれば、gcloudコマンドとjqを組み合わせればあっさりいけそうな感じ。

#!/bin/sh
gcloud compute instances list --format json --project project_name \
  | jq 'map(select(.tags.items | any(. == "jenkins"))) | {jenkins:{hosts:map(.networkInterfaces[0].networkIP)}}'

とかでも動くっちゃ動く(冒頭でもいってますが、このままじゃ使えませんが・・・)

上記のコマンドで「タグにjenkinsを含むホストのインターナルIPを抜き出して整形」ができるという感じです。