Skip to content

Commit 18f46a3

Browse files
authored
Merge pull request #67 from lae/feature/netbox-2.7
NetBox 2.7 release preparation
2 parents 305d941 + 63ce7f5 commit 18f46a3

File tree

9 files changed

+88
-69
lines changed

9 files changed

+88
-69
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
.vscode/
33
.history
44
*.retry
5+
*.code-workspace

README.adoc

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
:role-name: netbox
33
:role: {role-author}.{role-name}
44
:gh-name: {role-author}/ansible-role-{role-name}
5-
:netbox-version: 2.6.12
5+
:netbox-version: 2.7.9
66
= {role}
77
:toc:
88
:toc-placement: preamble
@@ -162,11 +162,18 @@ netbox_redis_host: 127.0.0.1
162162
netbox_redis_port: 6379
163163
netbox_redis_password: ''
164164
netbox_redis_database: 0
165-
netbox_redis_cache_database: 1
166165
netbox_redis_default_timeout: 300
166+
netbox_redis_ssl_enabled: false
167+
168+
netbox_redis_cache_host: "{{ netbox_redis_host }}"
169+
netbox_redis_cache_port: "{{ netbox_redis_port }}"
170+
netbox_redis_cache_database: 1
171+
netbox_redis_cache_password: "{{ netbox_redis_password }}"
172+
netbox_redis_cache_default_timeout: "{{ netbox_redis_default_timeout }}"
173+
netbox_redis_cache_ssl_enabled: "{{ netbox_redis_ssl_enabled }}"
167174
----
168175

169-
This populates the `REDIS` config dictionary in `configuration.py`.
176+
This populates the `REDIS` config dictionary in `configuration.py`. Utilize the second set of variables if you wish to seperate your cache database from your webhooks database.
170177

171178
[source,yaml]
172179
----
@@ -308,11 +315,6 @@ define `NAPALM_USERNAME` and `NAPALM_PASSWORD` in the `netbox_config` variable
308315
to be able to use NAPALM. Add extra NAPALM python libraries by listing them in
309316
`netbox_napalm_packages` (e.g. `napalm-eos`).
310317

311-
[source,yaml]
312-
netbox_webhooks_enabled: false
313-
314-
Toggle `netbox_webhooks_enabled` to `true` to enable webhooks for NetBox.
315-
316318
[source,yaml]
317319
netbox_metrics_enabled: true
318320

defaults/main.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
# defaults file for lae.netbox
33
netbox_stable: false
4-
netbox_stable_version: 2.6.12
4+
netbox_stable_version: 2.7.9
55
netbox_stable_uri: "https://github.com/digitalocean/netbox/archive/v{{ netbox_stable_version }}.tar.gz"
66

77
netbox_git: false
8-
netbox_git_version: v2.6.12
8+
netbox_git_version: develop
99
netbox_git_uri: "https://github.com/digitalocean/netbox.git"
1010

1111
netbox_install_epel: true
@@ -26,11 +26,15 @@ netbox_redis_host: 127.0.0.1
2626
netbox_redis_port: 6379
2727
netbox_redis_password: ''
2828
netbox_redis_database: 0
29-
netbox_redis_cache_database: 1
3029
netbox_redis_default_timeout: 300
3130
netbox_redis_ssl_enabled: false
3231

33-
netbox_webhooks_enabled: false
32+
netbox_redis_cache_host: "{{ netbox_redis_host }}"
33+
netbox_redis_cache_port: "{{ netbox_redis_port }}"
34+
netbox_redis_cache_database: 1
35+
netbox_redis_cache_password: "{{ netbox_redis_password }}"
36+
netbox_redis_cache_default_timeout: "{{ netbox_redis_default_timeout }}"
37+
netbox_redis_cache_ssl_enabled: "{{ netbox_redis_ssl_enabled }}"
3438

3539
netbox_metrics_enabled: false
3640
netbox_metrics_dir: netbox_metrics

tasks/deploy_netbox.yml

Lines changed: 19 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,18 @@
3838
register: _netbox_virtualenv_setup
3939
until: _netbox_virtualenv_setup is succeeded
4040

41-
- name: Install django-rq if webhooks enabled
41+
- name: Install selected optional Python dependencies
4242
pip:
43-
name: "django-rq"
43+
name: "{{ item }}"
44+
state: present
4445
virtualenv: "{{ netbox_virtualenv_path }}"
4546
become: True
4647
become_user: "{{ netbox_user }}"
47-
when:
48-
- netbox_webhooks_enabled
4948
retries: 2
50-
register: _netbox_django_rq_install
51-
until: _netbox_django_rq_install is succeeded
49+
register: _netbox_pip_additional_install
50+
until: _netbox_pip_additional_install is succeeded
51+
when: (_netbox_python_deps | length) > 0
52+
loop: "{{ _netbox_python_deps }}"
5253

5354
- name: Generate NetBox configuration file
5455
template:
@@ -63,44 +64,21 @@
6364
notify:
6465
- reload netbox.service
6566

66-
- block:
67-
- name: Install django-auth-ldap if LDAP is enabled
68-
pip:
69-
name: django-auth-ldap
70-
virtualenv: "{{ netbox_virtualenv_path }}"
71-
become: True
72-
become_user: "{{ netbox_user }}"
73-
retries: 2
74-
register: _netbox_django_auth_ldap_install
75-
until: _netbox_django_auth_ldap_install is succeeded
76-
77-
- name: Generate LDAP configuration for NetBox if enabled
78-
template:
79-
src: "{{ netbox_ldap_config_template }}"
80-
dest: "{{ netbox_shared_path }}/ldap_config.py"
81-
owner: "{{ netbox_user }}"
82-
group: "{{ netbox_group }}"
83-
mode: 0640
84-
validate: "{{ netbox_virtualenv_path }}/bin/python -c \"import py_compile,os; f=r'%s';\
85-
c='/tmp/' + os.path.basename(os.path.dirname(f)) + '-' + os.path.basename(f) + 'c';\
86-
py_compile.compile(f, c); os.remove(c)\""
87-
notify:
88-
- reload netbox.service
67+
- name: Generate LDAP configuration for NetBox if enabled
68+
template:
69+
src: "{{ netbox_ldap_config_template }}"
70+
dest: "{{ netbox_shared_path }}/ldap_config.py"
71+
owner: "{{ netbox_user }}"
72+
group: "{{ netbox_group }}"
73+
mode: 0640
74+
validate: "{{ netbox_virtualenv_path }}/bin/python -c \"import py_compile,os; f=r'%s';\
75+
c='/tmp/' + os.path.basename(os.path.dirname(f)) + '-' + os.path.basename(f) + 'c';\
76+
py_compile.compile(f, c); os.remove(c)\""
77+
notify:
78+
- reload netbox.service
8979
when:
9080
- netbox_ldap_enabled
9181

92-
- name: Install napalm if NAPALM integration is enabled
93-
pip:
94-
name: "{{ netbox_napalm_packages }}"
95-
virtualenv: "{{ netbox_virtualenv_path }}"
96-
when:
97-
- netbox_napalm_enabled
98-
become: True
99-
become_user: "{{ netbox_user }}"
100-
retries: 2
101-
register: _netbox_napalm_install
102-
until: _netbox_napalm_install is succeeded
103-
10482
- name: Symlink NetBox configuration file into the active NetBox release
10583
file:
10684
src: "{{ netbox_shared_path }}/configuration.py"

tasks/load_variables.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@
2727
netbox_ldap_packages: "{{ _netbox_ldap_packages | list }}"
2828
when: netbox_ldap_packages is not defined
2929

30+
- name: Generate list of optional Python dependencies
31+
set_fact:
32+
_netbox_python_deps:
33+
- "{{ netbox_napalm_packages if netbox_napalm_enabled else [] }}"
34+
- "{{ 'django-auth-ldap' if netbox_ldap_enabled else [] }}"
35+
- "{{ 'django-storages' if _netbox_storages_module is defined else [] }}"
36+
- "{{ _netbox_storages_map[_netbox_storages_module] if _netbox_storages_module is defined else [] }}"
37+
38+
- name: Flatten that list of dependencies
39+
set_fact:
40+
_netbox_python_deps: "{{ _netbox_python_deps | flatten }}"
41+
3042
- name: Identify current execution PATH
3143
shell: "echo $PATH"
3244
register: _path_exec

tasks/main.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,6 @@
8585
dest: /lib/systemd/system/netbox-rqworker.service
8686
notify:
8787
- restart netbox-rqworker.service
88-
when:
89-
- netbox_webhooks_enabled
9088

9189
- name: Start and enable NetBox' socket and service
9290
systemd:
@@ -101,6 +99,4 @@
10199
systemd:
102100
name: netbox-rqworker.service
103101
state: started
104-
enabled: yes
105-
when:
106-
- netbox_webhooks_enabled
102+
enabled: yes

tasks/validate_variables.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,15 @@
5656
- "(netbox_scripts | map(attribute='name') | map('regex_search', '^[a-z][a-z0-9_]*$') | select('string') | list | length) == (netbox_scripts | length)"
5757
- "(netbox_reports | map(attribute='name') | map('regex_search', '^[a-z][a-z0-9_]*$') | select('string') | list | length) == (netbox_reports | length)"
5858
msg: "Please ensure that your script/report module names start with a lowercase letter and contain only lowercase letters, numbers, and underscores."
59+
60+
- block:
61+
- name: Identify selected storage module
62+
set_fact:
63+
_netbox_storages_module: "{{ netbox_config.STORAGE_BACKEND | regex_search('(?<=storages\\.backends\\.).*(?=\\.)') }}"
64+
65+
- name: Ensure storage module is a valid option
66+
assert:
67+
that:
68+
- _netbox_storages_module in _netbox_storages_map
69+
msg: "Please ensure your STORAGE_BACKEND is correct."
70+
when: "'STORAGE_BACKEND' in netbox_config"

templates/configuration.py.j2

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,24 @@ DATABASE = {
2727
}
2828

2929
REDIS = {
30-
'HOST': '{{ netbox_redis_host }}',
31-
'PORT': '{{ netbox_redis_port }}',
32-
'PASSWORD': '{{ netbox_redis_password }}',
33-
'DATABASE': '{{ netbox_redis_database }}',
34-
'CACHE_DATABASE': '{{ netbox_redis_cache_database }}',
35-
'DEFAULT_TIMEOUT': '{{ netbox_redis_default_timeout }}',
36-
'SSL': {{ netbox_redis_ssl_enabled }},
30+
'webhooks': {
31+
'HOST': '{{ netbox_redis_host }}',
32+
'PORT': {{ netbox_redis_port }},
33+
'PASSWORD': '{{ netbox_redis_password }}',
34+
'DATABASE': {{ netbox_redis_database }},
35+
'DEFAULT_TIMEOUT': {{ netbox_redis_default_timeout }},
36+
'SSL': {{ netbox_redis_ssl_enabled }},
37+
},
38+
'caching': {
39+
'HOST': '{{ netbox_redis_cache_host }}',
40+
'PORT': {{ netbox_redis_cache_port }},
41+
'PASSWORD': '{{ netbox_redis_cache_password }}',
42+
'DATABASE': {{ netbox_redis_cache_database }},
43+
'DEFAULT_TIMEOUT': {{ netbox_redis_cache_default_timeout }},
44+
'SSL': {{ netbox_redis_cache_ssl_enabled }},
45+
}
3746
}
3847

39-
{% if netbox_webhooks_enabled %}
40-
WEBHOOKS_ENABLED = True
41-
{% endif %}
42-
4348
{% if netbox_metrics_enabled %}
4449
METRICS_ENABLED = True
4550
{% endif %}

vars/main.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
netbox_config_path: "{{ netbox_current_path }}/netbox/netbox"
44
netbox_virtualenv_path: "{{ netbox_current_path }}/venv-py3"
55

6+
_netbox_storages_map:
7+
s3boto3: boto3
8+
apache_libcloud: "apache-libcloud"
9+
azure_storage: "django-storages[azure]"
10+
dropbox: "django-storages[dropbox]"
11+
gcloud: "django-storages[google]"
12+
ftp: []
13+
sftpstorage: []
14+
615
netbox_superuser_script: |
716
from django.contrib.auth.models import User
817
from base64 import b64decode

0 commit comments

Comments
 (0)