salted_rails_server 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.travis.yml +3 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/README.md +128 -0
- data/Rakefile +1 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/generators/salted_rails_server/salted_rails_server_generator.rb +56 -0
- data/lib/generators/salted_rails_server/templates/pillars/default/init.sls +15 -0
- data/lib/generators/salted_rails_server/templates/pillars/top.sls +3 -0
- data/lib/generators/salted_rails_server/templates/roster +5 -0
- data/lib/generators/salted_rails_server/templates/states/elasticsearch.sls +27 -0
- data/lib/generators/salted_rails_server/templates/states/mysql.sls +54 -0
- data/lib/generators/salted_rails_server/templates/states/nginx.sls +5 -0
- data/lib/generators/salted_rails_server/templates/states/node.sls +13 -0
- data/lib/generators/salted_rails_server/templates/states/rails.sls +35 -0
- data/lib/generators/salted_rails_server/templates/states/rvm.sls +84 -0
- data/lib/generators/salted_rails_server/templates/states/setup.sls +8 -0
- data/lib/generators/salted_rails_server/templates/states/user.sls +21 -0
- data/lib/salted_rails_server/version.rb +3 -0
- data/lib/salted_rails_server.rb +5 -0
- data/salted_rails_server.gemspec +31 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 993832613e203582e81d1e5390f3d090fdee21ee
|
4
|
+
data.tar.gz: dec9214f44b92a28d8e929bdc1ed6f7d1bf17d04
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 84c1898a62afa2f144ea8e0931c1a9990b1fb916b8e7a89ffee8cca4376aef92ed9ea7682bee1476a08b82994587c201f52dc55e629e2c9e8ba9d75fdb260562
|
7
|
+
data.tar.gz: fb7a5e24ded3d9aaab036fc8082ce64356afd81b7fdc8c994729b99502597f0b085f3bf3228d3cb9d5a1b28a4466896278d9098bebbe949058e469d63db5b9f2
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Contributor Code of Conduct
|
2
|
+
|
3
|
+
As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
|
4
|
+
|
5
|
+
We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, age, or religion.
|
6
|
+
|
7
|
+
Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
|
8
|
+
|
9
|
+
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.
|
10
|
+
|
11
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
|
12
|
+
|
13
|
+
This Code of Conduct is adapted from the [Contributor Covenant](http:contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
# salted_rails_server
|
2
|
+
|
3
|
+
A ruby on rails generator used to provision a new server with the following:
|
4
|
+
|
5
|
+
* User for running rails
|
6
|
+
* RVM
|
7
|
+
* NGINX
|
8
|
+
* Rails
|
9
|
+
* Elasticsearch
|
10
|
+
* NodeJS
|
11
|
+
* MySQL
|
12
|
+
|
13
|
+
## Tested on
|
14
|
+
|
15
|
+
* Ubuntu 14.04
|
16
|
+
* Ubuntu 15.10
|
17
|
+
|
18
|
+
No reason this should not work on any other saltstack supported OS. If you have tried this on any other OS and it did not work, let me know.
|
19
|
+
|
20
|
+
## salt-ssh installation
|
21
|
+
|
22
|
+
This code requires that you have Saltstack's salt-ssh already installed the system you are deploying from and a compatible version of python on the system you are deploying to.
|
23
|
+
|
24
|
+
|
25
|
+
Consult the following documentation for your OS:
|
26
|
+
https://docs.saltstack.com/en/latest/topics/installation/index.html
|
27
|
+
|
28
|
+
## Installation
|
29
|
+
|
30
|
+
Add this line to your application's Gemfile:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
gem 'salted_rails_server'
|
34
|
+
```
|
35
|
+
|
36
|
+
And then execute:
|
37
|
+
|
38
|
+
$ bundle
|
39
|
+
|
40
|
+
And then generate code:
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
rails g salted_rails_server
|
44
|
+
```
|
45
|
+
|
46
|
+
The following files will be generated:
|
47
|
+
|
48
|
+
* master
|
49
|
+
* roster
|
50
|
+
* Saltfile
|
51
|
+
* salted_rails_server/pillars*
|
52
|
+
* salted_rails_server/states/*
|
53
|
+
|
54
|
+
## Configuration
|
55
|
+
|
56
|
+
Add your custom options to the following files:
|
57
|
+
|
58
|
+
* roster - remote host(s) information
|
59
|
+
* pillars/default/init.sls - usernames, password, versions of items to be installed
|
60
|
+
|
61
|
+
|
62
|
+
## Running the code
|
63
|
+
|
64
|
+
Installing all states:
|
65
|
+
|
66
|
+
```
|
67
|
+
sudo salt-ssh -i '*' state.apply setup
|
68
|
+
```
|
69
|
+
|
70
|
+
Installing an individual state:
|
71
|
+
|
72
|
+
```
|
73
|
+
sudo salt-ssh -i '*' state.apply state_file
|
74
|
+
```
|
75
|
+
|
76
|
+
### States to chose from
|
77
|
+
|
78
|
+
* elasticsearch
|
79
|
+
* mysql
|
80
|
+
* nginx
|
81
|
+
* node
|
82
|
+
* rails
|
83
|
+
* rvm
|
84
|
+
* user
|
85
|
+
|
86
|
+
## Details on what the code does
|
87
|
+
|
88
|
+
### User state
|
89
|
+
|
90
|
+
Creates a user that is defined in pillars/default/init.sls. If a user is not found it will default to user called deploy. This sate also addes the user to /etc/sudoers for executing code without the need for a password.
|
91
|
+
|
92
|
+
### RSA state
|
93
|
+
Update pillars/default/init.sls to add your ssh key to log in as the user created in the user state
|
94
|
+
|
95
|
+
### RVM state
|
96
|
+
|
97
|
+
Installed under the user that is created from the user state
|
98
|
+
Sets the default to the specified version in pillars/default/init.sls
|
99
|
+
|
100
|
+
### Rails state
|
101
|
+
|
102
|
+
Installs the following gems in RVM
|
103
|
+
|
104
|
+
* Bundler
|
105
|
+
* Rails
|
106
|
+
* Unicorn
|
107
|
+
|
108
|
+
Finds or creates /var/www and sets the owner of that directory to the specified user in the user state
|
109
|
+
|
110
|
+
### MySQL state
|
111
|
+
|
112
|
+
Creates a rails_user account with the appropriate permissions to run rails nothing more. Sets its password to what is specified in pillar/default/init.sls
|
113
|
+
Sets the root password to what is specified in pillar/default/init.sls
|
114
|
+
|
115
|
+
|
116
|
+
## Caution
|
117
|
+
|
118
|
+
Take a look at the code before you use it to make sure that it works the way you expect or want. After the code is generated you can modify it to fit your needs before executing.
|
119
|
+
|
120
|
+
# Contributing
|
121
|
+
|
122
|
+
I am looking for constructive criticisim on making this better and easier for everyone who could use it.
|
123
|
+
|
124
|
+
1. Fork it ( https://github.com/vmcilwain/salted_rails_server/fork )
|
125
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
126
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
127
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
128
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "salted_rails_server"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
class SaltedRailsServerGenerator < Rails::Generators::Base
|
2
|
+
source_root File.expand_path('../templates', __FILE__)
|
3
|
+
|
4
|
+
desc 'create salted_rails_server directories'
|
5
|
+
def create_file_structure
|
6
|
+
run 'mkdir -p salted_rails_server/pillars'
|
7
|
+
run 'mkdir -p salted_rails_server/pillars/default'
|
8
|
+
run 'mkdir -p salted_rails_server/states'
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'generatre salted_rails_server default pillar template'
|
12
|
+
def copy_pillar_files
|
13
|
+
copy_file 'pillars/default/init.sls', 'salted_rails_server/pillars/default/init.sls'
|
14
|
+
copy_file 'pillars/top.sls', 'salted_rails_server/pillars/top.sls'
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'generate salted_rails_server state files'
|
18
|
+
def copy_state_files
|
19
|
+
copy_file 'states/elasticsearch.sls', 'salted_rails_server/states/elasticsearch.sls'
|
20
|
+
copy_file 'states/mysql.sls', 'salted_rails_server/states/mysql.sls'
|
21
|
+
copy_file 'states/nginx.sls', 'salted_rails_server/states/nginx.sls'
|
22
|
+
copy_file 'states/node.sls', 'salted_rails_server/states/node.sls'
|
23
|
+
copy_file 'states/rails.sls', 'salted_rails_server/states/rails.sls'
|
24
|
+
copy_file 'states/rvm.sls', 'salted_rails_server/states/rvm.sls'
|
25
|
+
copy_file 'states/setup.sls', 'salted_rails_server/states/setup.sls'
|
26
|
+
copy_file 'states/user.sls', 'salted_rails_server/states/user.sls'
|
27
|
+
end
|
28
|
+
|
29
|
+
desc 'generate salted_rails_server salt-ssh roster file'
|
30
|
+
def copy_roster
|
31
|
+
copy_file 'roster', 'roster'
|
32
|
+
end
|
33
|
+
|
34
|
+
desc 'generate salted_rails_server salt-ssh master file'
|
35
|
+
def generate_master
|
36
|
+
create_file 'master', <<-CODE
|
37
|
+
file_roots:
|
38
|
+
base:
|
39
|
+
- #{Rails.root}/salted_rails_server/states
|
40
|
+
|
41
|
+
pillar_roots:
|
42
|
+
base:
|
43
|
+
- #{Rails.root}/salted_rails_server/pillars
|
44
|
+
CODE
|
45
|
+
end
|
46
|
+
|
47
|
+
desc 'generate salted_rails_server salt-ssh Saltfile file'
|
48
|
+
def generate_saltfile
|
49
|
+
create_file "Saltfile", <<-CODE
|
50
|
+
salt-ssh:
|
51
|
+
config_dir: #{Rails.root}
|
52
|
+
roster_file: #{Rails.root}/roster
|
53
|
+
log_file: #{Rails.root}/saltlog.txt
|
54
|
+
CODE
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
default:
|
2
|
+
rails_env: development
|
3
|
+
user:
|
4
|
+
username: deploy
|
5
|
+
shell: /bin/bash
|
6
|
+
ssh:
|
7
|
+
key: ssh-rsa ......
|
8
|
+
ruby:
|
9
|
+
version: 2.2.3
|
10
|
+
mysql:
|
11
|
+
root_password: somepassword
|
12
|
+
rails_user: rails_user
|
13
|
+
rails_user_password: somepassword
|
14
|
+
elasticsearch:
|
15
|
+
version: elasticsearch-1.7.2.deb
|
@@ -0,0 +1,27 @@
|
|
1
|
+
openjdk_7_jre:
|
2
|
+
pkg.installed:
|
3
|
+
- name: openjdk-7-jre
|
4
|
+
|
5
|
+
es_download:
|
6
|
+
cmd.run:
|
7
|
+
- name: wget -P /tmp/ https://download.elastic.co/elasticsearch/elasticsearch/{{ salt['pillar.get']('default:elasticsearch:version', 'elasticsearch-1.7.2.deb') }}
|
8
|
+
- require:
|
9
|
+
- pkg: openjdk_7_jre
|
10
|
+
|
11
|
+
es_install:
|
12
|
+
cmd.run:
|
13
|
+
- name: dpkg -i /tmp/{{ salt['pillar.get']('default:elasticsearch:version', 'elasticsearch-1.7.2.deb') }}
|
14
|
+
- require:
|
15
|
+
- cmd: es_download
|
16
|
+
|
17
|
+
es_auto_start:
|
18
|
+
cmd.run:
|
19
|
+
- name: update-rc.d elasticsearch defaults
|
20
|
+
- require:
|
21
|
+
- cmd: es_install
|
22
|
+
|
23
|
+
start_elasticsearch:
|
24
|
+
cmd.run:
|
25
|
+
- name: service elasticsearch start
|
26
|
+
- require:
|
27
|
+
- cmd: es_auto_start
|
@@ -0,0 +1,54 @@
|
|
1
|
+
python-mysqldb:
|
2
|
+
pkg.installed:
|
3
|
+
- name:
|
4
|
+
- python-mysqldb
|
5
|
+
|
6
|
+
debconf-utils:
|
7
|
+
pkg.installed:
|
8
|
+
- name:
|
9
|
+
- debconf-utils
|
10
|
+
|
11
|
+
mysql:
|
12
|
+
pkg.installed:
|
13
|
+
- name: mysql-server
|
14
|
+
service.running:
|
15
|
+
- restart: True
|
16
|
+
- enable: True
|
17
|
+
- require:
|
18
|
+
- pkg: mysql-server
|
19
|
+
- pkg: python-mysqldb
|
20
|
+
- watch:
|
21
|
+
- pkg: mysql-server
|
22
|
+
|
23
|
+
libmysqlclient-dev:
|
24
|
+
pkg.installed:
|
25
|
+
- name:
|
26
|
+
- libmysqlclient-dev
|
27
|
+
- require:
|
28
|
+
- pkg: mysql-server
|
29
|
+
|
30
|
+
mysql-client:
|
31
|
+
pkg.installed:
|
32
|
+
- name:
|
33
|
+
- mysql-client
|
34
|
+
- require:
|
35
|
+
- pkg: mysql-server
|
36
|
+
|
37
|
+
{{ salt['pillar.get']('default:mysql:rails_user', 'rails_user') }}:
|
38
|
+
mysql_user.present:
|
39
|
+
- host: localhost
|
40
|
+
- password: {{ salt['pillar.get']('default:mysql:rails_user_password', 'temppassword') }}
|
41
|
+
- connection_user: root
|
42
|
+
- connection_charset: utf8
|
43
|
+
|
44
|
+
rails_user_privs:
|
45
|
+
cmd.run:
|
46
|
+
- name: mysql -u root -e "GRANT Select,Insert,Update,Delete,Create,Drop,Index,Alter,Lock Tables ON *.* TO '{{ salt['pillar.get']('default:mysql:rails_user', 'rails_user') }}'@'localhost';"
|
47
|
+
- require:
|
48
|
+
- mysql_user: {{ salt['pillar.get']('default:mysql:rails_user', 'rails_user') }}
|
49
|
+
|
50
|
+
change root password:
|
51
|
+
cmd.run:
|
52
|
+
- name: mysql -u root -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{{ salt['pillar.get']('default:mysql:root_password', 'temppassword') }}');"
|
53
|
+
- require:
|
54
|
+
- cmd: rails_user_privs
|
@@ -0,0 +1,35 @@
|
|
1
|
+
bundler:
|
2
|
+
gem.installed:
|
3
|
+
- name: bundler
|
4
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
5
|
+
- ruby: {{ salt['pillar.get']('default:ruby:version', '2.2.3') }}
|
6
|
+
rails:
|
7
|
+
gem.installed:
|
8
|
+
- name: rails
|
9
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
10
|
+
- rdoc: False
|
11
|
+
- ri: False
|
12
|
+
- ruby: {{ salt['pillar.get']('default:ruby:version', '2.2.3') }}
|
13
|
+
- require:
|
14
|
+
- gem: bundler
|
15
|
+
|
16
|
+
unicorn:
|
17
|
+
gem.installed:
|
18
|
+
- name: unicorn
|
19
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
20
|
+
- ruby: {{ salt['pillar.get']('default:ruby:version', '2.2.3') }}
|
21
|
+
|
22
|
+
rails_env:
|
23
|
+
cmd.run:
|
24
|
+
- name: "echo 'export RAILS_ENV={{ salt['pillar.get']('default:rails_env', 'development') }}' >> $HOME/.bashrc"
|
25
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
26
|
+
|
27
|
+
mkdir /var/www:
|
28
|
+
cmd.run:
|
29
|
+
- creates: /var/www
|
30
|
+
|
31
|
+
chown /var/www:
|
32
|
+
cmd.run:
|
33
|
+
- name: chown {{ salt['pillar.get']('default:user:username', 'deploy') }}:{{ salt['pillar.get']('default:user:username', 'deploy') }} /var/www
|
34
|
+
- require:
|
35
|
+
- cmd: mkdir /var/www
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# Comment out line 26 in /home/deploy/.profile. This is possibly causing issues.
|
2
|
+
|
3
|
+
gpg-deps:
|
4
|
+
pkg.installed:
|
5
|
+
- names:
|
6
|
+
- gpgv
|
7
|
+
|
8
|
+
gpg-import-D39DC0E3:
|
9
|
+
cmd.run:
|
10
|
+
- require:
|
11
|
+
- pkg: gpg-deps
|
12
|
+
- name: 'gpg --keyserver hkp://keys.gnupg.net:80 --recv-keys D39DC0E3'
|
13
|
+
- unless: "gpg --fingerprint |fgrep 'Key fingerprint = 409B 6B17 96C2 7546 2A17 0311 3804 BB82 D39D C0E3'"
|
14
|
+
|
15
|
+
rvm-deps:
|
16
|
+
pkg.installed:
|
17
|
+
- names:
|
18
|
+
- bash
|
19
|
+
- coreutils
|
20
|
+
- gzip
|
21
|
+
- bzip2
|
22
|
+
- gawk
|
23
|
+
- sed
|
24
|
+
- curl
|
25
|
+
- git-core
|
26
|
+
- subversion
|
27
|
+
|
28
|
+
mri-deps:
|
29
|
+
pkg.installed:
|
30
|
+
- names:
|
31
|
+
- build-essential
|
32
|
+
- openssl
|
33
|
+
- libreadline6
|
34
|
+
- libreadline6-dev
|
35
|
+
- curl
|
36
|
+
- git-core
|
37
|
+
- zlib1g
|
38
|
+
- zlib1g-dev
|
39
|
+
- libssl-dev
|
40
|
+
- libyaml-dev
|
41
|
+
- libsqlite3-0
|
42
|
+
- libsqlite3-dev
|
43
|
+
- sqlite3
|
44
|
+
- libxml2-dev
|
45
|
+
- libxslt1-dev
|
46
|
+
- autoconf
|
47
|
+
- libc6-dev
|
48
|
+
- libncurses5-dev
|
49
|
+
- automake
|
50
|
+
- libtool
|
51
|
+
- bison
|
52
|
+
- subversion
|
53
|
+
- ruby
|
54
|
+
|
55
|
+
rvm_install:
|
56
|
+
cmd.run:
|
57
|
+
- name: curl -sSL https://get.rvm.io | bash
|
58
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
59
|
+
- unless: /home/rvm/.rvm/bin/rvm --version
|
60
|
+
- require:
|
61
|
+
- pkg: rvm-deps
|
62
|
+
- pkg: mri-deps
|
63
|
+
- cmd: gpg-import-D39DC0E3
|
64
|
+
|
65
|
+
rvm_reload:
|
66
|
+
cmd.run:
|
67
|
+
- name: source ~/.rvm/scripts/rvm
|
68
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
69
|
+
- require:
|
70
|
+
- cmd: rvm_install
|
71
|
+
|
72
|
+
ruby-{{ salt['pillar.get']('default:ruby:version', '2.2.3') }}:
|
73
|
+
cmd.run:
|
74
|
+
- name: rvm install {{ salt['pillar.get']('default:ruby:version', '2.2.3') }}
|
75
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
76
|
+
- require:
|
77
|
+
- cmd: rvm_reload
|
78
|
+
|
79
|
+
rvm_default:
|
80
|
+
cmd.run:
|
81
|
+
- name: /bin/bash --login -c 'rvm use {{ salt['pillar.get']('default:ruby:version', '2.2.3') }} --default'
|
82
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
83
|
+
- require:
|
84
|
+
- cmd: ruby-{{ salt['pillar.get']('default:ruby:version', '2.2.3') }}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{{ salt['pillar.get']('user:username', 'deploy') }}:
|
2
|
+
user.present:
|
3
|
+
- name: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
4
|
+
- shell: {{ salt['pillar.get']('default:user:shell', '/bin/bash') }}
|
5
|
+
- home: /home/{{ salt['pillar.get']('default:user:username', 'deploy') }}
|
6
|
+
|
7
|
+
deploy-rsa:
|
8
|
+
ssh_auth:
|
9
|
+
- present
|
10
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
11
|
+
- enc: rsa
|
12
|
+
- names:
|
13
|
+
- {{ salt['pillar.get']('default:ssh:key') }}
|
14
|
+
- require:
|
15
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
16
|
+
|
17
|
+
add-to-sudo:
|
18
|
+
cmd.run:
|
19
|
+
- name: "echo '{{ salt['pillar.get']('default:user:username', 'deploy') }} ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers"
|
20
|
+
- require:
|
21
|
+
- user: {{ salt['pillar.get']('default:user:username', 'deploy') }}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'salted_rails_server/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "salted_rails_server"
|
8
|
+
spec.version = SaltedRailsServer::VERSION
|
9
|
+
spec.authors = ["Vell"]
|
10
|
+
spec.email = ["lovell.mcilwain@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Provisiona rails server using saltstacks's salt-ssh}
|
13
|
+
spec.description = %q{Generates saltstack's salt-ssh code for provisioning a new server. Code creates a user to run the rails application; gives that user sudo privileges without a password; installs: elasticsearch, nodejs, mysql, nginx, and rails. In the case of mysql, the code setsup a user with only the privileges needed to run a rails application.}
|
14
|
+
spec.homepage = "https://github.com/vmcilwain/salted_rails_server"
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
17
|
+
# delete this section to allow pushing this gem to any host.
|
18
|
+
# if spec.respond_to?(:metadata)
|
19
|
+
# spec.metadata['allowed_push_host'] = 'http://rubygems.org'
|
20
|
+
# else
|
21
|
+
# raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
22
|
+
# end
|
23
|
+
|
24
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
25
|
+
spec.bindir = "exe"
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_development_dependency "bundler", "~> 1.9"
|
30
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: salted_rails_server
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Vell
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-03-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.9'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.9'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
description: 'Generates saltstack''s salt-ssh code for provisioning a new server.
|
42
|
+
Code creates a user to run the rails application; gives that user sudo privileges
|
43
|
+
without a password; installs: elasticsearch, nodejs, mysql, nginx, and rails. In
|
44
|
+
the case of mysql, the code setsup a user with only the privileges needed to run
|
45
|
+
a rails application.'
|
46
|
+
email:
|
47
|
+
- lovell.mcilwain@gmail.com
|
48
|
+
executables: []
|
49
|
+
extensions: []
|
50
|
+
extra_rdoc_files: []
|
51
|
+
files:
|
52
|
+
- ".gitignore"
|
53
|
+
- ".travis.yml"
|
54
|
+
- CODE_OF_CONDUCT.md
|
55
|
+
- Gemfile
|
56
|
+
- README.md
|
57
|
+
- Rakefile
|
58
|
+
- bin/console
|
59
|
+
- bin/setup
|
60
|
+
- lib/generators/salted_rails_server/salted_rails_server_generator.rb
|
61
|
+
- lib/generators/salted_rails_server/templates/pillars/default/init.sls
|
62
|
+
- lib/generators/salted_rails_server/templates/pillars/top.sls
|
63
|
+
- lib/generators/salted_rails_server/templates/roster
|
64
|
+
- lib/generators/salted_rails_server/templates/states/elasticsearch.sls
|
65
|
+
- lib/generators/salted_rails_server/templates/states/mysql.sls
|
66
|
+
- lib/generators/salted_rails_server/templates/states/nginx.sls
|
67
|
+
- lib/generators/salted_rails_server/templates/states/node.sls
|
68
|
+
- lib/generators/salted_rails_server/templates/states/rails.sls
|
69
|
+
- lib/generators/salted_rails_server/templates/states/rvm.sls
|
70
|
+
- lib/generators/salted_rails_server/templates/states/setup.sls
|
71
|
+
- lib/generators/salted_rails_server/templates/states/user.sls
|
72
|
+
- lib/salted_rails_server.rb
|
73
|
+
- lib/salted_rails_server/version.rb
|
74
|
+
- salted_rails_server.gemspec
|
75
|
+
homepage: https://github.com/vmcilwain/salted_rails_server
|
76
|
+
licenses: []
|
77
|
+
metadata: {}
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options: []
|
80
|
+
require_paths:
|
81
|
+
- lib
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
requirements: []
|
93
|
+
rubyforge_project:
|
94
|
+
rubygems_version: 2.4.6
|
95
|
+
signing_key:
|
96
|
+
specification_version: 4
|
97
|
+
summary: Provisiona rails server using saltstacks's salt-ssh
|
98
|
+
test_files: []
|
99
|
+
has_rdoc:
|