escualo 0.8.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/commands/plugin.rb +5 -7
- data/lib/commands/script.rb +18 -10
- data/lib/escualo/bootstrap.rb +3 -5
- data/lib/escualo/env.rb +5 -1
- data/lib/escualo/plugin/nginx.rb +4 -4
- data/lib/escualo/plugin.rb +5 -0
- data/lib/escualo/ppa.rb +5 -0
- data/lib/escualo/remote.rb +9 -1
- data/lib/escualo/script.rb +51 -0
- data/lib/escualo/version.rb +1 -1
- data/lib/escualo.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59841e0d8f38aefbe2fd5639987a7a9ebc98e83b
|
4
|
+
data.tar.gz: 4bfefa0fa63748a7af08e6daf8efc2f30522f174
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3439fcb6720ff05c6fbc9aa5772c6de4794406ce3fcaccbac8bbf925b3d2bc31fc73094dc3c0057f72f527a796309478a4376c47cd8613d0257be9d27b43b1e
|
7
|
+
data.tar.gz: d4f1073f77f625d182caa5ce9f811f726c658e6030f8683db3a0a77d569f102efbc3dbe8bb832292fefee23f4937a9b61498848de0affc830ae8904f64c40e51
|
data/lib/commands/plugin.rb
CHANGED
@@ -19,13 +19,11 @@ command 'plugin install' do |c|
|
|
19
19
|
options do
|
20
20
|
|
21
21
|
step "Installing plugin #{plugin}" do
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
else
|
28
|
-
say "Something went wrong"
|
22
|
+
if Escualo::Plugin.run_and_check installer, ssh, options
|
23
|
+
say 'Installed successfully!'
|
24
|
+
else
|
25
|
+
say "Something went wrong"
|
26
|
+
end
|
29
27
|
end
|
30
28
|
end
|
31
29
|
end
|
data/lib/commands/script.rb
CHANGED
@@ -1,30 +1,38 @@
|
|
1
|
-
def run_commands_for!(script, extra='', ssh, options)
|
2
|
-
Escualo::Script.each_command script, extra do |command|
|
3
|
-
puts "Running `#{command}`"
|
4
|
-
ssh.shell.perform! command, options
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
1
|
command 'script' do |c|
|
9
2
|
c.syntax = 'escualo script <FILE>'
|
10
3
|
c.description = 'Runs a escualo configuration'
|
4
|
+
c.option '--dockerized', TrueClass, 'Create a Dockerfile instead of running commands'
|
5
|
+
c.option '--base-image BASE_IMAGE', String, 'Default base image. Only for dockerized runs'
|
6
|
+
|
11
7
|
c.action do |args, options|
|
8
|
+
options.default base_image: 'ubuntu'
|
9
|
+
|
10
|
+
if options.dockerized
|
11
|
+
mode = Escualo::Script::Dockerized.new
|
12
|
+
else
|
13
|
+
mode = Escualo::Script::Standard.new
|
14
|
+
end
|
15
|
+
|
16
|
+
mode.start! options
|
17
|
+
|
12
18
|
file = YAML.load_file args.first
|
13
19
|
local_ssh = Net::SSH::Connection::LocalSession.new
|
14
20
|
delegated_options = Escualo::Script.delegated_options options
|
15
21
|
|
16
22
|
step 'Running local commands...' do
|
17
|
-
run_commands_for! file['local'], delegated_options, local_ssh, options
|
23
|
+
mode.run_commands_for! file['local'], delegated_options, local_ssh, options
|
18
24
|
end
|
19
25
|
|
20
26
|
step 'Running remote commands...' do
|
21
27
|
Net::SSH.with_session(ssh_session_options) do |ssh|
|
22
|
-
run_commands_for! file['remote'], ssh, options
|
28
|
+
mode.run_commands_for! file['remote'], ssh, options
|
23
29
|
end
|
24
30
|
end
|
25
31
|
|
26
32
|
step 'Running deploy commands...' do
|
27
|
-
run_commands_for! file['deploy'], delegated_options, local_ssh, options
|
33
|
+
mode.run_commands_for! file['deploy'], delegated_options, local_ssh, options
|
28
34
|
end
|
35
|
+
|
36
|
+
mode.finish!
|
29
37
|
end
|
30
38
|
end
|
data/lib/escualo/bootstrap.rb
CHANGED
@@ -28,13 +28,11 @@ module Escualo
|
|
28
28
|
}, options
|
29
29
|
ssh.shell.perform! 'rbenv install 2.3.1 && rbenv global 2.3.1 && rbenv rehash', options
|
30
30
|
else
|
31
|
-
ssh.shell.perform! %
|
31
|
+
ssh.shell.perform! %Q{
|
32
32
|
apt-get install software-properties-common -y &&
|
33
|
-
apt-add-repository
|
33
|
+
apt-add-repository #{Escualo::PPA.for 'brightbox/ruby-ng'} &&
|
34
34
|
apt-get update &&
|
35
|
-
apt-get install -y
|
36
|
-
ruby2.3 \
|
37
|
-
ruby2.3-dev
|
35
|
+
apt-get install -y ruby2.3 ruby2.3-dev
|
38
36
|
}, options
|
39
37
|
end
|
40
38
|
end
|
data/lib/escualo/env.rb
CHANGED
@@ -37,10 +37,14 @@ module Escualo
|
|
37
37
|
|
38
38
|
def self.set(ssh, variables)
|
39
39
|
variables.each do |key, value|
|
40
|
-
ssh.exec!(
|
40
|
+
ssh.exec!(set_command key, value)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
def self.set_command(key, value)
|
45
|
+
"echo export #{key}=#{value} > ~/.escualo/vars/#{key}"
|
46
|
+
end
|
47
|
+
|
44
48
|
def self.unset(ssh, variable_names)
|
45
49
|
variable_names.each do |name|
|
46
50
|
ssh.exec!("rm ~/.escualo/vars/#{name}")
|
data/lib/escualo/plugin/nginx.rb
CHANGED
@@ -4,10 +4,10 @@ module Escualo::Plugin
|
|
4
4
|
config = options.nginx_conf.try { |it| File.read it }
|
5
5
|
|
6
6
|
ssh.perform! %Q{
|
7
|
-
sudo add-apt-repository
|
8
|
-
sudo apt-get update &&
|
9
|
-
sudo apt-get install nginx -y &&
|
10
|
-
#{config ? "/etc/nginx/nginx.conf < cat #{config} && " : ''}
|
7
|
+
sudo add-apt-repository #{Escualo::PPA.for 'nginx/stable'} &&
|
8
|
+
sudo apt-get update &&
|
9
|
+
sudo apt-get install nginx -y &&
|
10
|
+
#{config ? "/etc/nginx/nginx.conf < cat #{config} && " : ''}
|
11
11
|
service nginx restart
|
12
12
|
}, options
|
13
13
|
end
|
data/lib/escualo/plugin.rb
CHANGED
data/lib/escualo/ppa.rb
ADDED
data/lib/escualo/remote.rb
CHANGED
@@ -2,10 +2,18 @@ module Escualo
|
|
2
2
|
module Remote
|
3
3
|
def self.attach(dir, name)
|
4
4
|
remote_name = "escualo-#{name}-#{$hostname}"
|
5
|
-
remote_url =
|
5
|
+
remote_url = remote_git_url(name)
|
6
6
|
%x{cd #{dir} && git remote add #{remote_name} #{remote_url}}
|
7
7
|
end
|
8
8
|
|
9
|
+
def self.remote_git_url(name)
|
10
|
+
if $ssh_remote
|
11
|
+
"ssh://#{$username}@#{$hostname}:#{$ssh_port}/var/repo/#{name}.git"
|
12
|
+
else
|
13
|
+
"/var/repo/#{name}.git"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
9
17
|
def self.clone(dir, repo, options)
|
10
18
|
repo_url = "https://github.com/#{repo}"
|
11
19
|
%x{git clone #{repo_url} #{dir}}
|
data/lib/escualo/script.rb
CHANGED
@@ -14,6 +14,57 @@ module Escualo
|
|
14
14
|
options.verbose && '--verbose'
|
15
15
|
].compact.join(' ')
|
16
16
|
end
|
17
|
+
|
18
|
+
class Mode
|
19
|
+
def run_commands_for!(script, extra='', ssh, options)
|
20
|
+
Escualo::Script.each_command script, extra do |command|
|
21
|
+
run_command! command, ssh, options
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Standard < Mode
|
27
|
+
def start!(*)
|
28
|
+
end
|
29
|
+
|
30
|
+
def run_command!(command, ssh, options)
|
31
|
+
ssh.shell.perform! command, options
|
32
|
+
end
|
33
|
+
|
34
|
+
def finish!
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class Dockerized < Mode
|
39
|
+
attr_accessor :dockerfile
|
40
|
+
|
41
|
+
def start!(options)
|
42
|
+
@dockerfile = "
|
43
|
+
FROM #{base_image options}
|
44
|
+
MAINTAINER #{ENV['USER']}
|
45
|
+
RUN apt-get update && apt-get install ruby ruby-dev build-essential -y
|
46
|
+
RUN gem install escualo
|
47
|
+
"
|
48
|
+
end
|
49
|
+
|
50
|
+
def base_image(options)
|
51
|
+
if options.base_image == 'ubuntu'
|
52
|
+
'ubuntu:xenial'
|
53
|
+
elsif options.base_image == 'debian'
|
54
|
+
'debian:jessie'
|
55
|
+
else
|
56
|
+
raise "Unsupported base image #{options.base_image}. Only debian and ubuntu are supported"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def run_command!(command, ssh, options)
|
61
|
+
@dockerfile << "RUN #{command}\n"
|
62
|
+
end
|
63
|
+
|
64
|
+
def finish!
|
65
|
+
File.write('Dockerfile', @dockerfile)
|
66
|
+
end
|
67
|
+
end
|
17
68
|
end
|
18
69
|
end
|
19
70
|
|
data/lib/escualo/version.rb
CHANGED
data/lib/escualo.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: escualo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Franco Leonardo Bulgarelli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|
@@ -142,6 +142,7 @@ files:
|
|
142
142
|
- lib/escualo/plugin/node.rb
|
143
143
|
- lib/escualo/plugin/postgre.rb
|
144
144
|
- lib/escualo/plugin/rabbit.rb
|
145
|
+
- lib/escualo/ppa.rb
|
145
146
|
- lib/escualo/remote.rb
|
146
147
|
- lib/escualo/script.rb
|
147
148
|
- lib/escualo/version.rb
|