115 lines
3.1 KiB
Python
115 lines
3.1 KiB
Python
defaults = {
|
|
'apt': {
|
|
'packages': {
|
|
'build-essential': {},
|
|
'graphviz': {},
|
|
'libffi-dev': {},
|
|
'libldap2-dev': {},
|
|
'libpq-dev': {},
|
|
'libsasl2-dev': {},
|
|
'libssl-dev': {},
|
|
'libxml2-dev': {},
|
|
'libxslt1-dev': {},
|
|
'python3-dev': {},
|
|
'zlib1g-dev': {},
|
|
},
|
|
},
|
|
'backups': {
|
|
'paths': {
|
|
'/opt/netbox/media',
|
|
'/opt/netbox/scripts',
|
|
# and database
|
|
},
|
|
},
|
|
'cron': {
|
|
'jobs': {
|
|
'netbox': '{m} {h} * * * netbox /opt/netbox/venv/bin/python /opt/netbox/src/netbox/manage.py housekeeping'.format(
|
|
m=node.magic_number%60,
|
|
h=node.magic_number%4,
|
|
),
|
|
},
|
|
},
|
|
'postgresql': {
|
|
'databases': {
|
|
'netbox': {
|
|
'owner': 'netbox',
|
|
},
|
|
},
|
|
'roles': {
|
|
'netbox': {
|
|
'password': repo.vault.password_for('netbox postgresql ' + node.name),
|
|
},
|
|
},
|
|
},
|
|
'zfs': {
|
|
'datasets': {
|
|
'tank/netbox': {},
|
|
'tank/netbox/install': {
|
|
'mountpoint': '/opt/netbox/src',
|
|
'needed_by': {
|
|
'directory:/opt/netbox/src',
|
|
},
|
|
},
|
|
'tank/netbox/media': {
|
|
'mountpoint': '/opt/netbox/media',
|
|
'needed_by': {
|
|
'directory:/opt/netbox/media',
|
|
},
|
|
},
|
|
'tank/netbox/scripts': {
|
|
'mountpoint': '/opt/netbox/scripts',
|
|
'needed_by': {
|
|
'directory:/opt/netbox/scripts',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'icinga2_api/netbox/services/NETBOX UPDATE',
|
|
)
|
|
def icinga_check_for_new_release(metadata):
|
|
return {
|
|
'icinga2_api': {
|
|
'netbox': {
|
|
'services': {
|
|
'NETBOX UPDATE': {
|
|
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release netbox-community/netbox {}'.format(metadata.get('netbox/version')),
|
|
'vars.notification.mail': True,
|
|
'check_interval': '60m',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'nginx/vhosts/netbox',
|
|
)
|
|
def nginx(metadata):
|
|
if not node.has_bundle('nginx'):
|
|
raise DoNotRunAgain
|
|
|
|
return {
|
|
'nginx': {
|
|
'vhosts': {
|
|
'netbox': {
|
|
'domain': metadata.get('netbox/domain'),
|
|
'website_check_path': '/',
|
|
'website_check_string': 'NetBox',
|
|
'locations': {
|
|
'/': {
|
|
'target': 'http://127.0.0.1:22080',
|
|
},
|
|
'/static/': {
|
|
'alias': '/opt/netbox/src/netbox/static/',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|