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',
 | 
						|
                    }
 | 
						|
                },
 | 
						|
            },
 | 
						|
        },
 | 
						|
    }
 |