144 lines
3.3 KiB
YAML
144 lines
3.3 KiB
YAML
---
|
|
- 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
|