Commit new Chart releases for TrueCharts
Signed-off-by: TrueCharts-Bot <bot@truecharts.org>
This commit is contained in:
parent
697b577cdc
commit
d000398138
|
@ -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))
|
||||
|
||||
|
|
@ -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"
|
|
@ -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
|
|
@ -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
|
|
@ -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.
|
@ -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
|
@ -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 -}}
|
|
@ -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 }}
|
|
@ -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 -}}
|
|
@ -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" . }}
|
|
@ -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 }}
|
|
@ -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 }}
|
|
@ -0,0 +1,4 @@
|
|||
icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/netbox.png
|
||||
categories:
|
||||
- network
|
||||
|
Loading…
Reference in New Issue