feat: initial playbook
This commit is contained in:
parent
99bfb97ee7
commit
f8e1de4f0a
30 changed files with 1097 additions and 2 deletions
144
roles/netbox-deploy/tasks/main.yml
Normal file
144
roles/netbox-deploy/tasks/main.yml
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
---
|
||||
- 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue