init.sls 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #
  2. # Nginx
  3. #
  4. {% set node_config = salt['pillar.get']('nodes:' ~ grains.id) %}
  5. {% set nginx_pkg = node_config.get('nginx:pkg', 'nginx') %}
  6. {% set acme_thumbprint = salt['pillar.get']('acme:thumbprint') %}
  7. nginx:
  8. pkg.installed:
  9. - name: {{nginx_pkg}}
  10. {% if grains.oscodename in ['jessie'] %}
  11. - fromrepo: {{ grains.oscodename }}-backports
  12. {% endif %}
  13. service.running:
  14. - enable: TRUE
  15. - reload: TRUE
  16. - require:
  17. - pkg: nginx
  18. - watch:
  19. - cmd: nginx-configtest
  20. # Add cache directory
  21. nginx-cache:
  22. file.directory:
  23. - name: /srv/cache
  24. - user: www-data
  25. - group: www-data
  26. - require:
  27. - pkg: nginx
  28. - require_in:
  29. - cmd: nginx-configtest
  30. # Install meaningful main configuration (SSL tweaks 'n stuff)
  31. /etc/nginx/nginx.conf:
  32. file.managed:
  33. - source: salt://nginx/nginx.conf
  34. - template: jinja
  35. - watch_in:
  36. - cmd: nginx-configtest
  37. /etc/nginx/ffho.d:
  38. file.recurse:
  39. - source: salt://nginx/ffho.d
  40. - file_mode: 755
  41. - dir_mode: 755
  42. - user: root
  43. - group: root
  44. - clean: True
  45. - watch_in:
  46. - cmd: nginx-configtest
  47. # Disable default configuration
  48. /etc/nginx/sites-enabled/default:
  49. file.absent:
  50. - watch_in:
  51. - cmd: nginx-configtest
  52. # Install website configuration files configured for this node
  53. {% for website, website_config in node_config.get('nginx', {}).get('websites', {}).items() %}
  54. /etc/nginx/sites-enabled/{{website}}:
  55. file.managed:
  56. - source: salt://nginx/{{website}}
  57. - template: jinja
  58. config: {{ website_config }}
  59. - require:
  60. - pkg: nginx
  61. - watch_in:
  62. - cmd: nginx-configtest
  63. {% endfor %}
  64. {% if 'frontend' in node_config.get('roles', []) %}
  65. {% for domain, config in pillar.get('frontend', {}).items()|sort %}
  66. {% if 'file' in config %}
  67. /etc/nginx/sites-enabled/{{domain}}:
  68. file.managed:
  69. - source: salt://nginx/{{config.file}}
  70. - template: jinja
  71. acme_thumbprint: {{ acme_thumbprint }}
  72. - require:
  73. - pkg: nginx
  74. - watch_in:
  75. - cmd: nginx-configtest
  76. {% endif %}
  77. {% endfor %}
  78. /etc/nginx/sites-enabled/ff-frontend.conf:
  79. file.managed:
  80. - source: salt://nginx/ff-frontend.conf
  81. - template: jinja
  82. - require:
  83. - pkg: nginx
  84. - watch_in:
  85. - cmd: nginx-configtest
  86. {% endif %}
  87. # Test configuration before reload
  88. nginx-configtest:
  89. cmd.wait:
  90. - name: /usr/sbin/nginx -t