Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use FindBin;
- use JSON qw/encode_json/;
- my $hostinfo = require $FindBin::Bin . '/hosts.dat';
- my $groups;
- foreach my $host (keys %{$hostinfo}) {
- foreach my $role (@{$hostinfo->{$host}{roles}}) {
- $groups->{$role}++;
- }
- }
- my $inventory;
- foreach my $role (keys %{$groups}) {
- $inventory->{$role}{hosts} = [];
- foreach my $host (keys %{$hostinfo}) {
- push(@{$inventory->{$role}{hosts}}, $host) if grep { $_ eq $role } @{$hostinfo->{$host}{roles}};
- }
- }
- foreach my $host (keys %{$hostinfo}) {
- $inventory->{_meta}{hostvars}{$host} = $hostinfo->{$host}{vars};
- }
- print encode_json($inventory);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement