79 lines
2.1 KiB
Python
79 lines
2.1 KiB
Python
import tomlkit
|
|
|
|
|
|
def inner_dict_to_list(dict_of_dicts):
|
|
"""
|
|
Example:
|
|
{
|
|
'cpu': {
|
|
'default': {'something': True},
|
|
'another': {'something': False},
|
|
},
|
|
}
|
|
becomes
|
|
{
|
|
'cpu': [
|
|
{'something': True},
|
|
{'something': False},
|
|
],
|
|
}
|
|
"""
|
|
return {
|
|
key: [value for _, value in sorted(dicts.items())]
|
|
for key, dicts in sorted(dict_of_dicts.items())
|
|
}
|
|
|
|
|
|
files = {
|
|
"/etc/telegraf/telegraf.conf": {
|
|
'owner': 'telegraf',
|
|
'group': 'telegraf',
|
|
'mode': '0440',
|
|
'needs': [
|
|
"pkg_apt:telegraf",
|
|
],
|
|
'content': tomlkit.dumps({
|
|
'agent': node.metadata.get('telegraf/agent'),
|
|
'inputs': inner_dict_to_list(node.metadata.get('telegraf/inputs')),
|
|
'processors': inner_dict_to_list(node.metadata.get('telegraf/processors')),
|
|
'outputs': inner_dict_to_list(node.metadata.get('telegraf/outputs')),
|
|
}),
|
|
'triggers': {
|
|
'svc_systemd:telegraf.service:restart',
|
|
},
|
|
},
|
|
'/usr/local/share/telegraf/procio': {
|
|
'content_type': 'download',
|
|
'source': f"https://dl.sublimity.de/telegraf-procio/telegraf-procio-{node.metadata.get('system/architecture')}-latest",
|
|
'mode': '0755',
|
|
},
|
|
'/usr/local/share/telegraf/pressure_stall': {
|
|
'content_type': 'download',
|
|
'source': f"https://dl.sublimity.de/telegraf-pressure-stall/telegraf-pressure-stall-{node.metadata.get('system/architecture')}-latest",
|
|
'mode': '0755',
|
|
},
|
|
}
|
|
|
|
actions = {
|
|
'telegraf-test-config': {
|
|
'command': "sudo -u telegraf bash -c 'telegraf config check --config /etc/telegraf/telegraf.conf --strict-env-handling'",
|
|
'triggered': True,
|
|
'needs': [
|
|
'bundle:sudo',
|
|
'file:/etc/telegraf/telegraf.conf',
|
|
'pkg_apt:telegraf',
|
|
],
|
|
},
|
|
}
|
|
|
|
svc_systemd = {
|
|
'telegraf.service': {
|
|
'needs': ['pkg_apt:telegraf'],
|
|
'preceded_by': {
|
|
'action:telegraf-test-config',
|
|
},
|
|
'needs': {
|
|
'action:telegraf-test-config',
|
|
},
|
|
},
|
|
}
|