Commit new Chart releases for TrueCharts

Signed-off-by: TrueCharts-Bot <bot@truecharts.org>
This commit is contained in:
TrueCharts-Bot 2022-11-10 15:10:06 +00:00
parent 697b577cdc
commit d000398138
18 changed files with 4745 additions and 0 deletions

View File

@ -0,0 +1,11 @@
# Changelog
## [netbox-0.0.1]netbox-0.0.1 (2022-11-10)
### Feat
- add netbox ([#4248](https://github.com/truecharts/charts/issues/4248))

View File

@ -0,0 +1,12 @@
dependencies:
- name: common
repository: https://library-charts.truecharts.org
version: 10.9.4
- name: postgresql
repository: https://charts.truecharts.org/
version: 8.0.122
- name: redis
repository: https://charts.truecharts.org
version: 3.0.121
digest: sha256:3d735a35d0b9723ef7c9fab29613f5407c530ac80815a2f5f9d9673ba25da2f6
generated: "2022-11-10T15:07:38.772854797Z"

View File

@ -0,0 +1,35 @@
apiVersion: v2
appVersion: "3.3.6"
dependencies:
- name: common
repository: https://library-charts.truecharts.org
version: 10.9.4
- condition: postgresql.enabled
name: postgresql
repository: https://charts.truecharts.org/
version: 8.0.122
- condition: redis.enabled
name: redis
repository: https://charts.truecharts.org
version: 3.0.121
description: NetBox is the leading solution for modeling and documenting modern networks.
home: https://truecharts.org/docs/charts/incubator/netbox
icon: https://truecharts.org/img/hotlink-ok/chart-icons/netbox.png
keywords:
- network
- netbox
kubeVersion: ">=1.16.0-0"
maintainers:
- email: info@truecharts.org
name: TrueCharts
url: https://truecharts.org
name: netbox
sources:
- https://github.com/truecharts/charts/tree/master/charts/incubator/netbox
- https://github.com/netbox-community/netbox-docker
version: 0.0.1
annotations:
truecharts.org/catagories: |
- network
truecharts.org/SCALE-support: "true"
truecharts.org/grade: U

View File

@ -0,0 +1,108 @@
# netbox
NetBox is the leading solution for modeling and documenting modern networks.
TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE.
This readme is just an automatically generated general guide on installing our Helm Charts and Apps.
For more information, please click here: [netbox](https://truecharts.org/docs/charts/incubator/netbox)
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)**
## Source Code
* <https://github.com/truecharts/charts/tree/master/charts/incubator/netbox>
* <https://github.com/netbox-community/netbox-docker>
## Requirements
Kubernetes: `>=1.16.0-0`
## Dependencies
| Repository | Name | Version |
|------------|------|---------|
| https://charts.truecharts.org/ | postgresql | 8.0.122 |
| https://charts.truecharts.org | redis | 3.0.121 |
| https://library-charts.truecharts.org | common | 10.9.4 |
## Installing the Chart
### TrueNAS SCALE
To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App).
### Helm
To install the chart with the release name `netbox`
```console
helm repo add TrueCharts https://charts.truecharts.org
helm repo update
helm install netbox TrueCharts/netbox
```
## Uninstall
### TrueNAS SCALE
**Upgrading, Rolling Back and Uninstalling the Chart**
To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App).
### Helm
To uninstall the `netbox` deployment
```console
helm uninstall netbox
```
## Configuration
### Helm
#### Available Settings
Read through the values.yaml file. It has several commented out suggested values.
Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/truecharts/library-charts/tree/main/charts/common).
#### Configure using the command line
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
```console
helm install netbox \
--set env.TZ="America/New York" \
TrueCharts/netbox
```
#### Configure using a yaml file
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
```console
helm install netbox TrueCharts/netbox -f values.yaml
```
#### Connecting to other charts
If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide.
## Support
- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ).
- See the [Website](https://truecharts.org)
- Check our [Discord](https://discord.gg/tVsPTHWTtr)
- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
---
## Sponsor TrueCharts
TrueCharts can only exist due to the incredible effort of our staff.
Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can!
---
All Rights Reserved - The TrueCharts Project

View File

@ -0,0 +1,8 @@
NetBox is the leading solution for modeling and documenting modern networks.
This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/incubator/netbox](https://truecharts.org/docs/charts/incubator/netbox)
---
TrueCharts can only exist due to the incredible effort of our staff.
Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can!

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,268 @@
image:
repository: tccr.io/truecharts/netbox
tag: 3.3.6@sha256:4084b61c588dd2f15d117f30017a5c15fd03c3de38ed49e3241c48bce54048d7
pullPolicy: IfNotPresent
securityContext:
readOnlyRootFilesystem: false
runAsNonRoot: false
podSecurityContext:
runAsUser: 0
runAsGroup: 0
probes:
liveness:
type: HTTP
path: /login
readiness:
type: HTTP
path: /login
startup:
type: HTTP
path: /login
# Gives some time for app to run db migrations
initialDelaySeconds: 60
service:
main:
ports:
main:
port: 10265
protocol: HTTP
targetPort: 8080
netbox:
# -- This is a list of valid fully-qualified domain names (FQDNs) for the NetBox server. NetBox will not permit write
# access to the server via any other hostnames. The first FQDN in the list will be treated as the preferred name.
# 127.0.0.1 added automatically
allowed_hosts:
[]
# - netbox.example.com
# - URL schemes that are allowed within links in NetBox
allowed_urls_schemes:
[]
# - file
# - ftp
# -- Specify one or more name and email address tuples representing NetBox administrators. These people will be notified of
# application errors (assuming correct email settings are provided).
admins:
[]
# - name: John Doe
# email: jdoe@example.com
# -- Enable any desired validators for local account passwords below. For a list of included validators, please see the
# Django documentation at https://docs.djangoproject.com/en/stable/topics/auth/passwords/#password-validation.
auth_password_validators:
[]
# - name: django.contrib.auth.password_validation.MinimumLengthValidator
# options:
# - key: min_length
# value: 10
banner:
# -- Optionally display a persistent banner at the top of every page.
top: ""
# -- Optionally display a persistent banner at the bottom of every page.
bottom: ""
# -- Text to include on the login page above the login form. HTML is allowed
login: ""
retention:
# -- Maximum number of days to retain logged changes. Set to 0 to retain changes indefinitely.
changelog: 90
# -- Maximum number of days to retain job results (scripts and reports). Set to 0 to retain job results in the database indefinitely.
job_result: 90
# -- When determining the primary IP address for a device, IPv6 is preferred over IPv4 by default.
prefer_ipv4: false
# -- Enforcement of unique IP space can be toggled on a per-VRF basis. To enforce unique IP space within the global table
enforce_global_unique: true
# - API Cross-Origin Resource Sharing (CORS) settings. If CORS_ORIGIN_ALLOW_ALL is set to True, all origins will be
# - allowed. Otherwise, define a list of allowed origins using either CORS_ORIGIN_WHITELIST or
# - CORS_ORIGIN_REGEX_WHITELIST. For more information, see https://github.com/ottoyiu/django-cors-headers
cors_origin_allow_all: false
cors_origin_whitelist:
[]
# - "127.0.0.1"
cors_origin_regex_whitelist:
[]
# - r'^(https?://)?(\w+\.)?example\.com$'
debug: false
email:
server: ""
port: 587
username: ""
password: ""
use_ssl: false
use_tls: true
timeout: 10
from_email: ""
# -- Exempt certain models from the enforcement of view permissions. Models listed here will be viewable by all users and
# by anonymous users. List models in the form `<app>.<model>`. Add '*' to this list to exempt all models.
exempt_view_permissions:
[]
# - dcim.site
# - dcim.region
# - ipam.prefix
# - HTTP proxies NetBox should use when sending outbound HTTP requests (e.g. for webhooks).
http_proxies:
[]
# - key: http
# url: http://10.10.1.10:3128
# - key: https
# url: http://10.10.1.10:1080
# -- IP addresses recognized as internal to the system. The debugging toolbar will be available only to clients accessing
# NetBox from an internal IP. (127.0.0.1 and ::1) added automatically
internal_ips:
[]
# - "10.10.10.5"
# -- Automatically reset the lifetime of a valid session upon each authenticated request. Enables users to remain
# authenticated to NetBox indefinitely.
login_persistence: false
# -- Setting this to True will permit only authenticated users to access any part of NetBox. By default, anonymous users
# are permitted to access most data in NetBox but not make any changes.
login_required: true
# -- The length of time (in seconds) for which a user will remain logged into the web UI before being prompted to
# re-authenticate. (Default: 1209600 [14 days])
login_timeout: 1209600
# -- Enable GraphQL API.
graphql_enabled: true
# -- Maps provider
maps_url: https://maps.google.com/?q=
# -- An API consumer can request an arbitrary number of objects =by appending the "limit" parameter to the URL (e.g.
# "?limit=1000"). This setting defines the maximum limit. Setting it to 0 or None will allow an API consumer to request
# all objects by specifying "?limit=0".
max_page_size: 1000
# -- Determine how many objects to display per page within a list. (Default: 50)
paginate_count: 50
powerfeed:
# -- The default value for the amperage field when creating new power feeds.
default_amperage: 15
# -- The default value (percentage) for the max_utilization field when creating new power feeds.
default_max_utilization: 80
# -- The default value for the voltage field when creating new power feeds.
default_voltage: 120
# -- Rack elevation size defaults, in pixels. For best results, the ratio of width to height should be roughly 10:1.
rack:
elevation_default_unit_height: 22
elevation_default_unit_width: 220
# -- Credentials that NetBox will uses to authenticate to devices when connecting via NAPALM.
napalm:
username: ""
password: ""
timeout: 30
# -- NAPALM optional arguments (see http://napalm.readthedocs.io/en/latest/support/#optional-arguments).
args:
[]
# - arg: allow_agent
# value: "False"
# -- Cross-Site-Request-Forgery-Attack settings. If Netbox is sitting behind a reverse proxy, you might need to set this
csrf_trusted_origin:
[]
# - https://netbox.mydomain.com
# -- The name to use for the session cookie.
session_cookie_name: sessionid
# -- The name to use for the csrf token cookie.
csrf_cookie_name: csrftoken
# -- By default uploaded media is stored on the local filesystem. Using Django-storages is also supported. Provide the
# class path of the storage driver in storage_backend and any configuration options in storage_config. For example:
# Example storages.backends.s3boto3.S3Boto3Storage
storage_backend: ""
storage_config:
[]
# - key: AWS_ACCESS_KEY_ID
# value: KeyID
# - key: AWS_SECRET_ACCESS_KEY
# value: Secret
# - key: AWS_STORAGE_BUCKET_NAME
# value: netbox
# - key: AWS_S3_REGION_NAME
# value: eu-west-1
# -- Plugins configuration settings. These settings are used by various plugins that the user may have installed.
plugin_config:
# - plugin_name: plugin1
# enabled: false
# config:
# - key: foo
# value: bar
# - key: fizz
# value: bizz
# -- Maximum execution time for background tasks, in seconds.
rq_default_timeout: 300
# -- Remote authentication support
remote_auth:
{}
# enabled: false
# backend: netbox.authentication.RemoteUserBackend
# header: header
# auto_create_user: false
# default_groups: []
# default_permissions:
# - key: dcim.change_site
# value: None
# -- Date/time formatting. See the following link for supported formats:
# https://docs.djangoproject.com/en/stable/ref/templates/builtins/#date
date_time:
date_format: N j, Y
short_date_format: Y-m-d
time_format: g:i a
short_time_format: H:i:s
date_time_format: N j, Y g:i a
short_date_time_format: Y-m-d H:i
metrics:
# -- Enable and configure a Prometheus serviceMonitor for the chart under this key.
# @default -- See values.yaml
enabled: false
serviceMonitor:
interval: 1m
scrapeTimeout: 30s
labels: {}
# -- Enable and configure Prometheus Rules for the chart under this key.
# @default -- See values.yaml
prometheusRule:
enabled: false
labels: {}
# -- Configure additionial rules for the chart under this key.
# @default -- See prometheusrules.yaml
rules:
[]
# - alert: UnifiPollerAbsent
# annotations:
# description: Unifi Poller has disappeared from Prometheus service discovery.
# summary: Unifi Poller is down.
# expr: |
# absent(up{job=~".*unifi-poller.*"} == 1)
# for: 5m
# labels:
# severity: critical
persistence:
config:
enabled: true
mountPath: /etc/netbox/config
reports:
enabled: true
mountPath: /etc/netbox/reports
scripts:
enabled: true
mountPath: /etc/netbox/scripts
media:
enabled: true
mountPath: /opt/netbox/netbox/media
configfile:
enabled: true
type: secret
objectName: '{{ include "tc.common.names.fullname" . }}-secret'
mountPath: /etc/netbox/config/01-config.py
subPath: config.py
postgresql:
enabled: true
existingSecret: dbcreds
postgresqlUsername: netbox
postgresqlDatabase: netbox
redis:
enabled: true
existingSecret: rediscreds
portal:
enabled: true

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,33 @@
{{/* Define the housekeeper container */}}
{{- define "netbox.housekeeper" -}}
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
runAsUser: {{ .Values.podSecurityContext.runAsUser }}
runAsGroup: {{ .Values.podSecurityContext.runAsGroup }}
readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilesystem }}
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
command:
- /bin/bash
- -c
- |
echo "Starting housekeeper..."
until $(curl --output /dev/null --silent --head --fail http://127.0.0.1:8080/login); do
echo "Housekeeper: Waiting for the main netbox container..."
sleep 5
done
/opt/netbox/housekeeping.sh
echo "Housekeeper finished, exiting..."
volumeMounts:
- name: config
mountPath: /etc/netbox/config
- name: reports
mountPath: /etc/netbox/reports
- name: scripts
mountPath: /etc/netbox/scritps
- name: media
mountPath: /opt/netbox/netbox/media
- name: configfile
mountPath: /etc/netbox/config/01-config.py
subPath: config.py
{{- end -}}

View File

@ -0,0 +1,376 @@
{{/* Define the secret */}}
{{- define "netbox.secret" -}}
{{- $secretName := printf "%s-secret" (include "tc.common.names.fullname" .) }}
{{- $secret_key := "" }}
{{- with (lookup "v1" "Secret" .Release.Namespace $secretName) }}
{{- $secret_key = (index .data "secret_key") }}
{{- else }}
{{- $secret_key = randAlphaNum 64 }}
{{- end }}
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: {{ $secretName }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
data:
secret_key: {{ $secret_key | b64enc }}
stringData:
config.py: |
ALLOWED_HOSTS = [
'127.0.0.1',
'::1',
{{- range .Values.netbox.allowed_hosts }}
{{ . | squote }},
{{- end }}
]
DATABASE = {
'NAME': '{{ .Values.postgresql.postgresqlDatabase }}',
'USER': '{{ .Values.postgresql.postgresqlUsername }}',
'PASSWORD': '{{ .Values.postgresql.postgresqlPassword | trimAll "\"" }}',
'HOST': '{{ printf "%v-%v" .Release.Name "postgresql" }}',
'PORT': '5432',
'CONN_MAX_AGE': 300,
}
REDIS = {
'tasks': {
'HOST': '{{ printf "%v-%v" .Release.Name "redis" }}',
'PORT': 6379,
'PASSWORD': '{{ .Values.redis.redisPassword | trimAll "\"" }}',
'DATABASE': 0,
'SSL': False,
},
'caching': {
'HOST': '{{ printf "%v-%v" .Release.Name "redis" }}',
'PORT': 6379,
'PASSWORD': '{{ .Values.redis.redisPassword | trimAll "\"" }}',
'DATABASE': 1,
'SSL': False,
}
}
SECRET_KEY = '{{ $secret_key }}'
{{- with .Values.netbox.admins }}
ADMINS = [
{{- range . }}
({{ .name | squote }},{{ .email | squote }}),
{{- end }}
]
{{- end }}
{{- with .Values.netbox.allowed_urls_schemes}}
ALLOWED_URL_SCHEMES = [
{{- range . }}
{{ . | squote }},
{{- end }}
]
{{- end }}
{{- with .Values.netbox.auth_password_validators }}
AUTH_PASSWORD_VALIDATORS = [
{{- range . }}
{
'NAME': {{ .name | squote }},
'OPTIONS': {
{{- range .options }}
{{ .key | squote }}: {{ .value }},
{{- end }}
}
},
{{- end }}
]
{{- end }}
{{- with .Values.netbox.banner.top }}
BANNER_TOP = {{ . | squote }}
{{- end }}
{{- with .Values.netbox.banner.bottom }}
BANNER_BOTTOM = {{ . | squote }}
{{- end }}
{{- with .Values.netbox.banner.login }}
BANNER_LOGIN = {{ . | squote }}
{{- end }}
{{- if or .Values.netbox.retention.changelog (eq (int .Values.netbox.retention.changelog) 0) }}
CHANGELOG_RETENTION = {{ .Values.netbox.retention.changelog }}
{{- end }}
{{- if or .Values.netbox.retention.job_result (eq (int .Values.netbox.retention.job_result) 0) }}
JOBRESULT_RETENTION = {{ .Values.netbox.retention.job_result }}
{{- end }}
PREFER_IPV4 = {{ ternary "True" "False" .Values.netbox.prefer_ipv4 }}
ENFORCE_GLOBAL_UNIQUE = {{ ternary "True" "False" .Values.netbox.enforce_global_unique }}
GRAPHQL_ENABLED = {{ ternary "True" "False" .Values.netbox.graphql_enabled }}
{{- with .Values.netbox.maps_url }}
MAPS_URL = {{ . | squote }}
{{- end }}
{{- if or .Values.netbox.max_page_size (eq (int .Values.netbox.max_page_size) 0) }}
MAX_PAGE_SIZE = {{ .Values.netbox.max_page_size }}
{{- end }}
{{- if or .Values.netbox.paginate_count (eq (int .Values.netbox.paginate_count) 0) }}
PAGINATE_COUNT = {{ .Values.netbox.paginate_count }}
{{- end }}
{{- with .Values.netbox.powerfeed.default_amperage }}
POWERFEED_DEFAULT_AMPERAGE = {{ . }}
{{- end }}
{{- with .Values.netbox.powerfeed.default_max_utilization }}
POWERFEED_DEFAULT_MAX_UTILIZATION = {{ . }}
{{- end }}
{{- with .Values.netbox.powerfeed.default_voltage }}
POWERFEED_DEFAULT_VOLTAGE = {{ . }}
{{- end }}
{{- with .Values.netbox.rack.elevation_default_unit_height }}
RACK_ELEVATION_DEFAULT_UNIT_HEIGHT = {{ . }}
{{- end }}
{{- with .Values.netbox.rack.elevation_default_unit_width }}
RACK_ELEVATION_DEFAULT_UNIT_WIDTH = {{ . }}
{{- end }}
{{- with .Values.netbox.napalm.username }}
NAPALM_USERNAME = {{ . | squote }}
{{- end }}
{{- with .Values.netbox.napalm.password }}
NAPALM_PASSWORD = {{ . | squote }}
{{- end }}
{{- with .Values.netbox.napalm.timeout }}
NAPALM_TIMEOUT = {{ . }}
{{- end }}
{{- with .Values.netbox.napalm.args }}
NAPALM_ARGS = {
{{- range . }}
{{ .arg | squote }}: {{ .value | squote }},
{{- end }}
}
{{- end }}
{{- with .Values.netbox.csrf_trusted_origin }}
CSRF_TRUSTED_ORIGINS = [
{{ . | squote }},
]
{{- end }}
{{- with .Values.netbox.csrf_cookie_name }}
CSRF_COOKIE_NAME = {{ . | squote }}
{{- end }}
CORS_ORIGIN_ALLOW_ALL = {{ ternary "True" "False" .Values.netbox.cors_origin_allow_all }}
{{- with .Values.netbox.cors_origin_whitelist }}
CORS_ORIGIN_WHITELIST = [
{{- range . }}
{{ . | squote }},
{{- end }}
]
{{- end }}
{{- with .Values.netbox.cors_origin_regex_whitelist }}
CORS_ORIGIN_REGEX_WHITELIST = [
{{- range . }}
{{ . }},
{{- end }}
]
{{- end }}
DEBUG = {{ ternary "True" "False" .Values.netbox.debug }}
{{- if .Values.netbox.email }}
{{- if .Values.netbox.email.server }}
EMAIL = {
{{- with .Values.netbox.email.server }}
'SERVER': {{ . | squote }},
{{- end }}
{{- with .Values.netbox.email.port }}
'PORT': {{ . }},
{{- end }}
{{- with .Values.netbox.email.username }}
'USERNAME': {{ . | squote }},
{{- end }}
{{- with .Values.netbox.email.password }}
'PASSWORD': {{ . | squote }},
{{- end }}
'USE_SSL': {{ ternary "True" "False" .Values.netbox.email.use_ssl }},
'USE_TLS': {{ ternary "True" "False" .Values.netbox.email.use_tls }},
{{- with .Values.netbox.email.timeout }}
'TIMEOUT': {{ . }},
{{- end }}
{{- with .Values.netbox.email.from_email }}
'FROM_EMAIL': {{ . | squote }},
{{- end }}
}
{{- end }}
{{- end }}
{{- with .Values.netbox.exempt_view_permissions }}
EXEMPT_VIEW_PERMISSIONS = [
{{- range . }}
{{ . | squote }},
{{- end }}
]
{{- end }}
{{- with .Values.netbox.http_proxies }}
HTTP_PROXIES = {
{{- range . }}
{{ .key | squote }}: {{ .url | squote }},
{{- end }}
}
{{- end }}
{{- with .Values.netbox.internal_ips }}
INTERNAL_IPS = (
'127.0.0.1',
'::1',
{{- range . }}
{{ . | squote }},
{{- end }}
)
{{- end }}
LOGIN_PERSISTENCE = {{ ternary "True" "False" .Values.netbox.login_persistence }}
LOGIN_REQUIRED = {{ ternary "True" "False" .Values.netbox.login_required }}
{{- with .Values.netbox.login_timeout }}
LOGIN_TIMEOUT = {{ . }}
{{- end }}
METRICS_ENABLED = {{ ternary "True" "False" .Values.metrics.enabled }}
TIME_ZONE = {{ .Values.TZ | squote }}
MEDIA_ROOT = '/opt/netbox/netbox/media'
REPORTS_ROOT = '/opt/netbox/netbox/reports'
SCRIPTS_ROOT = '/opt/netbox/netbox/scripts'
{{- with .Values.netbox.storage_backend }}
STORAGE_BACKEND = {{ . | squote }}
{{- end }}
{{- with .Values.netbox.storage_config }}
STORAGE_CONFIG = {
{{- range . }}
{{ .key | squote }}: {{ .value | squote }},
{{- end }}
}
{{- end }}
{{- $enabled_plugins := list -}}
{{- with .Values.netbox.plugin_config -}}
{{- range . -}}
{{- if .enabled -}}
{{- $enabled_plugins = append $enabled_plugins .plugin_name -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- with $enabled_plugins }}
PLUGINS = [
{{- range . }}
{{ . | squote }},
{{- end }}
]
{{- end }}
{{/*
TODO: Consider template plugins here, so it's easier to config on UI
https://github.com/netbox-community/netbox/wiki/Plugins
*/}}
{{- with .Values.netbox.plugin_config }}
PLUGINS_CONFIG = {
{{- range . }}
{{- if .enabled }}
{{ .plugin_name | squote }}: {
{{- range .config }}
{{ .key | squote }}: {{ .value | squote }},
{{- end }}
}
{{- end }}
{{- end }}
}
{{- end }}
{{- with .Values.netbox.rq_default_timeout }}
RQ_DEFAULT_TIMEOUT = {{ . }}
{{- end }}
{{- with .Values.netbox.session_cookie_name }}
SESSION_COOKIE_NAME = {{ . | squote }}
{{- end }}
RELEASE_CHECK_URL = 'https://api.github.com/repos/netbox-community/netbox/releases'
{{- with .Values.netbox.remote_auth }}
{{- if .enabled }}
REMOTE_AUTH_ENABLED = True
{{- with .backend }}
REMOTE_AUTH_BACKEND = {{ . | squote }}
{{- end }}
{{- with .header }}
REMOTE_AUTH_HEADER = {{ . | squote }}
{{- end }}
REMOTE_AUTH_AUTO_CREATE_USER = {{ ternary "True" "False" .auto_create_user }}
{{- with .default_groups }}
REMOTE_AUTH_DEFAULT_GROUPS = [
{{- range . }}
{{ . | squote }},
{{- end }}
]
{{- end }}
{{- with .default_permissions }}
REMOTE_AUTH_DEFAULT_PERMISSIONS = {
{{- range . }}
{{ .key | squote }}: {{ if eq .value "None" }}{{ .value }}{{ else }}{{ .value | squote }}{{ end }},
{{- end }}
}
{{- end }}
{{- end }}
{{- end }}
SESSION_FILE_PATH = None
{{- with .Values.netbox.date_time }}
{{- with .date_format }}
DATE_FORMAT = {{ . | squote }}
{{- end }}
{{- with .short_date_format }}
SHORT_DATE_FORMAT = {{ . | squote }}
{{- end }}
{{- with .time_format }}
TIME_FORMAT = {{ . | squote }}
{{- end }}
{{- with .shot_time_format }}
SHORT_TIME_FORMAT = {{ . | squote }}
{{- end }}
{{- with .date_time_format }}
DATETIME_FORMAT = {{ . | squote }}
{{- end }}
{{- with .short_date_time_format }}
SHORT_DATETIME_FORMAT = {{ . | squote }}
{{- end }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,56 @@
{{/* Define the worker container */}}
{{- define "netbox.worker" -}}
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
runAsUser: {{ .Values.podSecurityContext.runAsUser }}
runAsGroup: {{ .Values.podSecurityContext.runAsGroup }}
readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilesystem }}
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
command:
- /bin/bash
- -c
- |
echo "Starting worker...."
until $(curl --output /dev/null --silent --head --fail http://127.0.0.1:8080/login); do
echo "Worker: Waiting for the main netbox container..."
sleep 5
done
/opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py rqworker
volumeMounts:
- name: config
mountPath: /etc/netbox/config
- name: reports
mountPath: /etc/netbox/reports
- name: scripts
mountPath: /etc/netbox/scritps
- name: media
mountPath: /opt/netbox/netbox/media
- name: configfile
mountPath: /etc/netbox/config/01-config.py
subPath: config.py
{{/*readinessProbe:
exec:
command:
- TODO: find a healthcheck
initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
livenessProbe:
exec:
command:
- TODO: find a healthcheck
initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }}
startupProbe:
exec:
command:
- TODO: find a healthcheck
initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }}
timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }}
periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }}
failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }}*/}}
{{- end -}}

View File

@ -0,0 +1,16 @@
{{/* Make sure all variables are set properly */}}
{{- include "tc.common.loader.init" . }}
{{- include "netbox.secret" . }}
{{- $_ := set .Values.additionalContainers "worker" (include "netbox.worker" . | fromYaml) -}}
{{- $_ := set .Values.additionalContainers "housekeeper" (include "netbox.housekeeper" . | fromYaml) -}}
{{- if .Values.metrics.enabled -}}
{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}}
{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}}
{{- $_ := set .Values.podAnnotations "prometheus.io/port" (.Values.service.main.ports.main.targetPort | toString) -}}
{{- end -}}
{{/* Render the templates */}}
{{ include "tc.common.loader.apply" . }}

View File

@ -0,0 +1,18 @@
{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: {{ include "tc.common.names.fullname" . }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
{{- with .Values.metrics.prometheusRule.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
groups:
- name: {{ include "tc.common.names.fullname" . }}
rules:
{{- with .Values.metrics.prometheusRule.rules }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,24 @@
{{- if .Values.metrics.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "tc.common.names.fullname" . }}
labels:
{{- include "tc.common.labels" . | nindent 4 }}
{{- with .Values.metrics.serviceMonitor.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
selector:
matchLabels:
{{- include "tc.common.labels.selectorLabels" . | nindent 6 }}
endpoints:
- port: http
{{- with .Values.metrics.serviceMonitor.interval }}
interval: {{ . }}
{{- end }}
{{- with .Values.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ . }}
{{- end }}
path: /metrics
{{- end }}

View File

View File

@ -0,0 +1,4 @@
icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/netbox.png
categories:
- network