salted-rails 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/README.md +65 -20
  2. data/init.sh +64 -0
  3. data/lib/salted-rails.rb +4 -6
  4. data/lib/salted-rails/capistrano_helper.rb +106 -0
  5. data/lib/salted-rails/cloud_vbguest_installer.rb +14 -0
  6. data/lib/salted-rails/config.rb +212 -0
  7. data/lib/salted-rails/helper_base.rb +90 -0
  8. data/lib/salted-rails/vagrant_helper.rb +159 -0
  9. data/lib/salted-rails/version.rb +3 -0
  10. data/lib/salted_rails_base.rb +6 -0
  11. data/pillar/capistrano/top.sls +1 -1
  12. data/pillar/common.sls +5 -0
  13. data/pillar/vagrant/top.sls +1 -1
  14. data/salt/bin/change_mirror.sh +29 -20
  15. data/salt/bin/fix_hostname.sh +6 -0
  16. data/salt/bin/provision +37 -0
  17. data/salt/capistrano/deploy_requirements.sls +5 -0
  18. data/salt/capistrano/minion +8 -4
  19. data/salt/capistrano/top.sls +1 -5
  20. data/salt/ci/cruisecontrolrb.sls +72 -0
  21. data/salt/ci/teamcity/etc/init.d/teamcity +17 -0
  22. data/salt/ci/teamcity/init.sls +58 -0
  23. data/salt/databases/client.sls +18 -0
  24. data/salt/{common.sls → databases/init.sls} +1 -16
  25. data/salt/databases/phpmyadmin/etc/nginx/{sites-available → admin.d}/phpmyadmin.conf +1 -1
  26. data/salt/databases/phpmyadmin/init.sls +2 -11
  27. data/salt/databases/server.sls +19 -0
  28. data/salt/editors/gvim.sls +5 -0
  29. data/salt/editors/rubymine.sls +51 -0
  30. data/salt/gui/init.sls +3 -0
  31. data/salt/gui/lxde.sls +5 -0
  32. data/salt/gui/x2go.sls +23 -0
  33. data/salt/lang/java/etc/profile.d/java.sh +2 -0
  34. data/salt/lang/java/init.sls +48 -0
  35. data/salt/lang/php/composer.sls +0 -3
  36. data/salt/lang/ruby.sls +3 -3
  37. data/salt/lang/ruby.sls.bak +3 -3
  38. data/salt/railsapp/gems.sls +16 -3
  39. data/salt/railsapp/init.sls +1 -0
  40. data/salt/railsapp/mysql_database.sls +11 -6
  41. data/salt/salt/minion/init.sls +19 -18
  42. data/salt/vagrant/minion +8 -4
  43. data/salt/vagrant/minion.sls +4 -5
  44. data/salt/vagrant/top.sls +32 -6
  45. data/salt/www/admin/etc/nginx/nginx.conf +53 -0
  46. data/salt/{databases/phpmyadmin → www/admin}/etc/nginx/sites-available/.gitignore +0 -0
  47. data/salt/www/admin/etc/nginx/sites-available/phpmyadmin.conf +7 -0
  48. data/salt/www/admin/init.sls +31 -0
  49. data/salt/www/nginx/init.sls +17 -4
  50. data/salt/www/users.sls +4 -0
  51. data/salted-rails.gemspec +1 -1
  52. metadata +30 -13
  53. data/lib/salted_rails/capistrano.rb +0 -8
  54. data/lib/salted_rails/vagrant_helper.rb +0 -169
  55. data/lib/salted_rails/version.rb +0 -5
  56. data/salt/capistrano.sls +0 -0
  57. data/salt/develop/init.sls +0 -3
  58. data/salt/echo_pillar.sls +0 -9
  59. data/salt/run-standalone +0 -3
  60. data/salt/vagrant.sls +0 -0
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ # /etc/init.d/teamcity - startup script for teamcity
3
+ export TEAMCITY_DATA_PATH="/var/TeamCity/.BuildServer"
4
+ . /etc/profile.d/java.sh
5
+
6
+ case $1 in
7
+ start)
8
+ start-stop-daemon --start -c www-data --exec /var/TeamCity/bin/runAll.sh start
9
+ ;;
10
+
11
+ stop)
12
+ start-stop-daemon --start -c www-data --exec /var/TeamCity/bin/runAll.sh stop
13
+ ;;
14
+
15
+ esac
16
+
17
+ exit 0
@@ -0,0 +1,58 @@
1
+ include:
2
+ - lang.java
3
+ - www.users
4
+
5
+ teamcity-download:
6
+ file.directory:
7
+ - name: /tmp/TeamCity
8
+ - makedirs: True
9
+ - user: www-data
10
+ - group: www-data
11
+ - require:
12
+ - sls: www.users
13
+ cmd.run:
14
+ - name: wget -c http://download.jetbrains.com/teamcity/TeamCity-{{ pillar['teamcity-version'] }}.tar.gz
15
+ - unless: test -d /var/TeamCity/bin
16
+ - cwd: /tmp
17
+ - user: www-data
18
+ - group: www-data
19
+ - require:
20
+ - file.directory: teamcity-download
21
+
22
+ teamcity-extract:
23
+ cmd.run:
24
+ - name: tar xfz /tmp/TeamCity-{{ pillar['teamcity-version'] }}.tar.gz
25
+ - cwd: /tmp/TeamCity
26
+ - user: www-data
27
+ - group: www-data
28
+ - require:
29
+ - cmd: teamcity-download
30
+
31
+ teamcity-install:
32
+ cmd.run:
33
+ - name: rm -rf /var/TeamCity && mv /tmp/TeamCity/* /var/TeamCity && rm -fr /tmp/TeamCity
34
+ - cwd: /tmp
35
+ - unless: test -d /var/TeamCity/bin
36
+ - require:
37
+ - cmd: teamcity-extract
38
+
39
+ teamcity-setup-service:
40
+ file.managed:
41
+ - name: {{ pillar['etc_dir'] }}/init.d/teamcity
42
+ - source: salt://ci/teamcity/etc/init.d/teamcity
43
+ - user: root
44
+ - group: root
45
+ - mode: 755
46
+ - require:
47
+ - cmd: teamcity-install
48
+
49
+ teamcity:
50
+ service:
51
+ - running
52
+ - enable: True
53
+ - reload: True
54
+ - watch:
55
+ - file: {{ pillar['etc_dir'] }}/init.d/teamcity
56
+ require:
57
+ - file: teamcity-setup-service
58
+
@@ -0,0 +1,18 @@
1
+
2
+ include:
3
+ # MySQL
4
+ {%- if ('mysql' in pillar['gems']) or ('mysql2' in pillar['gems']) %}
5
+ - databases.mysql.client
6
+ {%- endif %}
7
+ # PostgreSQL - TODO main alternative to mysql
8
+ # MongoDB - TODO Document database
9
+ # CouchDB - TODO json web distributed db
10
+ # Redis - TODO key value store
11
+ # Riak - TODO Distributed fault tolerant DB
12
+ # RabbitMQ - TODO message broker software
13
+ # Memcached - TODO Memory cache
14
+ # Cassandra - TODO distributed database management system
15
+ # Neo4J - TODO Graph database
16
+ # ElasticSearch - TODO search and analytics engine
17
+ # Kestrel - TODO light-weight persistent message queue
18
+ # SQLite3 - Included by default
@@ -1,9 +1,5 @@
1
+
1
2
  include:
2
- - apt.partner-sources
3
- - apt.unwanted
4
- - lang.ruby
5
- - www.users
6
- - www.nginx
7
3
  # MySQL
8
4
  {%- if ('mysql' in pillar['gems']) or ('mysql2' in pillar['gems']) %}
9
5
  - databases.mysql
@@ -21,14 +17,3 @@ include:
21
17
  # ElasticSearch - TODO search and analytics engine
22
18
  # Kestrel - TODO light-weight persistent message queue
23
19
  # SQLite3 - Included by default
24
- - sysutils
25
- - develop
26
- - editors.vim
27
- - sysutils.tmux
28
- - railsapp
29
-
30
- #- echo_pillar
31
-
32
- # if GUI:
33
- # www.chromium
34
-
@@ -1,4 +1,4 @@
1
- server {
1
+ yerver {
2
2
  listen 80;
3
3
  server_name phpmyadmin;
4
4
  client_max_body_size 20M;
@@ -9,19 +9,10 @@ phpmyadmin:
9
9
 
10
10
  phpmyadmin_nginx:
11
11
  file.managed:
12
- - source: salt://databases/phpmyadmin/etc/nginx/sites-available/phpmyadmin.conf
13
- - name: {{ pillar['etc_dir'] }}nginx/sites-available/phpmyadmin.conf
12
+ - source: salt://databases/phpmyadmin/etc/nginx/admin.d/phpmyadmin.conf
13
+ - name: {{ pillar['etc_dir'] }}nginx/admin.d/phpmyadmin.conf
14
14
  - user: root
15
15
  - group: root
16
16
  - template: jinja
17
17
  - mode: 644
18
- host.present:
19
- - name: phpmyadmin
20
- - ip: 127.0.0.1
21
18
 
22
- phpmyadmin_nginx-enable:
23
- file.symlink:
24
- - name: {{ pillar['etc_dir'] }}nginx/sites-enabled/phpmyadmin.conf
25
- - target: {{ pillar['etc_dir'] }}nginx/sites-available/phpmyadmin.conf
26
- - require:
27
- - file: phpmyadmin_nginx
@@ -0,0 +1,19 @@
1
+
2
+ include:
3
+ # MySQL
4
+ {%- if ('mysql' in pillar['gems']) or ('mysql2' in pillar['gems']) %}
5
+ - databases.mysql.server
6
+ - databases.phpmyadmin
7
+ {%- endif %}
8
+ # PostgreSQL - TODO main alternative to mysql
9
+ # MongoDB - TODO Document database
10
+ # CouchDB - TODO json web distributed db
11
+ # Redis - TODO key value store
12
+ # Riak - TODO Distributed fault tolerant DB
13
+ # RabbitMQ - TODO message broker software
14
+ # Memcached - TODO Memory cache
15
+ # Cassandra - TODO distributed database management system
16
+ # Neo4J - TODO Graph database
17
+ # ElasticSearch - TODO search and analytics engine
18
+ # Kestrel - TODO light-weight persistent message queue
19
+ # SQLite3 - Included by default
@@ -0,0 +1,5 @@
1
+
2
+ gvim:
3
+ pkg.installed:
4
+ - name: vim-gtk
5
+
@@ -0,0 +1,51 @@
1
+ include:
2
+ - lang.java
3
+
4
+ {{ pillar['homedir'] }}/local/tmp:
5
+ file.directory:
6
+ - makedirs: True
7
+ - clean: True
8
+ - user: {{ pillar['username'] }}
9
+ - group: {{ pillar['username'] }}
10
+
11
+ rubymine-download:
12
+ cmd.run:
13
+ - name: wget -c http://download.jetbrains.com/ruby/RubyMine-{{ pillar['rubymine-version'] }}.tar.gz
14
+ - cwd: {{ pillar['homedir'] }}/local
15
+ - user: {{ pillar['username'] }}
16
+ - group: {{ pillar['username'] }}
17
+ - unless: [ -d {{ pillar['homedir'] }}/local/RubyMine-{{ pillar['rubymine-version'] }} ]
18
+ - require:
19
+ - file.directory: {{ pillar['homedir'] }}/local/tmp
20
+
21
+ rubymine-extract:
22
+ cmd.run:
23
+ - name: tar xfz ../RubyMine-{{ pillar['rubymine-version'] }}.tar.gz
24
+ - cwd: {{ pillar['homedir'] }}/local/tmp
25
+ - user: {{ pillar['username'] }}
26
+ - group: {{ pillar['username'] }}
27
+ - unless: [ -d ../RubyMine-{{ pillar['rubymine-version'] }} ]
28
+ - require:
29
+ - cmd: rubymine-download
30
+
31
+ # The tar file contains extra version numbers in its top directory
32
+ rubymine-rename:
33
+ cmd.run:
34
+ - name: mv RubyMine-* ../RubyMine-{{ pillar['rubymine-version'] }}
35
+ - cwd: {{ pillar['homedir'] }}/local/tmp
36
+ - user: {{ pillar['username'] }}
37
+ - group: {{ pillar['username'] }}
38
+ - unless: [ -d ../RubyMine-{{ pillar['rubymine-version'] }} ]
39
+ - require:
40
+ - cmd: rubymine-extract
41
+
42
+ rubymine-adjust_profile:
43
+ file.append:
44
+ - name: {{ pillar['homedir'] }}/.profile
45
+ - user: {{ pillar['username'] }}
46
+ - group: {{ pillar['username'] }}
47
+ - text:
48
+ - export PATH="{{ pillar['homedir'] }}/RubyMine-{{ pillar['rubymine-version'] }}/bin:$PATH"
49
+ - require:
50
+ - cmd: rubymine-rename
51
+
data/salt/gui/init.sls ADDED
@@ -0,0 +1,3 @@
1
+ include:
2
+ - gui.lxde
3
+ - gui.x2go
data/salt/gui/lxde.sls ADDED
@@ -0,0 +1,5 @@
1
+ deploy:
2
+ pkg.installed:
3
+ - pkgs:
4
+ - lxde
5
+
data/salt/gui/x2go.sls ADDED
@@ -0,0 +1,23 @@
1
+ x2go:
2
+ pkgrepo.managed:
3
+ - humanname: X2Go PPA repository
4
+ - ppa: x2go/stable
5
+ pkg.installed:
6
+ - pkgs:
7
+ - x2goserver
8
+ - x2goserver-xsession
9
+ - require:
10
+ - pkgrepo: x2go
11
+ file.sed:
12
+ - name: /etc/ssh/sshd_config
13
+ - before: ^HostKey /etc/ssh/ssh_host_ecdsa_key
14
+ - after: "#HostKey /etc/ssh/ssh_host_ecdsa_key # not compatible with x2go"
15
+ - limit: ^HostKey
16
+ - require:
17
+ - pkg: x2go
18
+
19
+ ssh:
20
+ service.running:
21
+ - watch:
22
+ - file.sed: x2go
23
+
@@ -0,0 +1,2 @@
1
+ export JDK_HOME=/usr/lib/jvm/java-7-oracle
2
+ export JAVA_HOME=/usr/lib/jvm/java-7-oracle
@@ -0,0 +1,48 @@
1
+ #
2
+ # How to install automatically Oracle Java 7 under Salt Stack
3
+ #
4
+ # Thanks Oracle for complicating things :(
5
+ #
6
+ # 1. Create a java/ folder in your salt master
7
+ # 2. Paste this file in init.sls
8
+ # 3. salt '*' state.sls java
9
+ #
10
+ # Source:
11
+ # * https://github.com/log0ymxm/salt-jvm/blob/master/init.sls
12
+ # * http://architects.dzone.com/articles/puppet-installing-oracle-java
13
+ #
14
+ oracle-ppa:
15
+ pkgrepo.managed:
16
+ - humanname: WebUpd8 Oracle Java PPA repository
17
+ - ppa: webupd8team/java
18
+
19
+ oracle-license-select:
20
+ cmd.run:
21
+ - unless: which java
22
+ - name: '/bin/echo /usr/bin/debconf shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections'
23
+ - require_in:
24
+ - pkg: oracle-java7-installer
25
+ - cmd: oracle-license-seen-lie
26
+
27
+ oracle-license-seen-lie:
28
+ cmd.run:
29
+ - name: '/bin/echo /usr/bin/debconf shared/accepted-oracle-license-v1-1 seen true | /usr/bin/debconf-set-selections'
30
+ - require_in:
31
+ - pkg: oracle-java7-installer
32
+
33
+ oracle-java7-installer:
34
+ pkg:
35
+ - installed
36
+ - require:
37
+ - pkgrepo: oracle-ppa
38
+
39
+ adjust_profile:
40
+ file.managed:
41
+ - name: /etc/profile.d/java.sh
42
+ - source: salt://lang/java/etc/profile.d/java.sh
43
+ - user: root
44
+ - group: root
45
+ - mode: 755
46
+ - require:
47
+ - pkg: oracle-java7-installer
48
+
@@ -1,9 +1,6 @@
1
1
  include:
2
2
  - lang.php
3
3
 
4
-
5
-
6
-
7
4
  php-composer:
8
5
  cmd.run:
9
6
  - name: curl -s https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
data/salt/lang/ruby.sls CHANGED
@@ -34,13 +34,13 @@ rbenv-deps:
34
34
 
35
35
  ruby:
36
36
  rbenv.installed:
37
- - name: {{ pillar['ruby-version'] }}
37
+ - name: {{ pillar['ruby_version'] }}
38
38
  - default: True
39
39
  - runas: {{ pillar['username'] }}
40
40
  - require:
41
41
  - pkg: rbenv-deps
42
42
 
43
- adjust_profile:
43
+ rbenv-adjust_profile:
44
44
  file.append:
45
45
  - name: {{ pillar['homedir'] }}/.profile
46
46
  - user: {{ pillar['username'] }}
@@ -57,4 +57,4 @@ base_gems:
57
57
  - names:
58
58
  - bundler
59
59
  - require:
60
- - file: adjust_profile
60
+ - file: rbenv-adjust_profile
@@ -73,7 +73,7 @@ adjust_profile:
73
73
  #
74
74
 
75
75
  # this is currently not working
76
- # ruby-{{ pillar['ruby-version'] }}:
76
+ # ruby-{{ pillar['ruby_version'] }}:
77
77
  # rbenv.installed:
78
78
  # - default: True
79
79
  # - require:
@@ -81,7 +81,7 @@ adjust_profile:
81
81
 
82
82
  install_ruby:
83
83
  cmd.run:
84
- - name: {{ pillar['homedir'] }}/.rbenv/bin/rbenv install {{ pillar['ruby-version'] }}
84
+ - name: {{ pillar['homedir'] }}/.rbenv/bin/rbenv install {{ pillar['ruby_version'] }}
85
85
  - user: {{ pillar['username'] }}
86
86
  - group: {{ pillar['username'] }}
87
87
  - require:
@@ -97,7 +97,7 @@ rehash:
97
97
 
98
98
  set-global:
99
99
  cmd.run:
100
- - name: {{ pillar['homedir'] }}/.rbenv/bin/rbenv global {{ pillar['ruby-version'] }}
100
+ - name: {{ pillar['homedir'] }}/.rbenv/bin/rbenv global {{ pillar['ruby_version'] }}
101
101
  - user: {{ pillar['username'] }}
102
102
  - group: {{ pillar['username'] }}
103
103
  - require:
@@ -1,17 +1,30 @@
1
1
  include:
2
2
  - lang.ruby
3
3
 
4
+ tmp_railsapp_gems:
5
+ file.directory:
6
+ - name: /tmp/railsapp_gems
7
+ - file_mode: 755
8
+ - user: {{ pillar['username'] }}
9
+ - group: {{ pillar['username'] }}
10
+ - makedirs: True
11
+ - clean: True
12
+
4
13
  railsapp_gems:
5
14
  file.recurse:
6
- - source: salt://railsapp/files
7
- - name: /tmp
15
+ - source: salt://files/
16
+ - name: /tmp/railsapp_gems
8
17
  - file_mode: 644
9
18
  - user: {{ pillar['username'] }}
19
+ - group: {{ pillar['username'] }}
20
+ - require:
21
+ - file.directory: tmp_railsapp_gems
10
22
  cmd.run:
11
23
  # Run twice if first fails (weirdness with installing ruby-debug)
12
24
  - name: {{ pillar['homedir'] }}/.rbenv/shims/bundle install || {{ pillar['homedir'] }}/.rbenv/shims/bundle install
13
- - cwd: /tmp
25
+ - cwd: /tmp/railsapp_gems
14
26
  - user: {{ pillar['username'] }}
27
+ - group: {{ pillar['username'] }}
15
28
  - require:
16
29
  - file: railsapp_gems
17
30
  - gem.installed: base_gems
@@ -1,4 +1,5 @@
1
1
  include:
2
+ - databases
2
3
  - railsapp.packages
3
4
  - railsapp.gems
4
5
  {%- if ('mysql' in pillar['gems']) or ('mysql2' in pillar['gems']) %}
@@ -1,25 +1,30 @@
1
1
  include:
2
2
  - databases.mysql.server
3
3
 
4
+ {%- if ('development' in pillar['databases']) %}
5
+
4
6
  database:
5
7
  mysql_database.present:
6
8
  - names:
7
- - {{ pillar['database']['development']['database'] }}
8
- - {{ pillar['database']['test']['database'] }}
9
+ - {{ pillar['databases']['development']['database'] }}
10
+ {%- if ('test' in pillar['databases']) %}
11
+ - {{ pillar['databases']['test']['database'] }}
12
+ {%- endif %}
9
13
  - require:
10
14
  - service.running: mysql-server
11
15
  - pkg: mysql-server
12
16
  mysql_user:
13
17
  - present
14
- - name: {{ pillar['database']['development']['username'] }}
15
- - password: {{ pillar['database']['development']['password'] }}
18
+ - name: {{ pillar['databases']['development']['username'] }}
19
+ - password: {{ pillar['databases']['development']['password'] }}
16
20
  - require:
17
21
  - mysql_database.present: database
18
22
  mysql_grants.present:
19
- - database: {{ pillar['database']['development']['username'] }}_%.*
23
+ - database: {{ pillar['databases']['development']['username'] }}_%.*
20
24
  - grant: ALL PRIVILEGES
21
- - user: {{ pillar['database']['development']['username'] }}
25
+ - user: {{ pillar['databases']['development']['username'] }}
22
26
  - host: localhost
23
27
  - require:
24
28
  - mysql_user.present: database
25
29
 
30
+ {%- endif %}