diff --git a/bundles/grafana/items.py b/bundles/grafana/items.py new file mode 100644 index 0000000..555a145 --- /dev/null +++ b/bundles/grafana/items.py @@ -0,0 +1,3 @@ +files['/etc/grafana/test'] = { + 'content': repo.libs.ini.dumps({'HALLO': {'was': 'itlos', 'ich': 123}, 'YO': {}}), +} diff --git a/bundles/grafana/metadata.py b/bundles/grafana/metadata.py new file mode 100644 index 0000000..9f30724 --- /dev/null +++ b/bundles/grafana/metadata.py @@ -0,0 +1,29 @@ +defaults = { + 'apt': { + 'packages': { + 'grafana': {}, + }, + 'sources': [ + 'deb https://packages.grafana.com/oss/deb stable main', + ], + }, + 'postgresql': { + 'databases': { + 'grafana': { + 'owner': 'grafana', + }, + }, + 'roles': { + 'grafana': { + 'password': repo.vault.password_for(f'{node.name} postgres role grafana'), + }, + }, + }, + 'zfs': { + 'datasets': { + 'tank/grafana': { + 'mountpoint': '/var/lib/grafana' + }, + }, + }, +} diff --git a/data/apt/keys/packages.grafana.com.asc b/data/apt/keys/packages.grafana.com.asc new file mode 100644 index 0000000..c74f292 --- /dev/null +++ b/data/apt/keys/packages.grafana.com.asc @@ -0,0 +1,30 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQENBFiHXVIBCADr3VDEAGpq9Sg/xrPVu1GGqWGXdbnTbbNKeveCtFHZz7/GSATW +iwiY1skvlAOBiIKCqJEji0rZZgd8WxuhdfugiCBk1hDTMWCpjI0P+YymV77jHjYB +jHrKNlhb+aLjEd9Gf2EtbKUT1fvGUkzlVrcRGSX/XR9MBZlgja7NIyuVbn3uwZQ4 +jflWSNSlvMpohNxTFkrBFTRrCJXhbDLfCS46+so22CP3+1VQyqJ7/6RWK9v9KYdS +AVNgILXMggSrMqha4WA1a/ktczVQXNtP8IuPxTdp9pNYsklOTmrFVeq3mXsvWh9Q +lIhpYHIZlTZ5wVBq4wTRchsXC5MubIhz+ASDABEBAAG0GkdyYWZhbmEgPGluZm9A +Z3JhZmFuYS5jb20+iQE4BBMBAgAiBQJYh11SAhsDBgsJCAcDAgYVCAIJCgsEFgID +AQIeAQIXgAAKCRCMjDTFJAmMthxJB/9Id6JrwqRkJW+eSBb71FGQmRsJvNFR8J+3 +NPVhJNkTFFOM7TnjAMUIv+LYEURqGcceTNAN1aHq/7n/8ybXucCS0CnDYyNYpyVs +tWJ3FOQK3jPrmziDCWPQATqMM/Z2auXVFWrDFqfh2xKZNjuix0w2nyuWB8U0CG2U +89w+ksPJblGGU5xLPPzDQoAqyZXY3gpGGTkCuohMq2RWYbp/QJSQagYhQkKZoJhr +XJlnw4At6R1A5UUPzDw6WJqMRkGrkieE6ApIgf1vZSmnLRpXkqquRTAEyGT8Pugg +ee6YkD19/LK6ED6gn32StY770U9ti560U7oRjrOPK/Kjp4+qBtkQuQENBFiHXVIB +CACz4hO1g/4fKO9QWLcbSWpB75lbNgt1kHXP0UcW8TE0DIgqrifod09lC85adIz0 +zdhs+00lLqckM5wNbp2r+pd5rRaxOsMw2V+c/y1Pt3qZxupmPc5l5lL6jzbEVR9g +ygPaE+iabTk9Np2OZQ7Qv5gIDzivqK2mRHXaHTzoQn2dA/3xpFcxnen9dvu7LCpA +CdScSj9/UIRKk9PHIgr2RJhcjzLx0u1PxN9MEqfIsIJUUgZOoDsr8oCs44PGGIMm +cK1CKALLLiC4ZM58B56jRyXo18MqB6VYsC1X9wkcIs72thL3tThXO70oDGcoXzoo +ywAHBH63EzEyduInOhecDIKlABEBAAGJAR8EGAECAAkFAliHXVICGwwACgkQjIw0 +xSQJjLbWSwf/VIM5wEFBY4QLGUAfqfjDyfGXpcha58Y24Vv3n6MwJqnCIbTAaeWf +30CZ/wHg3NNIMB7I31vgmMOEbHQdv0LPTi9TG205VQeehcpNtZRZQ0D8TIetbxyi +Emmn9osig9U3/7jaAWBabE/9bGx4TF3eLlEH9wmFrNYeXvgRqmyqVoqhIMCNAAOY +REYyHyy9mzr9ywkwl0aroBqhzKIPyFlatZy9oRKllY/CCKO9RJy4DZidLphuwzqU +ymdQ1sqe5nKvwG5GvcncPc3O7LMevDBWnpNNkgERnVxCqpm90TuE3ONbirnU4+/S +tUsVU1DERc1fjOCnAm4pKIlNYphISIE7OQ== +=0pMC +-----END PGP PUBLIC KEY BLOCK----- diff --git a/libs/ini.py b/libs/ini.py new file mode 100644 index 0000000..cd283ee --- /dev/null +++ b/libs/ini.py @@ -0,0 +1,18 @@ +from configparser import ConfigParser + +class Writable(): + data = '' + + def write(self, line): + self.data += line + +def dumps(dict): + config = ConfigParser() + + for section, settings in dict.items(): + config[section] = settings + + writable = Writable() + config.write(writable) + + return writable.data diff --git a/nodes/home.server.py b/nodes/home.server.py index c780923..2b3d1a2 100644 --- a/nodes/home.server.py +++ b/nodes/home.server.py @@ -8,6 +8,7 @@ ], 'bundles': [ 'gitea', + 'grafana', 'influxdb2', 'postgresql', 'wireguard', @@ -27,6 +28,9 @@ 'sha256': '0d11d87ce60d5d98e22fc52f2c8c6ba2b54b14f9c26c767a46bf102c381ad128', 'domain': 'git.sublimity.de', }, + 'grafana': { + 'hostname': 'grafana.sublimity.de', + }, 'influxdb': { 'hostname': 'influxdb.sublimity.de', 'client_token': '!decrypt:encrypt$gAAAAABg25z8fEYjuRkhg4XuYMtJsPO5SaqlexuricXPZAzZ51_iQtPe5v7S503hMFdZ7j-XQUP6Q2y3ovbzhouRYeRZy1W020csOOtBcH08X-ya9cCAOCMnJdujg0MVakxPJhNPa5Ip5XsI4Bjb0EcftNDayQWQsZw1vFHBHllD-ALTisoCdbImD6a1iT4NuT57JGydbWGW',