This commit is contained in:
		
					parent
					
						
							
								496f122968
							
						
					
				
			
			
				commit
				
					
						79012fb7f8
					
				
			
		
					 7 changed files with 137 additions and 0 deletions
				
			
		
							
								
								
									
										16
									
								
								inventories/chaosknoten/host_vars/eh22-netbox.yaml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								inventories/chaosknoten/host_vars/eh22-netbox.yaml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | ||||||
|  | netbox__version: "v4.1.7" | ||||||
|  | netbox__db_password: "{{ lookup('community.general.passwordstore', 'noc/vm-secrets/chaosknoten/eh22-netbox/DATABASE_PASSWORD', create=false, missing='error') }}" | ||||||
|  | netbox__config: "{{ lookup('ansible.builtin.template', 'resources/chaosknoten/eh22-netbox/netbox/configuration.py.j2') }}" | ||||||
|  | netbox__custom_pipeline_oidc_group_and_role_mapping: true | ||||||
|  | 
 | ||||||
|  | nginx__version_spec: "" | ||||||
|  | nginx__configurations: | ||||||
|  |   - name: netbox.eh22.easterhegg.eu | ||||||
|  |     content: "{{ lookup('ansible.builtin.file', 'resources/chaosknoten/eh22-netbox/nginx/netbox.eh22.easterhegg.eu.conf') }}" | ||||||
|  | 
 | ||||||
|  | certbot__version_spec: "" | ||||||
|  | certbot__acme_account_email_address: j+letsencrypt-ccchh@jsts.xyz | ||||||
|  | certbot__certificate_domains: | ||||||
|  |   - "netbox.eh22.easterhegg.eu" | ||||||
|  | certbot__new_cert_commands: | ||||||
|  |   - "systemctl reload nginx.service" | ||||||
|  | @ -10,6 +10,10 @@ all: | ||||||
|       ansible_host: cloud-intern.hamburg.ccc.de |       ansible_host: cloud-intern.hamburg.ccc.de | ||||||
|       ansible_user: chaos |       ansible_user: chaos | ||||||
|       ansible_ssh_common_args: -J ssh://chaos@public-reverse-proxy.hamburg.ccc.de |       ansible_ssh_common_args: -J ssh://chaos@public-reverse-proxy.hamburg.ccc.de | ||||||
|  |     eh22-netbox: | ||||||
|  |       ansible_host: eh22-netbox-intern.hamburg.ccc.de | ||||||
|  |       ansible_user: chaos | ||||||
|  |       ansible_ssh_common_args: -J ssh://chaos@public-reverse-proxy.hamburg.ccc.de | ||||||
|     eh22-wiki: |     eh22-wiki: | ||||||
|       ansible_host: eh22-wiki-intern.hamburg.ccc.de |       ansible_host: eh22-wiki-intern.hamburg.ccc.de | ||||||
|       ansible_user: chaos |       ansible_user: chaos | ||||||
|  | @ -66,6 +70,7 @@ base_config_hosts: | ||||||
|   hosts: |   hosts: | ||||||
|     ccchoir: |     ccchoir: | ||||||
|     cloud: |     cloud: | ||||||
|  |     eh22-netbox: | ||||||
|     eh22-wiki: |     eh22-wiki: | ||||||
|     grafana: |     grafana: | ||||||
|     keycloak: |     keycloak: | ||||||
|  | @ -96,6 +101,7 @@ nextcloud_hosts: | ||||||
| nginx_hosts: | nginx_hosts: | ||||||
|   hosts: |   hosts: | ||||||
|     ccchoir: |     ccchoir: | ||||||
|  |     eh22-netbox: | ||||||
|     eh22-wiki: |     eh22-wiki: | ||||||
|     grafana: |     grafana: | ||||||
|     tickets: |     tickets: | ||||||
|  | @ -115,6 +121,7 @@ public_reverse_proxy_hosts: | ||||||
| certbot_hosts: | certbot_hosts: | ||||||
|   hosts: |   hosts: | ||||||
|     ccchoir: |     ccchoir: | ||||||
|  |     eh22-netbox: | ||||||
|     eh22-wiki: |     eh22-wiki: | ||||||
|     grafana: |     grafana: | ||||||
|     tickets: |     tickets: | ||||||
|  | @ -130,6 +137,7 @@ certbot_hosts: | ||||||
| prometheus_node_exporter_hosts: | prometheus_node_exporter_hosts: | ||||||
|   hosts: |   hosts: | ||||||
|     ccchoir: |     ccchoir: | ||||||
|  |     eh22-netbox: | ||||||
|     eh22-wiki: |     eh22-wiki: | ||||||
|     tickets: |     tickets: | ||||||
|     keycloak: |     keycloak: | ||||||
|  | @ -142,6 +150,7 @@ prometheus_node_exporter_hosts: | ||||||
| infrastructure_authorized_keys_hosts: | infrastructure_authorized_keys_hosts: | ||||||
|   hosts: |   hosts: | ||||||
|     ccchoir: |     ccchoir: | ||||||
|  |     eh22-netbox: | ||||||
|     eh22-wiki: |     eh22-wiki: | ||||||
|     grafana: |     grafana: | ||||||
|     tickets: |     tickets: | ||||||
|  | @ -160,4 +169,5 @@ wiki_hosts: | ||||||
|     wiki: |     wiki: | ||||||
| netbox_hosts: | netbox_hosts: | ||||||
|   hosts: |   hosts: | ||||||
|  |     eh22-netbox: | ||||||
|     netbox: |     netbox: | ||||||
|  |  | ||||||
							
								
								
									
										60
									
								
								resources/chaosknoten/eh22-netbox/netbox/configuration.py.j2
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								resources/chaosknoten/eh22-netbox/netbox/configuration.py.j2
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,60 @@ | ||||||
|  | ALLOWED_HOSTS = [ "netbox.eh22.easterhegg.eu" ] | ||||||
|  | DATABASE = { | ||||||
|  |   "HOST": "localhost", | ||||||
|  |   "NAME": "netbox", | ||||||
|  |   "USER": "netbox", | ||||||
|  |   "PASSWORD": "{{ lookup('community.general.passwordstore', 'noc/vm-secrets/chaosknoten/eh22-netbox/DATABASE_PASSWORD', create=false, missing='error') }}", | ||||||
|  | } | ||||||
|  | REDIS = { | ||||||
|  |     "tasks": { | ||||||
|  |       "HOST": "localhost", | ||||||
|  |       "PORT": 6379, | ||||||
|  |       "USERNAME": "", | ||||||
|  |       "PASSWORD": "", | ||||||
|  |       "DATABASE": 0, | ||||||
|  |       "SSL": False, | ||||||
|  |     }, | ||||||
|  |     "caching": { | ||||||
|  |       "HOST": "localhost", | ||||||
|  |       "PORT": 6379, | ||||||
|  |       "USERNAME": "", | ||||||
|  |       "PASSWORD": "", | ||||||
|  |       "DATABASE": 1, | ||||||
|  |       "SSL": False, | ||||||
|  |     }, | ||||||
|  | } | ||||||
|  | SECRET_KEY = "{{ lookup('community.general.passwordstore', 'noc/vm-secrets/chaosknoten/eh22-netbox/SECRET_KEY', create=false, missing='error') }}" | ||||||
|  | SESSION_COOKIE_SECURE = True | ||||||
|  | 
 | ||||||
|  | # CCCHH ID (Keycloak) integration. | ||||||
|  | # https://github.com/python-social-auth/social-core/blob/0925304a9e437f8b729862687d3a808c7fb88a95/social_core/backends/keycloak.py#L7 | ||||||
|  | # https://python-social-auth.readthedocs.io/en/latest/backends/keycloak.html | ||||||
|  | REMOTE_AUTH_BACKEND = "social_core.backends.keycloak.KeycloakOAuth2" | ||||||
|  | SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL = ( | ||||||
|  |     "https://id.hamburg.ccc.de/realms/ccchh/protocol/openid-connect/token" | ||||||
|  | ) | ||||||
|  | SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL = ( | ||||||
|  |     "https://id.hamburg.ccc.de/realms/ccchh/protocol/openid-connect/auth" | ||||||
|  | ) | ||||||
|  | SOCIAL_AUTH_KEYCLOAK_KEY = "eh22-netbox" | ||||||
|  | SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi/Shi+b2OyYNGVFPsa6qf9SesEpRl5U5rpwgmt8H7NawMvwpPUYVW9o46QW0ulYcDmysT3BzpP3tagO/SFNoOjZdYe0D9nJ7vEp8KHbzR09KCfkyQIi0wLssKnDotVHL5JeUY+iKk+gjiwF9FSFSHPBqsST7hXVAut9LkOvs2aDod9AzbTH/uYbt4wfUm5l/1Ii8D+K7YcsFGUIqxv4XS/ylKqObqN4M2dac69iIwapoh6reaBQEm66vrOzJ+3yi4DZuPrkShJqi2hddtoyZihyCkF+eJJKEI5LrBf1KZB3Ec2YUrqk93ZGUGs/XY6R87QSfR3hJ82B1wnF+c2pw+QIDAQAB" | ||||||
|  | SOCIAL_AUTH_KEYCLOAK_SECRET = "{{ lookup('community.general.passwordstore', 'noc/vm-secrets/chaosknoten/eh22-netbox/SOCIAL_AUTH_KEYCLOAK_SECRET', create=false, missing='error') }}" | ||||||
|  | # Use custom OIDC group and role mapping pipeline functions added in via | ||||||
|  | # netbox__custom_pipeline_oidc_group_and_role_mapping. | ||||||
|  | # The default pipeline this is based on can be found here: | ||||||
|  | # https://github.com/netbox-community/netbox/blob/main/netbox/netbox/settings.py | ||||||
|  | SOCIAL_AUTH_PIPELINE = [ | ||||||
|  |     "social_core.pipeline.social_auth.social_details", | ||||||
|  |     "social_core.pipeline.social_auth.social_uid", | ||||||
|  |     "social_core.pipeline.social_auth.social_user", | ||||||
|  |     "social_core.pipeline.user.get_username", | ||||||
|  |     "social_core.pipeline.user.create_user", | ||||||
|  |     "social_core.pipeline.social_auth.associate_user", | ||||||
|  |     "netbox.authentication.user_default_groups_handler", | ||||||
|  |     "social_core.pipeline.social_auth.load_extra_data", | ||||||
|  |     "social_core.pipeline.user.user_details", | ||||||
|  |     # Custom OIDC group and role mapping functions. | ||||||
|  |     "netbox.custom_pipeline_oidc_mapping.add_groups", | ||||||
|  |     "netbox.custom_pipeline_oidc_mapping.remove_groups", | ||||||
|  |     "netbox.custom_pipeline_oidc_mapping.set_roles", | ||||||
|  | ] | ||||||
|  | @ -0,0 +1,48 @@ | ||||||
|  | # partly generated 2022-01-08, Mozilla Guideline v5.6, nginx 1.17.7, OpenSSL 1.1.1k, intermediate configuration | ||||||
|  | # https://ssl-config.mozilla.org/#server=nginx&version=1.17.7&config=intermediate&openssl=1.1.1k&guideline=5.6 | ||||||
|  | server { | ||||||
|  |     # Listen on a custom port for the proxy protocol. | ||||||
|  |     listen 8443 ssl http2 proxy_protocol; | ||||||
|  |     # Make use of the ngx_http_realip_module to set the $remote_addr and | ||||||
|  |     # $remote_port to the client address and client port, when using proxy | ||||||
|  |     # protocol. | ||||||
|  |     # First set our proxy protocol proxy as trusted. | ||||||
|  |     set_real_ip_from 172.31.17.140; | ||||||
|  |     # Then tell the realip_module to get the addreses from the proxy protocol | ||||||
|  |     # header. | ||||||
|  |     real_ip_header proxy_protocol; | ||||||
|  | 
 | ||||||
|  |     server_name netbox.eh22.easterhegg.eu; | ||||||
|  | 
 | ||||||
|  |     ssl_certificate /etc/letsencrypt/live/netbox.eh22.easterhegg.eu/fullchain.pem; | ||||||
|  |     ssl_certificate_key /etc/letsencrypt/live/netbox.eh22.easterhegg.eu/privkey.pem; | ||||||
|  |     # verify chain of trust of OCSP response using Root CA and Intermediate certs | ||||||
|  |     ssl_trusted_certificate /etc/letsencrypt/live/netbox.eh22.easterhegg.eu/chain.pem; | ||||||
|  | 
 | ||||||
|  |     # HSTS (ngx_http_headers_module is required) (63072000 seconds) | ||||||
|  |     add_header Strict-Transport-Security "max-age=63072000" always; | ||||||
|  | 
 | ||||||
|  |     proxy_set_header Host $host; | ||||||
|  |     proxy_set_header X-Forwarded-Host $host; | ||||||
|  |     proxy_set_header X-Real-IP $remote_addr; | ||||||
|  |     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||||
|  |     proxy_set_header X-Forwarded-Port 443; | ||||||
|  |     # This is https in any case. | ||||||
|  |     proxy_set_header X-Forwarded-Proto https; | ||||||
|  |     # Hide the X-Forwarded header. | ||||||
|  |     proxy_hide_header X-Forwarded; | ||||||
|  |     # Assume we are the only Reverse Proxy (well using Proxy Protocol, but that | ||||||
|  |     # is transparent). | ||||||
|  |     # Also provide "_hidden" for by, since it's not relevant. | ||||||
|  |     proxy_set_header Forwarded "for=$remote_addr;proto=https;host=$host;by=_hidden"; | ||||||
|  | 
 | ||||||
|  |     client_max_body_size 25m; | ||||||
|  | 
 | ||||||
|  |     location /static/ { | ||||||
|  |         alias /opt/netbox/netbox/static/; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     location / { | ||||||
|  |         proxy_pass http://127.0.0.1:8001; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -83,6 +83,7 @@ scrape_configs: | ||||||
|           - public-web-static-intern.hamburg.ccc.de:9100 |           - public-web-static-intern.hamburg.ccc.de:9100 | ||||||
|           - git-intern.hamburg.ccc.de:9100 |           - git-intern.hamburg.ccc.de:9100 | ||||||
|           - forgejo-actions-runner-intern.hamburg.ccc.de:9100 |           - forgejo-actions-runner-intern.hamburg.ccc.de:9100 | ||||||
|  |           - eh22-netbox-intern.hamburg.ccc.de:9100 | ||||||
|           - eh22-wiki-intern.hamburg.ccc.de:9100 |           - eh22-wiki-intern.hamburg.ccc.de:9100 | ||||||
|           - nix-box-june-intern.hamburg.ccc.de:9100 |           - nix-box-june-intern.hamburg.ccc.de:9100 | ||||||
|           - mjolnir-intern.hamburg.ccc.de:9100 |           - mjolnir-intern.hamburg.ccc.de:9100 | ||||||
|  |  | ||||||
|  | @ -71,6 +71,7 @@ map $host $upstream_acme_challenge_host { | ||||||
|     hydra.hamburg.ccc.de 172.31.17.163:31820; |     hydra.hamburg.ccc.de 172.31.17.163:31820; | ||||||
|     cfp.eh22.easterhegg.eu 172.31.17.157:31820; |     cfp.eh22.easterhegg.eu 172.31.17.157:31820; | ||||||
|     hub.eh22.easterhegg.eu eh22hub-intern.hamburg.ccc.de:31820; |     hub.eh22.easterhegg.eu eh22hub-intern.hamburg.ccc.de:31820; | ||||||
|  |     netbox.eh22.easterhegg.eu eh22-netbox-intern.hamburg.ccc.de:31820; | ||||||
|     default ""; |     default ""; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -89,6 +89,7 @@ stream { | ||||||
|         hydra.hamburg.ccc.de 172.31.17.163:8443; |         hydra.hamburg.ccc.de 172.31.17.163:8443; | ||||||
|         cfp.eh22.easterhegg.eu pretalx-intern.hamburg.ccc.de:8443; |         cfp.eh22.easterhegg.eu pretalx-intern.hamburg.ccc.de:8443; | ||||||
|         hub.eh22.easterhegg.eu eh22hub-intern.hamburg.ccc.de:8443; |         hub.eh22.easterhegg.eu eh22hub-intern.hamburg.ccc.de:8443; | ||||||
|  |         netbox.eh22.easterhegg.eu eh22-netbox-intern.hamburg.ccc.de:8443; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     server { |     server { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue