--- - name: Create NetBox installation directory file: path: "{{ netbox_install_dir }}" state: directory owner: root group: root mode: '0755' tags: - netbox-deploy - directories - name: Create NetBox data directory file: path: "{{ netbox_data_dir }}" state: directory owner: root group: root mode: '0755' tags: - netbox-deploy - directories - name: Create NetBox backup directory file: path: "{{ netbox_backup_dir }}" state: directory owner: root group: root mode: '0755' tags: - netbox-deploy - directories - name: Clone NetBox Docker repository git: repo: "{{ netbox_repo_url }}" dest: "{{ netbox_install_dir }}" version: "{{ netbox_repo_branch }}" update: "{{ netbox_repo_update }}" force: yes tags: - netbox-deploy - git-clone - name: Generate NetBox secret key set_fact: netbox_secret_key: "{{ netbox_secret_key | default(128 | random_string) }}" when: netbox_secret_key == "" tags: - netbox-deploy - config - name: Create NetBox environment file template: src: netbox.env.j2 dest: "{{ netbox_install_dir }}/env/netbox.env" mode: '0644' tags: - netbox-deploy - config - name: Create PostgreSQL environment file template: src: postgres.env.j2 dest: "{{ netbox_install_dir }}/env/postgres.env" mode: '0644' tags: - netbox-deploy - config - name: Create Redis environment file template: src: redis.env.j2 dest: "{{ netbox_install_dir }}/env/redis.env" mode: '0644' tags: - netbox-deploy - config - name: Create Redis Cache environment file template: src: redis-cache.env.j2 dest: "{{ netbox_install_dir }}/env/redis-cache.env" mode: '0644' tags: - netbox-deploy - config - name: Create Docker Compose override file template: src: docker-compose.override.yml.j2 dest: "{{ netbox_install_dir }}/docker-compose.override.yml" mode: '0644' tags: - netbox-deploy - config - name: Pull Docker images docker_compose: project_src: "{{ netbox_install_dir }}" pull: yes tags: - netbox-deploy - docker-pull - name: Start NetBox services docker_compose: project_src: "{{ netbox_install_dir }}" state: present tags: - netbox-deploy - docker-start - name: Wait for NetBox to be ready uri: url: "http://localhost:8000/" method: GET status_code: 200 register: netbox_ready until: netbox_ready.status == 200 retries: 30 delay: 10 tags: - netbox-deploy - health-check - name: Create NetBox superuser docker_compose: project_src: "{{ netbox_install_dir }}" command: "netbox /opt/netbox/netbox/manage.py createsuperuser --noinput --username {{ netbox_superuser_name }} --email {{ netbox_superuser_email }}" register: superuser_result failed_when: superuser_result.rc != 0 and "already exists" not in superuser_result.stderr tags: - netbox-deploy - superuser - name: Set NetBox superuser password docker_compose: project_src: "{{ netbox_install_dir }}" command: "netbox /opt/netbox/netbox/manage.py shell -c \"from django.contrib.auth import get_user_model; User = get_user_model(); u = User.objects.get(username='{{ netbox_superuser_name }}'); u.set_password('{{ netbox_superuser_password }}'); u.save()\"" tags: - netbox-deploy - superuser