- 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