Advertisement
Guest User

Untitled

a guest
Jul 6th, 2015
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.36 KB | None | 0 0
  1. jcigar@dev:/usr/local/etc/salt/pillar/venvs/ > cat python.sls
  2. venvs:
  3. python:
  4. harmonia:
  5. python_version: 2.7
  6. user: www-ias
  7. alienalert:
  8. python_version: 3.4
  9. user: www-iasaa
  10. bbpf:
  11. python_version: 3.4
  12. user: www-bbpf
  13. rodentia:
  14. python_version: 2.7
  15. user: www-rod
  16. formidabel:
  17. python_version: 2.7
  18. user: www-formicidae
  19. biodiversa:
  20. python_version: 2.7
  21. user: www-bdvsaweb
  22. epbrs:
  23. python_version: 2.7
  24. user: www-epbrs
  25. beescommunity:
  26. python_version: 2.7
  27. user: www-bees
  28. openup:
  29. python_version: 2.7
  30. user: www-openup
  31. tiny:
  32. python_version: 2.7
  33. user: www-generic
  34.  
  35. jcigar@dev:/usr/local/etc/salt/states/venvs/ > cat init.sls
  36. include:
  37. - .python
  38. - .ruby
  39.  
  40. jcigar@dev:/usr/local/etc/salt/states/venvs/ > cat macros.jinja
  41. {% macro venv_dir(venv_base, venv_full) -%}
  42.  
  43. {{ venv_full }}_base:
  44. file.directory:
  45. - name: {{ venv_base }}
  46. - user: root
  47. - group: wheel
  48. - mode: 755
  49. - makedirs: True
  50.  
  51. {{ venv_full }}_dir:
  52. file.directory:
  53. - name: {{ venv_full }}
  54. - user: {{ kwargs.get('user', 'root') }}
  55. - group: {{ kwargs.get('group', 'wheel') }}
  56. - mode: {{ kwargs.get('mode', 755) }}
  57. - makedirs: {{ kwargs.get('makedirs', True) }}
  58. - require:
  59. - file: {{ venv_base }}
  60. {%- endmacro %}
  61.  
  62. jcigar@dev:/usr/local/etc/salt/states/venvs/python/ > cat init.sls
  63. include:
  64. {% for venv in salt['pillar.get']('venvs:python') %}
  65. - .{{ venv }}
  66. {% endfor %}
  67.  
  68. jcigar@dev:/usr/local/etc/salt/states/venvs/python/ > ll
  69. total 88
  70. -rw-r--r-- 1 root wheel 1813 May 29 13:45 _template.sls
  71. -rw-r--r-- 1 root wheel 96 Apr 30 12:55 alienalert-requirements.txt
  72. -rw-r--r-- 1 root wheel 73 May 11 14:32 alienalert.sls
  73. -rw-r--r-- 1 root wheel 109 May 11 16:41 bbpf-requirements.txt
  74. -rw-r--r-- 1 root wheel 67 May 11 16:42 bbpf.sls
  75. -rw-r--r-- 1 root wheel 341 Jun 2 11:14 beescommunity-requirements.txt
  76. -rw-r--r-- 1 root wheel 76 Jun 2 11:14 beescommunity.sls
  77. -rw-r--r-- 1 root wheel 298 Jun 1 17:09 biodiversa-requirements.txt
  78. -rw-r--r-- 1 root wheel 73 Jun 1 17:09 biodiversa.sls
  79. -rw-r--r-- 1 root wheel 357 Jun 2 11:10 epbrs-requirements.txt
  80. -rw-r--r-- 1 root wheel 68 Jun 2 11:11 epbrs.sls
  81. -rw-r--r-- 1 root wheel 462 Jun 1 16:41 formidabel-requirements.txt
  82. -rw-r--r-- 1 root wheel 73 Jun 1 16:42 formidabel.sls
  83. -rw-r--r-- 1 root wheel 347 May 28 10:48 harmonia-requirements.txt
  84. -rw-r--r-- 1 root wheel 71 May 11 14:33 harmonia.sls
  85. -rw-r--r-- 1 root wheel 93 Jun 8 14:48 init.sls
  86. -rw-r--r-- 1 root wheel 0 May 11 12:14 map.jinja
  87. -rw-r--r-- 1 root wheel 91 Jun 3 15:11 openup-requirements.txt
  88. -rw-r--r-- 1 root wheel 69 Jun 3 15:10 openup.sls
  89. -rw-r--r-- 1 root wheel 293 May 28 17:09 rodentia-requirements.txt
  90. -rw-r--r-- 1 root wheel 71 May 28 17:09 rodentia.sls
  91. -rw-r--r-- 1 root wheel 32 Jun 4 11:19 tiny-requirements.txt
  92. -rw-r--r-- 1 root wheel 67 Jun 4 11:18 tiny.sls
  93.  
  94. jcigar@dev:/usr/local/etc/salt/states/venvs/python/ > cat _template.sls
  95. {% import 'venvs/macros.jinja' as macros %}
  96.  
  97. {% set args = salt['pillar.get']('venvs:python:{}'.format(venv)) %}
  98. {% set venv_base = salt['pillar.get']('venvs:lookup:base') %}
  99. {% set venv_full = '{}/{}'.format(venv_base, venv) %}
  100.  
  101. include:
  102. - users.webapps.{{ args.user }}
  103. - pkgs.python
  104. - postgresql.client
  105.  
  106. {{ macros.venv_dir(venv_base, venv_full, user=args.user, group=args.user) }}
  107.  
  108. # Three steps approach:
  109. # - Create the virtualenv
  110. # - Upgrade pip to the last version
  111. # - Install the requirements (requirements.txt)
  112.  
  113. {{ venv }}:
  114. virtualenv.managed:
  115. - name: {{ venv_full }}
  116. {% if args.python_version == 3.4 %}
  117. - venv_bin: /usr/local/bin/pyvenv-3.4
  118. {% elif args.python_version == 2.7 %}
  119. - venv_bin: /usr/local/bin/virtualenv-2.7
  120. {% endif %}
  121. - system_site_packages: False
  122. - user: {{ args.user }}
  123. - clear: True
  124. - require:
  125. - file: {{ venv_full }}
  126. - user: {{ args.user }}
  127. - pkg: {{ salt['pillar.get']('postgresql:lookup:pkg_client') }}
  128. {% if args.python_version == 3.4 %}
  129. - pkg: python34
  130. {% elif args.python_version == 2.7 %}
  131. - pkg: python27
  132. - pkg: py27-virtualenv
  133. {% endif %}
  134.  
  135. {{ venv }}_upgrade_pip:
  136. cmd.run:
  137. - name: {{ venv_full }}/bin/pip --no-cache-dir install -U pip
  138. - user: {{ args.user }}
  139. - group: {{ args.user }}
  140. - require:
  141. - virtualenv: {{ venv }}
  142.  
  143. {{ venv }}_requirements:
  144. virtualenv.managed:
  145. - name: {{ venv_full }}
  146. - requirements: salt://venvs/python/{{ venv }}-requirements.txt
  147. - user: {{ args.user }}
  148. - env_vars:
  149. PIP_CACHE_DIR: /tmp
  150. - watch:
  151. - cmd: {{ venv }}_upgrade_pip
  152.  
  153. jcigar@dev:/usr/local/etc/salt/states/venvs/python/ > cat alienalert.sls
  154. {% extends "venvs/python/_template.sls" %}
  155. {% set venv = "alienalert" %}
  156.  
  157. jcigar@dev:/usr/local/etc/salt/states/venvs/python/ > cat alienalert-requirements.txt
  158. Chameleon==2.16
  159. CherryPy==3.5.0
  160. Pillow==2.5.1
  161. SQLAlchemy==1.0.2
  162. py-bcrypt==0.4
  163. reportlab==3.1.8
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement