101 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from ipaddress import ip_interface
 | |
| 
 | |
| defaults = {
 | |
|     'apt': {
 | |
|         'packages': {
 | |
|             'influxdb2': {},
 | |
|             'influxdb2-cli': {},
 | |
|         },
 | |
|         'sources': {
 | |
|             'influxdata': {
 | |
|                 'urls': {
 | |
|                     'https://repos.influxdata.com/debian',
 | |
|                 },
 | |
|                 'suites': {
 | |
|                     'stable',
 | |
|                 },
 | |
|                 'components': {
 | |
|                     'main',
 | |
|                 },
 | |
|             },
 | |
|         },
 | |
|     },
 | |
|     'nftables': {
 | |
|         'input': {
 | |
|             'tcp dport 8200 accept',
 | |
|         },
 | |
|     },
 | |
|     'influxdb': {
 | |
|         'port': '8200',
 | |
|         'username': 'admin',
 | |
|         'org': 'default',
 | |
|         'bucket': 'default',
 | |
|         'config': {
 | |
|             'bolt-path': '/var/lib/influxdb/influxd.bolt',
 | |
|             'engine-path': '/var/lib/influxdb/engine',
 | |
|             'reporting-disabled': True,
 | |
|             'http-bind-address': ':8200',
 | |
|         },
 | |
|     },
 | |
| }
 | |
| 
 | |
| @metadata_reactor.provides(
 | |
|     'influxdb/password',
 | |
|     'influxdb/admin_token',
 | |
| )
 | |
| def admin_password(metadata):
 | |
|     return {
 | |
|         'influxdb': {
 | |
|             'password': repo.vault.password_for(f"{metadata.get('id')} influxdb admin"),
 | |
|             'admin_token': repo.vault.random_bytes_as_base64_for(f"{metadata.get('id')} influxdb default token", length=64),
 | |
|         },
 | |
|     }
 | |
| 
 | |
| 
 | |
| @metadata_reactor.provides(
 | |
|     'zfs/datasets',
 | |
| )
 | |
| def zfs(metadata):
 | |
|     if not node.has_bundle('zfs'):
 | |
|         return {}
 | |
| 
 | |
|     return {
 | |
|         'zfs': {
 | |
|             'datasets': {
 | |
|                 'tank/influxdb': {
 | |
|                     'mountpoint': '/var/lib/influxdb',
 | |
|                     'recordsize': '8192',
 | |
|                     'atime': 'off',
 | |
|                 },
 | |
|             },
 | |
|         },
 | |
|     }
 | |
| 
 | |
| 
 | |
| @metadata_reactor.provides(
 | |
|     'dns',
 | |
| )
 | |
| def dns(metadata):
 | |
|     return {
 | |
|         'dns': {
 | |
|             metadata.get('influxdb/hostname'): repo.libs.ip.get_a_records(metadata),
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
| @metadata_reactor.provides(
 | |
|     'nginx/vhosts',
 | |
| )
 | |
| def nginx(metadata):
 | |
|     return {
 | |
|         'nginx': {
 | |
|             'vhosts': {
 | |
|                 metadata.get('influxdb/hostname'): {
 | |
|                     'content': 'nginx/proxy_pass.conf',
 | |
|                     'context': {
 | |
|                         'target': 'http://127.0.0.1:8200',
 | |
|                     }
 | |
|                 },
 | |
|             },
 | |
|         },
 | |
|     }
 |