feat: deployable playbook

This commit is contained in:
Doni Crosby 2025-09-27 13:36:00 -04:00
parent f8e1de4f0a
commit 7ab2b719dc
23 changed files with 754 additions and 176 deletions

View file

@ -0,0 +1,169 @@
---
# Group variables for NetBox deployment
# These variables apply to all hosts in the netbox group
# System Update Configuration
system_update_reboot_if_needed: false
system_update_autoremove: true
# Docker Configuration
docker_users:
- "{{ ansible_user }}"
docker_daemon_config:
log-driver: "json-file"
log-opts:
max-size: "10m"
max-file: "3"
# NetBox Configuration
netbox_install_dir: "/opt/netbox-docker"
netbox_backup_dir: "/opt/netbox-backups"
netbox_data_dir: "/opt/netbox-data"
netbox_repo_url: "https://github.com/netbox-community/netbox-docker.git"
netbox_repo_branch: "release"
netbox_repo_update: true
# Database Configuration
netbox_db_host: "postgres"
netbox_db_name: "netbox"
netbox_db_user: "netbox"
netbox_db_password: "{{ vault_netbox_db_password }}"
netbox_db_port: "5432"
# Redis Configuration
netbox_redis_host: "redis"
netbox_redis_port: "6379"
netbox_redis_password: "{{ vault_netbox_redis_password }}"
# Redis Cache Configuration
netbox_redis_cache_host: "redis-cache"
netbox_redis_cache_port: "6379"
netbox_redis_cache_password: "{{ vault_netbox_redis_cache_password | default('') }}"
# NetBox Settings
netbox_allowed_hosts: "*"
netbox_time_zone: "UTC"
netbox_language_code: "en"
netbox_debug: false
netbox_log_level: "INFO"
netbox_secret_key: "{{ vault_netbox_secret_key | default('') }}"
# Superuser Configuration
netbox_superuser_name: "admin"
netbox_superuser_email: "admin@{{ ansible_domain | default('example.com') }}"
netbox_superuser_password: "{{ vault_netbox_superuser_password | default('admin') }}"
netbox_additional_env:
DB_WAIT_DEBUG: 1
CORS_ORIGIN_ALLOW_ALL: True
EMAIL_FROM: "netbox@jeansburger.net"
EMAIL_PASSWORD: "{{ vault_netbox_email_password | default('') }}"
EMAIL_PORT: 587
EMAIL_SERVER: "smtp.postmarkapp.com"
EMAIL_TIMEOUT: 5
EMAIL_USERNAME: "{{ vault_netbox_email_username | default('') }}"
# EMAIL_USE_SSL and EMAIL_USE_TLS are mutually exclusive, i.e. they can't both be `true`!
EMAIL_USE_SSL: False
EMAIL_USE_TLS: True
GRAPHQL_ENABLED: True
MEDIA_ROOT: "/opt/netbox/netbox/media"
METRICS_ENABLED: True
RELEASE_CHECK_URL: "https://api.github.com/repos/netbox-community/netbox/releases"
SECRET_KEY: "{{ vault_netbox_secret_key | default('') }}"
SKIP_SUPERUSER: True
WEBHOOKS_ENABLED: True
# Domain Configuration
netbox_domain: "{{ vault_netbox_domain | default('netbox.example.com') }}"
traefik_domain: "{{ vault_netbox_domain | default('traefik.example.com') }}"
# Traefik Configuration
traefik_install_dir: "/opt/traefik"
traefik_data_dir: "/opt/traefik-data"
traefik_config_dir: "/opt/traefik-config"
traefik_image: "traefik:v3.0"
traefik_dashboard_enabled: true
traefik_dashboard_port: 8080
traefik_api_insecure: false
traefik_api_dashboard: true
# ACME Configuration
traefik_acme_enabled: true
traefik_acme_email: "{{ vault_traefik_acme_email | default('admin@example.com') }}"
traefik_acme_ca_server: "{{ vault_traefik_acme_ca_server }}"
traefik_acme_storage: "/data/acme.json"
traefik_acme_key_type: "RSA4096"
# Traefik Entry Points
traefik_entrypoints:
web:
address: ":80"
http:
redirections:
- entrypoint:
to: "websecure"
scheme: "https"
permanent: true
websecure:
address: ":443"
http:
tls:
certResolver: "letsencrypt"
# Traefik Providers
traefik_providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
network: "traefik"
# Traefik Networks
traefik_networks:
- name: "traefik"
external: true
# Traefik Logging
traefik_log_level: "INFO"
traefik_access_logs: false
# Custom Root CA Configuration
traefik_custom_ca_enabled: true
traefik_custom_ca_url: "{{ vault_traefik_custom_ca_url }}"
traefik_custom_ca_path: "/etc/traefik/custom-ca.pem"
traefik_custom_ca_server_name: "jeansburger-ca.lan"
traefik_custom_ca_verify_ssl: false
# Docker Compose Overrides
netbox_docker_compose_overrides:
services:
netbox:
labels:
- "traefik.enable=true"
- "traefik.http.routers.netbox.rule=Host(`{{ netbox_domain }}`)"
- "traefik.http.routers.netbox.tls.certresolver=letsencrypt"
- "traefik.http.services.netbox.loadbalancer.server.port=8080"
networks:
- "traefik"
- "netbox"
netbox-worker:
networks:
- "netbox"
postgres:
networks:
- "netbox"
volumes:
- "{{ netbox_data_dir }}/postgres:/var/lib/postgresql/data"
redis:
networks:
- "netbox"
volumes:
- "{{ netbox_data_dir }}/redis:/data"
redis-cache:
networks:
- "netbox"
volumes:
- "{{ netbox_data_dir }}/redis-cache:/data"
networks:
traefik:
external: true
netbox: {}

View file

@ -0,0 +1,67 @@
$ANSIBLE_VAULT;1.1;AES256
37623935373466373531313732383935343638313038323037613064663465303362643636336438
3962616234303265666235303266383539386462376431330a336336363966623533623730393962
31313935633433636635356434393338626538333965386539373530363065393166656163343266
6238396131613235610a356537393638613731333163376638656466636630383730663633363431
35646665626564383136653863333762313637613934643437383335336566643830396131336431
33626663636636636633326538343262393165623664313161643930656531323765313835343332
63623837363763386165613438303762323432653064663066636163323962613632636531313430
39303961373537303061666434303430323063393464363662653866373131666236646637326337
65393836613831343765363266653737613161336133613939613234333664653066333864373536
64633461303862363739393834306230336332363163303432663338663765363263633433613763
31393963376164616566383566386562346265393963643530636561663063353738303934303363
62663039333838323231313137386637663832373466333136323134626133653762373631623033
66383964643439653262386438623933356532336235663866353137316639613266303839336566
38373765316238303230353938643463366264306230303433363863616364383965343837346634
32643135613032373163353632626439643266613633623662646161623237313364616331353861
37396534396335346239363031373264323264326334636564333862353434396138313132643631
65656136363031363534626638313830386666653235333131646265376366393235663264393065
65386135353533313236333038376165346139306431643064373734343066333462616364613764
39353439303362623938353338353666323063343533616262353563613064333835626331666233
61656232613835313736373134373131306364663066366461376335373662386264363234373731
32633166323030363237663761396638303837363138666365343533653638666461303138396435
31666132353866376161323362343963366536646530346237633236323532383433343965666464
31303666653665323161346239396133373234316665643436383362313436326139653264303637
63656166306162336462656262386437353165636262303334363538366338653734346333393763
66323435303262343336306630623864343731633762376135356563373266396563656430663764
38303766363235346264656231643863333533313765393338333235353034653836393733333065
36663864663838663334393232313036656534326363663066666335656432366538643562656263
31393866353731616662313432393335636436396335356537376166326136666136323661326664
36303562303339323264343365613535393037383038396131346161396539353936666133303562
32373530616237306264626361613864633561343163303262313034616662663034393830626330
30363462363264386234373763653438666232353235656139633463363265613231346639653461
65353861353035663763313262663863633761333462356463613737633430373736366136393666
36353139376431376566383761613538383133323563653336653835393037343562373738333361
35613862383062336263626261646638633033393763336238333864656663613638353362353030
66636465383032393434636665613664323331326131653234653766616563323833623739393631
62363732613764313036366531363130313438396261376232333738376235346136346162333037
34613966636261353237616664663666383364623262396363333365306661663933366431636430
62316363313662326338653163306431383132333739303365393938616436396166386639313339
36333962393063633630386162613232626431303064346662313865363032326465303163646238
61333638613839333239653537373564363966633836376335613637643961323530626366393263
34336633316438326432333537396636663063626339383630613965643238376362326432336366
34313934323361386262336162363261613363353866393464316164636464393330613237643936
65336431343037376163326433373566363663346635386162366137313165373431643863366134
34343735393532656161626466343061623439663064343661396230393764663764363139383532
32346662616235626365323663313430343130356563313335323635653863373565633235386130
39353735646661393164393133303666316263643933393336613563623637386139633765386238
65663439623036383436356361313062343632306232633363376235393634623438616462393733
36313130386135346631656638663037373238643330333364633061316261393031353130316234
30633737356564333231353237366637623930653333616536383331363762393461343533353765
64356237376432643064626662393836346138633465363561333035623331373931353833663764
38336266386236643531633135313833666336396231316231653666356339623262353234333537
64393863396165616261616132613561386664646262333965636663396564313235623032663839
62656630313031326232613962336636636433326639643534646664313062393135323164643631
37353464666232653333636236343264386264303136613636393664323139306631393666663636
32656261636635623261356365616163303665613462323131346466306661303233643566396631
61636363323536383464616363666537343438363632333638623130613233376538346332303033
31646164353735656162613863633630343537666232373036323337646564653338643762643464
30633336653030613333613761646538303466636662386362373235623166643464393130623466
64373234353765313339333261363366633766623861336663633131643161353238636663643235
34333638363131626534653932363965353737653434326265353864383233316335393264633861
33373365643239663161343361356430303437656264663735636164373862323135656530373463
37656461653736633437353864366530373037633861646132376263613035616561366366643435
64643036303563323466643937373232303736373966636239383766323439663264393631383562
35656234343131353132366262623962313066313464656631383465613630666136356266333636
38663065656336373561373563313161643362386339363730666434663930633861666266346162
3631303764363237623466326266366131323065326163393962