In [1]:
!sudo salt-key -L --out=json > /mnt/data/salt-keys.json
!sudo salt --static --out json '*' grains.item id os_family os osrelease oscodename osfinger ip4_interfaces kernel > /mnt/data/salt-grains.json
In [2]:
import pandas as pd
import json
tmp = pd.read_json("/mnt/data/salt-grains.json", orient='index')
#https://docs.saltstack.com/en/latest/ref/cli/salt.html
#salt --static --out json '*' grains.item id os_family os osrelease oscodename osfinger ip4_interfaces kernel > /mnt/data/salt-grains.json
df_grains = pd.read_json(tmp['ret'].to_json(), orient='index')
#usable_dataframe = pd.io.json.json_normalize(jsondata)
#rather roll own?
In [3]:
df_grains
Out[3]:
In [4]:
import json
from pprint import pprint
with open('/mnt/data/salt-grains.json') as json_data:
d = json.load(json_data)
json_data.close()
pprint(d)
In [5]:
import json
with open('/mnt/data/salt-grains.json') as json_data:
grains_incoming = json.load(json_data)
json_data.close()
grains_staged = {}
for key, value in grains_incoming.items():
retval = {}
retval['id'] = value['ret']['id']
retval['kernel'] = value['ret']['kernel']
retval['os'] = value['ret']['os']
retval['os_family'] = value['ret']['os_family']
retval['oscodename'] = value['ret']['oscodename']
retval['osrelease'] = value['ret']['osrelease']
retval['osfinger'] = value['ret']['osfinger']
tmp = []
for key2, value2 in value['ret']['ip4_interfaces'].items():
if key2 not in ['lo']:
tmp.append(value2[0])
retval['ip4_interfaces'] = ", ".join(tmp)
grains_staged[key] = retval
grains_staged
Out[5]:
In [6]:
import json
with open('/mnt/data/salt-keys.json') as json_data:
keys_incoming = json.load(json_data)
json_data.close()
keys_staged={}
for k, col in keys_incoming.items():
print(col)
for m in map(str, col):
keys_staged[m] = k
keys_staged
Out[6]:
In [7]:
from pprint import pprint
minions = {}
for k, v in keys_staged.items():
tmp = {}
tmp['keystatus'] = v
if k in grains_staged:
tmp['grains'] = grains_staged[k]
minions[k] = tmp
pprint(minions)
In [8]:
df_minions = pd.DataFrame.from_dict(minions, orient='index')
df_minions
Out[8]:
In [ ]: