77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
from tomlkit import dumps
|
|
from shlex import quote
|
|
|
|
directories['/var/lib/influxdb'] = {
|
|
'owner': 'influxdb',
|
|
'group': 'influxdb',
|
|
'needs': [
|
|
'zfs_dataset:tank/influxdb',
|
|
],
|
|
}
|
|
|
|
directories['/etc/influxdb'] = {
|
|
'purge': True,
|
|
}
|
|
files['/etc/influxdb/config.toml'] = {
|
|
'content': dumps(node.metadata.get('influxdb/config')),
|
|
'triggers': [
|
|
'svc_systemd:influxdb:restart',
|
|
]
|
|
}
|
|
|
|
svc_systemd['influxdb'] = {
|
|
'needs': [
|
|
'directory:/var/lib/influxdb',
|
|
'file:/etc/influxdb/config.toml',
|
|
'pkg_apt:influxdb2',
|
|
]
|
|
}
|
|
|
|
actions['wait_for_influxdb_start'] = {
|
|
'command': 'sleep 15',
|
|
'triggered': True,
|
|
'triggered_by': [
|
|
'svc_systemd:influxdb',
|
|
'svc_systemd:influxdb:restart',
|
|
]
|
|
}
|
|
|
|
actions['setup_influxdb'] = {
|
|
'command': 'influx setup --username={username} --password={password} --org={org} --bucket={bucket} --token={token} --retention=0 --force'.format(
|
|
username=node.metadata.get('influxdb/username'),
|
|
password=quote(str(node.metadata.get('influxdb/password'))),
|
|
org=node.metadata.get('influxdb/org'),
|
|
bucket=node.metadata.get('influxdb/bucket'),
|
|
token=str(node.metadata.get('influxdb/admin_token')),
|
|
),
|
|
'unless': 'influx bucket list',
|
|
'needs': [
|
|
'action:wait_for_influxdb_start',
|
|
],
|
|
}
|
|
|
|
files['/root/.influxdbv2/configs'] = {
|
|
'content': dumps({
|
|
node.metadata.get('influxdb/bucket'): {
|
|
'url': f"http://localhost:{node.metadata.get('influxdb/port')}",
|
|
'token': str(node.metadata.get('influxdb/admin_token')),
|
|
'org': node.metadata.get('influxdb/org'),
|
|
'active': True,
|
|
},
|
|
}),
|
|
'needs': [
|
|
'action:setup_influxdb',
|
|
],
|
|
}
|
|
|
|
for description, permissions in {
|
|
'readonly': '--read-buckets',
|
|
'writeonly': '--write-buckets --read-telegrafs',
|
|
}.items():
|
|
actions[f'influxdb_{description}_token'] = {
|
|
'command': f'influx auth create --description {description} {permissions}',
|
|
'unless': f'''influx auth list --json | jq -r '.[] | select (.description == "{description}") | .token' | wc -l | grep -q ^1$''',
|
|
'needs': [
|
|
'file:/root/.influxdbv2/configs',
|
|
],
|
|
}
|