auxiliary infrastructure [PXE, netbox, ubnt controller]. probably on a pi or something
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
3.7 KiB

  1. - name: install postgres
  2. apt:
  3. package: [postgresql, libpq-dev, python-psycopg2]
  4. state: present
  5. become: yes
  6. - name: create netbox database
  7. postgresql_db:
  8. name: "{{netbox_db}}"
  9. state: present
  10. become: yes
  11. become_user: postgres
  12. - name: create netbox postgres user
  13. postgresql_user:
  14. db: "{{netbox_db}}"
  15. name: "{{netbox_pg_username}}"
  16. password: "{{netbox_pg_password}}"
  17. become: yes
  18. become_user: postgres
  19. - name: install dependencies
  20. apt:
  21. package: [python3, python3-setuptools, python-setuptools, python3-dev, build-essential, libxml2-dev, libxslt1-dev,
  22. libffi-dev, graphviz, libpq-dev, libssl-dev, redis-server, zlib1g-dev, libopenjp2-7, supervisor, nginx]
  23. state: present
  24. become: yes
  25. - name: remove system pip
  26. apt:
  27. package: python3-pip
  28. state: absent
  29. become: yes
  30. - name: install pip via get-pip.py
  31. shell: curl https://bootstrap.pypa.io/get-pip.py | python3 -
  32. become: yes
  33. - name: grab the netbox release
  34. unarchive:
  35. src: https://github.com/digitalocean/netbox/archive/v{{netbox_release}}.tar.gz
  36. remote_src: yes
  37. dest: /opt
  38. owner: root
  39. group: root
  40. mode: u=rwX,g=rX,o=rX
  41. become: yes
  42. - name: alias it to /opt/netbox
  43. file:
  44. src: /opt/netbox-{{netbox_release}}
  45. dest: /opt/netbox
  46. state: link
  47. become: yes
  48. - name: create netbox user
  49. user:
  50. name: "{{netbox_user}}"
  51. state: present
  52. become: yes
  53. - name: chown netbox/media to netbox user
  54. file:
  55. path: /opt/netbox/netbox/media
  56. recurse: yes
  57. owner: "{{netbox_user}}"
  58. group: "{{netbox_user}}"
  59. become: yes
  60. - name: install dependencies via pip
  61. pip:
  62. requirements: /opt/netbox/requirements.txt
  63. executable: pip3
  64. become: yes
  65. - name: install napalm, Pillow, gunicorn
  66. pip:
  67. name: [napalm, Pillow, gunicorn]
  68. state: present
  69. executable: pip3
  70. become: yes
  71. - name: template netbox config
  72. template:
  73. src: netbox/configuration.py
  74. dest: /opt/netbox/netbox/netbox/configuration.py
  75. owner: "{{netbox_user}}"
  76. group: "{{netbox_user}}"
  77. become: yes
  78. - name: run migrations
  79. shell: python3 manage.py migrate
  80. args:
  81. chdir: /opt/netbox/netbox/
  82. become: yes
  83. become_user: "{{netbox_user}}"
  84. - name: create netbox superuser
  85. shell: >
  86. 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}}')" \
  87. | python3 manage.py shell
  88. args:
  89. chdir: /opt/netbox/netbox/
  90. become: yes
  91. become_user: "{{netbox_user}}"
  92. - name: collect static files
  93. shell: python3 manage.py collectstatic --no-input
  94. args:
  95. chdir: /opt/netbox/netbox/
  96. become: yes
  97. - name: load seed data
  98. shell: python3 manage.py loaddata initial_data
  99. args:
  100. chdir: /opt/netbox/netbox/
  101. become: yes
  102. - name: template nginx config
  103. template:
  104. src: nginx/netbox.conf
  105. dest: /etc/nginx/sites-available/netbox
  106. owner: root
  107. group: root
  108. mode: 0644
  109. become: yes
  110. - name: link nginx config
  111. file:
  112. src: /etc/nginx/sites-available/netbox
  113. dest: /etc/nginx/sites-enabled/netbox
  114. state: link
  115. owner: root
  116. group: root
  117. mode: 0644
  118. become: yes
  119. - name: install gunicorn config
  120. template:
  121. src: netbox/gunicorn_config.py
  122. dest: /opt/netbox/gunicorn_config.py
  123. owner: "{{netbox_user}}"
  124. group: "{{netbox_user}}"
  125. become: yes
  126. - name: install gunicorn supervisord config
  127. template:
  128. src: supervisor/netbox.conf
  129. dest: /etc/supervisor/conf.d/netbox.conf
  130. owner: root
  131. group: root
  132. mode: 0644
  133. become: yes
  134. - name: restart supervisord
  135. service:
  136. name: supervisor
  137. state: restarted
  138. become: yes
  139. - name: restart nginx
  140. service:
  141. name: nginx
  142. state: restarted
  143. become: yes