linux_provision 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.linux_provision.json +3 -3
- data/CHANGES +4 -0
- data/Gemfile +8 -5
- data/Gemfile.lock +57 -9
- data/README.md +129 -35
- data/Vagrantfile +1 -1
- data/demo/.ruby-gemset +1 -0
- data/demo/.ruby-version +1 -0
- data/demo/Dockerfile +107 -0
- data/demo/Gemfile +7 -0
- data/demo/Gemfile.lock +45 -0
- data/demo/Rakefile +7 -0
- data/demo/app.rb +29 -0
- data/demo/bin/start-server.sh +7 -0
- data/demo/config.ru +3 -0
- data/demo/db/migrate/20140610203958_create_notes.rb +14 -0
- data/demo/db/migrate/20140610204302_add_notes.rb +7 -0
- data/demo/db/schema.rb +26 -0
- data/demo/db_setup.rb +11 -0
- data/demo/note.rb +2 -0
- data/demo/supervisord.conf +8 -0
- data/demo/views/index.erb +10 -0
- data/demo/views/layout.erb +8 -0
- data/demo/views/new.erb +12 -0
- data/demo/views/note.erb +3 -0
- data/docker/postgres/Dockerfile +61 -0
- data/docker/postgres/bin/create_db.sh +14 -0
- data/docker/sshd/Dockerfile +28 -0
- data/docker/supervisord/Dockerfile +28 -0
- data/docker/supervisord/supervisord.conf +8 -0
- data/lib/linux_provision/generic_provision.rb +28 -19
- data/lib/linux_provision/linux_provision.rb +7 -165
- data/lib/linux_provision/linux_provision_scripts.sh +65 -21
- data/lib/linux_provision/version.rb +1 -1
- data/presentation/virtualization/01-vagrant/slides.md +381 -0
- data/presentation/virtualization/02-provision/slides.md +400 -0
- data/presentation/virtualization/03-docker/slides.md +208 -0
- data/presentation/virtualization/04-conclusion/slides.md +36 -0
- data/presentation/virtualization/default.css +59 -0
- data/presentation/virtualization/default.tpl +2 -0
- data/presentation/virtualization/images/chef.jpg +0 -0
- data/presentation/virtualization/images/provisioning.jpg +0 -0
- data/presentation/virtualization/images/vagrant.jpg +0 -0
- data/presentation/virtualization/showoff.json +23 -0
- data/presentation/virtualization/simple.tpl +2 -0
- data/spec/linux_install_spec.rb +9 -2
- data/spec/linux_provision_spec.rb +1 -1
- data/stats/viewstats.json +1 -0
- data/thor/demo_scripts.sh +34 -0
- data/thor/docker.thor +31 -0
- data/thor/linux_install.thor +17 -115
- metadata +40 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67bdabcb3c624c52ba16480c542f22f787e99cdf
|
4
|
+
data.tar.gz: 18653423057d716c0a9d05c47439d070c7c46e17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f861f304edfff539a0043511a30b1e38a033d82df1d00174d4e68e11aac9eee41121ed6f3be0eb5747e126df7494eb64b00985fcc0f610aa680dcfc5b51190f
|
7
|
+
data.tar.gz: a393c7b4d03c02ca0d096e19a4db96c6cbb4c3739713bff428a9b45d4bafe541e6183846845b63df36fffec276e41dd2283d2ea577737f7f5b9ccf48021cb51e
|
data/.linux_provision.json
CHANGED
@@ -9,20 +9,20 @@
|
|
9
9
|
},
|
10
10
|
|
11
11
|
"project": {
|
12
|
-
"home": "#{node.home}/linux_provision",
|
12
|
+
"home": "#{node.home}/linux_provision/demo",
|
13
13
|
"ruby_version": "1.9.3",
|
14
14
|
"gemset": "linux_provision"
|
15
15
|
},
|
16
16
|
|
17
17
|
"postgres": {
|
18
18
|
"hostname": "localhost", "user": "postgres", "password": "postgres",
|
19
|
-
"app_user": "ruby_dev",
|
19
|
+
"app_user": "ruby_dev", "app_password": "ruby_dev",
|
20
20
|
"app_schemas": ["ruby_dev_test", "ruby_dev_dev", "ruby_dev_prod"]
|
21
21
|
},
|
22
22
|
|
23
23
|
"mysql": {
|
24
24
|
"hostname": "localhost", "user": "root", "password": "root",
|
25
|
-
"app_user": "ruby_dev",
|
25
|
+
"app_user": "ruby_dev", "app_password": "ruby_dev",
|
26
26
|
"app_schemas": ["ruby_dev_test", "ruby_dev_dev", "ruby_dev_prod"]
|
27
27
|
}
|
28
28
|
|
data/CHANGES
CHANGED
data/Gemfile
CHANGED
@@ -14,13 +14,16 @@ end
|
|
14
14
|
|
15
15
|
group :test do
|
16
16
|
gem "rspec"
|
17
|
-
gem "mocha"
|
18
17
|
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
group :debug do
|
20
|
+
gem "ruby-debug-base19x", "0.11.30.pre15"
|
21
|
+
gem "ruby-debug-ide", "0.4.23.beta1"
|
22
|
+
end
|
23
|
+
|
24
|
+
group "presentation" do
|
25
|
+
gem "showoff"
|
26
|
+
end
|
24
27
|
|
25
28
|
|
26
29
|
|
data/Gemfile.lock
CHANGED
@@ -1,36 +1,82 @@
|
|
1
1
|
GEM
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
+
addressable (2.3.6)
|
5
|
+
blankslate (2.1.2.4)
|
6
|
+
daemons (1.1.9)
|
7
|
+
debugger-ruby_core_source (1.3.5)
|
4
8
|
diff-lcs (1.2.5)
|
9
|
+
em-websocket (0.3.8)
|
10
|
+
addressable (>= 2.1.1)
|
11
|
+
eventmachine (>= 0.12.9)
|
12
|
+
eventmachine (1.0.3)
|
5
13
|
file_utils (1.0.7)
|
6
14
|
gemcutter (0.7.1)
|
7
15
|
gemspec_deps_gen (1.1.2)
|
8
16
|
bundler
|
9
17
|
file_utils
|
18
|
+
gli (2.11.0)
|
10
19
|
highline (1.6.21)
|
20
|
+
htmlentities (4.3.2)
|
21
|
+
json (1.8.1)
|
11
22
|
json_pure (1.8.1)
|
12
|
-
|
13
|
-
mocha (1.1.0)
|
14
|
-
metaclass (~> 0.0.1)
|
23
|
+
mini_portile (0.6.0)
|
15
24
|
net-ssh (2.9.1)
|
25
|
+
nokogiri (1.6.2.1)
|
26
|
+
mini_portile (= 0.6.0)
|
27
|
+
parslet (1.6.1)
|
28
|
+
blankslate (~> 2.0)
|
29
|
+
rack (1.5.2)
|
30
|
+
rack-protection (1.5.3)
|
31
|
+
rack
|
32
|
+
rake (10.3.2)
|
33
|
+
redcarpet (3.1.2)
|
16
34
|
rspec (3.0.0)
|
17
35
|
rspec-core (~> 3.0.0)
|
18
36
|
rspec-expectations (~> 3.0.0)
|
19
37
|
rspec-mocks (~> 3.0.0)
|
20
|
-
rspec-core (3.0.
|
38
|
+
rspec-core (3.0.2)
|
21
39
|
rspec-support (~> 3.0.0)
|
22
|
-
rspec-expectations (3.0.
|
40
|
+
rspec-expectations (3.0.2)
|
23
41
|
diff-lcs (>= 1.2.0, < 2.0)
|
24
42
|
rspec-support (~> 3.0.0)
|
25
|
-
rspec-mocks (3.0.
|
43
|
+
rspec-mocks (3.0.2)
|
26
44
|
rspec-support (~> 3.0.0)
|
27
|
-
rspec-support (3.0.
|
45
|
+
rspec-support (3.0.2)
|
46
|
+
ruby-debug-base19x (0.11.30.pre15)
|
47
|
+
debugger-ruby_core_source (> 0)
|
48
|
+
rake (>= 0.8.1)
|
49
|
+
ruby-debug-ide (0.4.23.beta1)
|
50
|
+
rake (>= 0.8.1)
|
28
51
|
script_executor (1.4.2)
|
29
52
|
highline (~> 1.6)
|
30
53
|
net-ssh (~> 2.8)
|
31
54
|
text-interpolator (~> 1.0)
|
32
|
-
|
55
|
+
showoff (0.9.8.1)
|
56
|
+
gli (>= 1.3.2)
|
57
|
+
htmlentities
|
58
|
+
json
|
59
|
+
nokogiri
|
60
|
+
parslet
|
61
|
+
redcarpet
|
62
|
+
sinatra (~> 1.3)
|
63
|
+
sinatra-websocket
|
64
|
+
thin (~> 1.3)
|
65
|
+
sinatra (1.4.5)
|
66
|
+
rack (~> 1.4)
|
67
|
+
rack-protection (~> 1.4)
|
68
|
+
tilt (~> 1.3, >= 1.3.4)
|
69
|
+
sinatra-websocket (0.3.0)
|
70
|
+
em-websocket (~> 0.3.6)
|
71
|
+
eventmachine
|
72
|
+
thin (>= 1.3.1)
|
73
|
+
text-interpolator (1.1.5)
|
74
|
+
thin (1.6.2)
|
75
|
+
daemons (>= 1.0.9)
|
76
|
+
eventmachine (>= 1.0.0)
|
77
|
+
rack (>= 1.0.0)
|
33
78
|
thor (0.19.1)
|
79
|
+
tilt (1.4.1)
|
34
80
|
|
35
81
|
PLATFORMS
|
36
82
|
ruby
|
@@ -39,8 +85,10 @@ DEPENDENCIES
|
|
39
85
|
gemcutter (~> 0.7)
|
40
86
|
gemspec_deps_gen (~> 1.1)
|
41
87
|
json_pure (~> 1.8)
|
42
|
-
mocha
|
43
88
|
rspec
|
89
|
+
ruby-debug-base19x (= 0.11.30.pre15)
|
90
|
+
ruby-debug-ide (= 0.4.23.beta1)
|
44
91
|
script_executor (~> 1.4)
|
92
|
+
showoff
|
45
93
|
text-interpolator (~> 1.0)
|
46
94
|
thor (~> 0.19)
|
data/README.md
CHANGED
@@ -1,38 +1,132 @@
|
|
1
1
|
# Linux Provision
|
2
2
|
|
3
|
-
Library and thor tasks for provisioning of Linux computer initial setup for Ruby/Rails development
|
4
|
-
|
5
|
-
|
6
|
-
# $ vagrant box add precise64 http://files.vagrantup.com/precise64.box
|
7
|
-
# $ vagrant init precise64
|
8
|
-
# $ vagrant up
|
9
|
-
# $ vagrant reload
|
10
|
-
# $ vagrant provision
|
11
|
-
# $ vagrant suspend
|
12
|
-
# $ vagrant halt
|
13
|
-
# $ vagrant destroy
|
14
|
-
# $ vagrant box remove precise64
|
15
|
-
#
|
16
|
-
# $ vagrant ssh
|
17
|
-
# $ ssh vagrant@127.0.0.1 -p 2222
|
18
|
-
|
19
|
-
# ```bash
|
20
|
-
# vagrant ssh
|
21
|
-
#
|
22
|
-
# cd /vagrant
|
23
|
-
#
|
24
|
-
# rake db:dev:reset
|
25
|
-
#
|
26
|
-
# rspec
|
27
|
-
#
|
28
|
-
# ASSET_HOST=http://22.22.22.22:3000 rails s
|
29
|
-
# ```
|
30
|
-
#
|
31
|
-
# * and then access it from the browser within [host computer](http://22.22.22.22:3000/app):
|
32
|
-
#
|
33
|
-
# ```
|
34
|
-
# open http://22.22.22.22:3000/app
|
35
|
-
# ```
|
36
|
-
|
37
|
-
# $ vagrant package --vagrantfile Vagrantfile --output linux_provision.box
|
3
|
+
## Library and thor tasks for provisioning of Linux computer initial setup for Ruby/Rails development
|
38
4
|
|
5
|
+
```bash
|
6
|
+
vagrant box add precise64 http://files.vagrantup.com/precise64.box
|
7
|
+
vagrant init precise64
|
8
|
+
|
9
|
+
vagrant up
|
10
|
+
vagrant reload
|
11
|
+
vagrant provision
|
12
|
+
|
13
|
+
vagrant suspend
|
14
|
+
vagrant halt
|
15
|
+
vagrant destroy
|
16
|
+
vagrant box remove precise64
|
17
|
+
|
18
|
+
vagrant ssh
|
19
|
+
|
20
|
+
ssh vagrant@127.0.0.1 -p 2222
|
21
|
+
|
22
|
+
vagrant ssh
|
23
|
+
|
24
|
+
cd /vagrant
|
25
|
+
|
26
|
+
rake db:dev:reset
|
27
|
+
|
28
|
+
rspec
|
29
|
+
|
30
|
+
ASSET_HOST=http://22.22.22.22:3000 rails s
|
31
|
+
```
|
32
|
+
|
33
|
+
and then access it from the browser within [host computer](http://22.22.22.22:3000/app):
|
34
|
+
|
35
|
+
```bash
|
36
|
+
open http://22.22.22.22:3000/app
|
37
|
+
```
|
38
|
+
|
39
|
+
```bash
|
40
|
+
vagrant package --vagrantfile Vagrantfile --output linux_provision.box
|
41
|
+
```
|
42
|
+
|
43
|
+
|
44
|
+
## Docker
|
45
|
+
|
46
|
+
|
47
|
+
docker is an open-source project that makes creating and managing Linux containers really easy.
|
48
|
+
Containers are like extremely lightweight VMs – they allow code to run in isolation from other containers
|
49
|
+
but safely share the machine’s resources, all without the overhead of a hypervisor.
|
50
|
+
|
51
|
+
docker containers can boot extremely fast (in milliseconds!) which gives you unprecedented flexibility
|
52
|
+
in managing load across your cluster. For example, instead of running chef on each of your VMs,
|
53
|
+
it’s faster and more reliable to have your build system create a container and launch it on
|
54
|
+
the appropriate number of CoreOS hosts. When these containers start, they can signal your proxy (via etcd)
|
55
|
+
to start sending them traffic.
|
56
|
+
|
57
|
+
|
58
|
+
## Installation
|
59
|
+
|
60
|
+
* Download and install VirtualBox for OSX
|
61
|
+
|
62
|
+
https://www.virtualbox.org/wiki/Downloads
|
63
|
+
|
64
|
+
* Install boot2docker and docker via homebrew:
|
65
|
+
|
66
|
+
```bash
|
67
|
+
brew install boot2docker
|
68
|
+
```
|
69
|
+
Docker will be installed as an dependency.
|
70
|
+
|
71
|
+
Initialize boot2docker virtual machine:
|
72
|
+
|
73
|
+
```bash
|
74
|
+
boot2docker init
|
75
|
+
```
|
76
|
+
|
77
|
+
Update .bash_profile file:
|
78
|
+
|
79
|
+
|
80
|
+
```bash
|
81
|
+
export DOCKER_HOST=tcp://127.0.0.1:4243
|
82
|
+
```
|
83
|
+
|
84
|
+
Start the docker daemon:
|
85
|
+
|
86
|
+
```bash
|
87
|
+
boot2docker up
|
88
|
+
```
|
89
|
+
|
90
|
+
or down:
|
91
|
+
|
92
|
+
```bash
|
93
|
+
boot2docker down
|
94
|
+
```
|
95
|
+
|
96
|
+
ssh it:
|
97
|
+
|
98
|
+
```bash
|
99
|
+
boot2docker ssh
|
100
|
+
|
101
|
+
# User: docker
|
102
|
+
# Pwd: tcuser
|
103
|
+
```
|
104
|
+
|
105
|
+
Download the small base image named busybox:
|
106
|
+
|
107
|
+
```bash
|
108
|
+
docker pull busybox
|
109
|
+
docker pull ubuntu
|
110
|
+
docker pull centos
|
111
|
+
```
|
112
|
+
|
113
|
+
Run and test as separate command:
|
114
|
+
|
115
|
+
```bash
|
116
|
+
docker run -t -i ubuntu /bin/bash
|
117
|
+
```
|
118
|
+
|
119
|
+
and interactively:
|
120
|
+
|
121
|
+
|
122
|
+
```bash
|
123
|
+
docker run -t -i ubuntu /bin/bash
|
124
|
+
```
|
125
|
+
|
126
|
+
```bash
|
127
|
+
docker build -t demo docker/demo
|
128
|
+
```
|
129
|
+
|
130
|
+
```bash
|
131
|
+
docker run -p 49160:8080 -d busybox
|
132
|
+
```
|
data/Vagrantfile
CHANGED
@@ -44,7 +44,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
44
44
|
# within the machine from a port on the host machine. In the example below,
|
45
45
|
# accessing "localhost:8080" will access port 80 on the guest machine.
|
46
46
|
# config.vm.network "forwarded_port", guest: 80, host: 8080
|
47
|
-
config.vm.network "forwarded_port",
|
47
|
+
config.vm.network "forwarded_port", host: 9292, guest: 9292
|
48
48
|
|
49
49
|
# Create a private network, which allows host-only access to the machine
|
50
50
|
# using a specific IP.
|
data/demo/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
linux_provision_demo
|
data/demo/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3
|
data/demo/Dockerfile
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
FROM ubuntu:14.04
|
2
|
+
|
3
|
+
MAINTAINER Alexander Shvets "alexander.shvets@gmail.com"
|
4
|
+
|
5
|
+
# 1. Install general packages
|
6
|
+
|
7
|
+
RUN apt-get update
|
8
|
+
|
9
|
+
RUN apt-get install -y curl
|
10
|
+
RUN apt-get install -y g++
|
11
|
+
RUN apt-get install -y git
|
12
|
+
RUN apt-get -y -q install libpq-dev
|
13
|
+
|
14
|
+
# for rvm
|
15
|
+
RUN apt-get -y -q install gawk make libreadline6-dev libyaml-dev libsqlite3-dev sqlite3
|
16
|
+
RUN apt-get -y -q install autoconf libgdbm-dev libncurses5-dev automake libtool bison pkg-config libffi-dev
|
17
|
+
|
18
|
+
# 3. Install postgres
|
19
|
+
|
20
|
+
#RUN apt-get -y -q install postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3
|
21
|
+
|
22
|
+
#USER postgres
|
23
|
+
|
24
|
+
#ADD bin/create_db.sh /src/
|
25
|
+
#RUN /src/create_db.sh
|
26
|
+
|
27
|
+
# Adjust PostgreSQL configuration so that remote connections to the
|
28
|
+
# database are possible.
|
29
|
+
#RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf
|
30
|
+
|
31
|
+
# And add ``listen_addresses`` to ``/etc/postgresql/9.3/main/postgresql.conf``
|
32
|
+
#RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf
|
33
|
+
|
34
|
+
# Expose the PostgreSQL port
|
35
|
+
#EXPOSE 5432
|
36
|
+
|
37
|
+
# Add VOLUMEs to allow backup of config, logs and databases
|
38
|
+
#VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
|
39
|
+
|
40
|
+
# Set the default command to run when starting the container
|
41
|
+
#CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"]
|
42
|
+
|
43
|
+
#USER root
|
44
|
+
|
45
|
+
# 3. Install rvm & ruby
|
46
|
+
|
47
|
+
RUN curl -L https://get.rvm.io | bash
|
48
|
+
|
49
|
+
RUN /bin/bash -l -c "source /etc/profile.d/rvm.sh && rvm install ruby-1.9.3"
|
50
|
+
|
51
|
+
# 4. Install project
|
52
|
+
|
53
|
+
# Trick: make bundle command cashable
|
54
|
+
|
55
|
+
WORKDIR /tmp
|
56
|
+
ADD ./Gemfile Gemfile
|
57
|
+
ADD ./Gemfile.lock Gemfile.lock
|
58
|
+
RUN /bin/bash -l -c "rvm --create use 1.9.3@linux_provision_demo && bundle"
|
59
|
+
|
60
|
+
# Add project dir to docker
|
61
|
+
|
62
|
+
ADD . /opt/demo
|
63
|
+
WORKDIR /opt/demo
|
64
|
+
|
65
|
+
# Add 'web' user which will run the application
|
66
|
+
#RUN adduser web --home /home/web --shell /bin/bash --disabled-password --gecos ""
|
67
|
+
|
68
|
+
#RUN chown -R web:web /var/www &&\
|
69
|
+
# mkdir -p /var/bundle &&\
|
70
|
+
# chown -R web:web /var/bundle
|
71
|
+
#RUN su -c "cd /var/www && bundle install --deployment --path /var/bundle" -s /bin/bash -l web
|
72
|
+
#RUN chown -R web:web /var/www
|
73
|
+
#USER web
|
74
|
+
|
75
|
+
#RUN chmod +x /opt/demo/bin/create_db.sh
|
76
|
+
#RUN /bin/bash -l -c "rvm use 1.9.3@linux_provision_demo && rake db:migrate"
|
77
|
+
|
78
|
+
# Make server port available outside
|
79
|
+
EXPOSE 9292
|
80
|
+
|
81
|
+
# Start server
|
82
|
+
#ENTRYPOINT /opt/demo/bin/start-server.sh
|
83
|
+
|
84
|
+
CMD /bin/bash -l -c "rackup"
|
85
|
+
|
86
|
+
# 2. Install sshd
|
87
|
+
|
88
|
+
#RUN apt-get install -y openssh-server supervisor
|
89
|
+
|
90
|
+
#RUN mkdir /var/run/sshd
|
91
|
+
#RUN mkdir -p /var/log/supervisor
|
92
|
+
|
93
|
+
#RUN echo 'root:screencast' | chpasswd
|
94
|
+
|
95
|
+
#EXPOSE 22
|
96
|
+
|
97
|
+
#CMD /usr/sbin/sshd -D
|
98
|
+
|
99
|
+
#ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
100
|
+
|
101
|
+
#CMD ["/usr/bin/supervisord"]
|
102
|
+
|
103
|
+
# boot2docker ip
|
104
|
+
|
105
|
+
# docker build -t demo demo
|
106
|
+
# docker run --rm -p 9292:9292 -e POSTGRESQL_HOST='192.168.59.104' --name demo demo /bin/bash -l -c "rake db:migrate"
|
107
|
+
# docker run --rm -p 9292:9292 -e POSTGRESQL_HOST='192.168.59.104' --name demo demo /bin/bash -l -c "rackup"
|