PageRenderTime 25ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/puppet/zulip/manifests/app_frontend.pp

https://gitlab.com/EnLab/zulip
Puppet | 143 lines | 117 code | 2 blank | 24 comment | 1 complexity | c80def2d165b2f53d6319abca15d305f MD5 | raw file
  1. class zulip::app_frontend {
  2. include zulip::rabbit
  3. include zulip::nginx
  4. include zulip::supervisor
  5. $web_packages = [ # Needed for memcached usage
  6. "memcached",
  7. "python-pylibmc",
  8. # Fast JSON parser
  9. "python-ujson",
  10. # Django dependencies
  11. "python-django",
  12. "python-django-guardian",
  13. "python-django-pipeline",
  14. "python-django-bitfield",
  15. # Needed for mock objects in decorators
  16. "python-mock",
  17. # Tornado dependencies
  18. "python-tornado",
  19. "python-sockjs-tornado",
  20. # Needed for our fastcgi setup
  21. "python-flup",
  22. # Needed for markdown processing
  23. "python-markdown",
  24. "python-pygments",
  25. # Used for Hesiod lookups, etc.
  26. "python-dns",
  27. # Needed to access our database
  28. "postgresql-client-9.3",
  29. "python-psycopg2",
  30. # Needed for building complex DB queries
  31. "python-sqlalchemy",
  32. # Needed for integrations
  33. "python-twitter",
  34. "python-defusedxml",
  35. # Needed for the email mirror
  36. "python-twisted",
  37. "python-html2text",
  38. # Needed to access rabbitmq
  39. "python-pika",
  40. # Needed for timezone work
  41. "python-tz",
  42. # Needed to parse source maps for error reporting
  43. "python-sourcemap",
  44. # Needed for redis
  45. "python-redis",
  46. # Needed for S3 file uploads
  47. "python-boto",
  48. # Needed to send email
  49. "python-mandrill",
  50. # Needed to generate diffs for edits
  51. "python-diff-match-patch",
  52. # Needed for iOS
  53. "python-apns-client",
  54. # Needed for Android push
  55. "python-gcm-client",
  56. # Needed for avatar image resizing
  57. "python-imaging",
  58. # Needed for LDAP support
  59. "python-django-auth-ldap",
  60. # Needed for Google Apps mobile auth
  61. "python-googleapi",
  62. # Needed for JWT-based auth
  63. "python-pyjwt",
  64. ]
  65. define safepackage ( $ensure = present ) {
  66. if !defined(Package[$title]) {
  67. package { $title: ensure => $ensure }
  68. }
  69. }
  70. safepackage { $web_packages: ensure => "installed" }
  71. file { "/etc/nginx/zulip-include/app":
  72. require => Package["nginx-full"],
  73. owner => "root",
  74. group => "root",
  75. mode => 644,
  76. source => "puppet:///modules/zulip/nginx/zulip-include-frontend/app",
  77. notify => Service["nginx"],
  78. }
  79. file { "/etc/nginx/zulip-include/upstreams":
  80. require => Package["nginx-full"],
  81. owner => "root",
  82. group => "root",
  83. mode => 644,
  84. source => "puppet:///modules/zulip/nginx/zulip-include-frontend/upstreams",
  85. notify => Service["nginx"],
  86. }
  87. file { "/etc/nginx/zulip-include/uploads.types":
  88. require => Package["nginx-full"],
  89. owner => "root",
  90. group => "root",
  91. mode => 644,
  92. source => "puppet:///modules/zulip/nginx/zulip-include-frontend/uploads.types",
  93. notify => Service["nginx"],
  94. }
  95. file { "/etc/nginx/zulip-include/app.d/":
  96. ensure => directory,
  97. owner => "root",
  98. group => "root",
  99. mode => 755,
  100. }
  101. file { "/etc/memcached.conf":
  102. require => Package[memcached],
  103. ensure => file,
  104. owner => "root",
  105. group => "root",
  106. mode => 644,
  107. source => "puppet:///modules/zulip/memcached.conf",
  108. }
  109. file { "/etc/supervisor/conf.d/zulip.conf":
  110. require => Package[supervisor],
  111. ensure => file,
  112. owner => "root",
  113. group => "root",
  114. mode => 644,
  115. source => "puppet:///modules/zulip/supervisor/conf.d/zulip.conf",
  116. notify => Service["supervisor"],
  117. }
  118. file { "/home/zulip/tornado":
  119. ensure => directory,
  120. owner => "zulip",
  121. group => "zulip",
  122. mode => 755,
  123. }
  124. service { 'memcached':
  125. ensure => running,
  126. subscribe => File['/etc/memcached.conf'],
  127. }
  128. file { '/home/zulip/logs':
  129. ensure => 'directory',
  130. owner => 'zulip',
  131. group => 'zulip',
  132. }
  133. file { '/home/zulip/deployments':
  134. ensure => 'directory',
  135. owner => 'zulip',
  136. group => 'zulip',
  137. }
  138. file { "/etc/cron.d/email-mirror":
  139. ensure => absent,
  140. }
  141. }