概要
なんとなく作ったのでメモ
すべての YAML ファイルに対応してはいない
想定 inventory ファイル
mkdir -p /path/to/inventory
touch /path/to/inventory/i1.yml
touch /path/to/inventory/i2.yml
i1.yml
---
i1:
children:
app:
hosts:
h1:
ansible_host: 192.168.100.10
h2:
ansible_host: 192.168.100.11
i2.yml
---
i2:
children:
app:
hosts:
h3:
ansible_host: 192.168.100.12
util:
hosts:
h4:
ansible_host: 192.168.100.13
Ruby スクリプト
vim export.rb
require 'yaml'
Dir.glob('/path/to/inventory/*.yml').each { |name|
yaml = YAML.load_file("#{name}")
ret = ""
yaml.each { |s|
s[1]['children'].each { |k1, v1|
v1['hosts'].each { |k, v|
ret += <<-"EOF"
Host #{k}
Hostname #{v['ansible_host']}
Port 22
User user1
EOF
}
}
}
puts ret
}
ruby export.rb
結果は以下の通り
Host h1
Hostname 192.168.100.10
Port 22
User user1
Host h2
Hostname 192.168.100.11
Port 22
User user1
Host h3
Hostname 192.168.100.12
Port 22
User user1
Host h4
Hostname 192.168.100.13
Port 22
User user1
あとはこの結果を貼り付けるなり実行時に <<
すれば OK
最後に
もっと良い方法はないだろうか
もっと簡潔に書けるはず
0 件のコメント:
コメントを投稿