1. /srv/http:
  2. file:
  3. - directory
  4. {% for project_name, project_data in salt['pillar.get']('projects', {}).items() %}
  5. user_{{ project_name }}:
  6. user.present:
  7. - name: {{ project_name }}
  8. - shell: {{ project_data.get('shell', '/bin/false') }}
  9. - home: /srv/http/{{ project_name }}
  10. - createhome: True
  11. - require:
  12. - file: /srv/http
  13. {% for domain, site_data in project_data.items() %}
  14. {% if site_data.get('vhost', False) == True %}
  15. vhost_{{ domain|replace('.','_') }}:
  16. file.directory:
  17. - name: /srv/http/{{ project_name }}/hosts/{{ domain }}/public
  18. - user: {{ project_name }}
  19. - group: {{ project_name }}
  20. - makedirs: True
  21. - mode: 660
  22. file.managed:
  23. - name: /etc/apache2/sites/available/{{ domain }}.conf
  24. - source: {{ site_data.get('template_file', 'salt://templates/apache/vhosts/default.tmpl') }}
  25. - template: {{ site_data.get('template_engine', 'jinja') }}
  26. - context:
  27. domain: {{ domain|json }}
  28. user: {{ project_name|json }}
  29. cmd.run:
  30. - name: /usr/sbin/a2ensite {{ domain|json }}
  31. {% endif %}
  32. {% endfor %}
  33. {% endfor %}