|
|
- - name: install postgres
- apt:
- package: [postgresql, libpq-dev, python-psycopg2]
- state: present
- become: yes
-
- - name: create netbox database
- postgresql_db:
- name: "{{netbox_db}}"
- state: present
- become: yes
- become_user: postgres
-
- - name: create netbox postgres user
- postgresql_user:
- db: "{{netbox_db}}"
- name: "{{netbox_pg_username}}"
- password: "{{netbox_pg_password}}"
- become: yes
- become_user: postgres
-
- - name: install dependencies
- apt:
- package: [python3, python3-setuptools, python-setuptools, python3-dev, build-essential, libxml2-dev, libxslt1-dev,
- libffi-dev, graphviz, libpq-dev, libssl-dev, redis-server, zlib1g-dev, libopenjp2-7, supervisor, nginx]
- state: present
- become: yes
-
- - name: remove system pip
- apt:
- package: python3-pip
- state: absent
- become: yes
-
- - name: install pip via get-pip.py
- shell: curl https://bootstrap.pypa.io/get-pip.py | python3 -
- become: yes
-
- - name: grab the netbox release
- unarchive:
- src: https://github.com/digitalocean/netbox/archive/v{{netbox_release}}.tar.gz
- remote_src: yes
- dest: /opt
- owner: root
- group: root
- mode: u=rwX,g=rX,o=rX
- become: yes
-
- - name: alias it to /opt/netbox
- file:
- src: /opt/netbox-{{netbox_release}}
- dest: /opt/netbox
- state: link
- become: yes
-
- - name: create netbox user
- user:
- name: "{{netbox_user}}"
- state: present
- become: yes
-
- - name: chown netbox/media to netbox user
- file:
- path: /opt/netbox/netbox/media
- recurse: yes
- owner: "{{netbox_user}}"
- group: "{{netbox_user}}"
- become: yes
-
- - name: install dependencies via pip
- pip:
- requirements: /opt/netbox/requirements.txt
- executable: pip3
- become: yes
-
- - name: install napalm, Pillow, gunicorn
- pip:
- name: [napalm, Pillow, gunicorn]
- state: present
- executable: pip3
- become: yes
-
- - name: template netbox config
- template:
- src: netbox/configuration.py
- dest: /opt/netbox/netbox/netbox/configuration.py
- owner: "{{netbox_user}}"
- group: "{{netbox_user}}"
- become: yes
-
- - name: run migrations
- shell: python3 manage.py migrate
- args:
- chdir: /opt/netbox/netbox/
- become: yes
- become_user: "{{netbox_user}}"
-
- - name: create netbox superuser
- shell: >
- echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('{{netbox_superuser_username}}', '{{netbox_superuser_email}}', '{{netbox_superuser_password}}')" \
- | python3 manage.py shell
- args:
- chdir: /opt/netbox/netbox/
- become: yes
- become_user: "{{netbox_user}}"
-
- - name: collect static files
- shell: python3 manage.py collectstatic --no-input
- args:
- chdir: /opt/netbox/netbox/
- become: yes
-
- - name: load seed data
- shell: python3 manage.py loaddata initial_data
- args:
- chdir: /opt/netbox/netbox/
- become: yes
-
- - name: template nginx config
- template:
- src: nginx/netbox.conf
- dest: /etc/nginx/sites-available/netbox
- owner: root
- group: root
- mode: 0644
- become: yes
-
- - name: link nginx config
- file:
- src: /etc/nginx/sites-available/netbox
- dest: /etc/nginx/sites-enabled/netbox
- state: link
- owner: root
- group: root
- mode: 0644
- become: yes
-
- - name: install gunicorn config
- template:
- src: netbox/gunicorn_config.py
- dest: /opt/netbox/gunicorn_config.py
- owner: "{{netbox_user}}"
- group: "{{netbox_user}}"
- become: yes
-
- - name: install gunicorn supervisord config
- template:
- src: supervisor/netbox.conf
- dest: /etc/supervisor/conf.d/netbox.conf
- owner: root
- group: root
- mode: 0644
- become: yes
-
- - name: restart supervisord
- service:
- name: supervisor
- state: restarted
- become: yes
-
- - name: restart nginx
- service:
- name: nginx
- state: restarted
- become: yes
|