escualo 1.0.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/escualo +5 -7
- data/lib/command.rb +6 -7
- data/lib/commands/artifact.rb +47 -79
- data/lib/commands/bootstrap.rb +30 -25
- data/lib/commands/deploy.rb +8 -6
- data/lib/commands/env.rb +12 -9
- data/lib/commands/globals.rb +7 -36
- data/lib/commands/plugin.rb +9 -19
- data/lib/commands/rake.rb +3 -5
- data/lib/commands/remote.rb +6 -5
- data/lib/commands/script.rb +6 -25
- data/lib/commands/upload.rb +2 -2
- data/lib/escualo/apt_get.rb +10 -0
- data/lib/escualo/artifact.rb +40 -43
- data/lib/escualo/base.rb +36 -15
- data/lib/escualo/env.rb +22 -32
- data/lib/escualo/gems.rb +4 -4
- data/lib/escualo/plugin/docker.rb +4 -4
- data/lib/escualo/plugin/haskell.rb +4 -4
- data/lib/escualo/plugin/mongo.rb +6 -10
- data/lib/escualo/plugin/monit.rb +16 -17
- data/lib/escualo/plugin/nginx.rb +7 -10
- data/lib/escualo/plugin/node.rb +6 -8
- data/lib/escualo/plugin/postgres.rb +26 -0
- data/lib/escualo/plugin/rabbit.rb +9 -14
- data/lib/escualo/plugin.rb +1 -6
- data/lib/escualo/remote.rb +18 -20
- data/lib/escualo/ruby.rb +17 -0
- data/lib/escualo/script.rb +7 -61
- data/lib/escualo/session/docker_session.rb +56 -0
- data/lib/escualo/session/local_session.rb +23 -0
- data/lib/escualo/session/remote_session.rb +42 -0
- data/lib/escualo/session.rb +83 -0
- data/lib/escualo/version.rb +2 -2
- data/lib/escualo.rb +13 -1
- data/lib/ssh.rb +26 -4
- data/lib/templates/codechange.sh.erb +1 -1
- data/lib/templates/init.sh.erb +7 -0
- data/lib/templates/post-receive.sh.erb +8 -2
- metadata +9 -9
- data/lib/commands/base.rb +0 -8
- data/lib/escualo/bootstrap.rb +0 -37
- data/lib/escualo/plugin/postgre.rb +0 -23
- data/lib/ssh/local_session.rb +0 -44
- data/lib/ssh/perform.rb +0 -9
- data/lib/ssh/session.rb +0 -61
- data/lib/ssh/upload.rb +0 -9
data/lib/escualo/artifact.rb
CHANGED
@@ -1,72 +1,69 @@
|
|
1
1
|
module Escualo
|
2
2
|
module Artifact
|
3
|
-
def self.setup(
|
4
|
-
|
5
|
-
|
6
|
-
mkdir -p /var/scripts/
|
7
|
-
}
|
3
|
+
def self.setup(session)
|
4
|
+
session.tell_all! 'mkdir -p /var/repo/',
|
5
|
+
'mkdir -p /var/scripts/'
|
8
6
|
end
|
9
7
|
|
10
|
-
def self.destroy(
|
8
|
+
def self.destroy(session, name)
|
11
9
|
raise 'name must not be blank' if name.blank?
|
12
10
|
raise 'name must not contains wildcards' if name.include?('*')
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
session.tell_all! "rm -rf /var/scripts/#{name}",
|
13
|
+
"rm -rf /var/repo/#{name}.git",
|
14
|
+
"rm -f /etc/monit/conf.d/escualo-#{name}",
|
15
|
+
"rm -f /etc/init/#{name}.conf",
|
16
|
+
"test ! -e /var/repo/#{name}.git"
|
18
17
|
end
|
19
18
|
|
20
|
-
def self.present?(
|
21
|
-
list(
|
19
|
+
def self.present?(session, name)
|
20
|
+
list(session).include? name rescue false
|
22
21
|
end
|
23
22
|
|
24
|
-
def self.create_scripts_dir(
|
25
|
-
|
23
|
+
def self.create_scripts_dir(session, name)
|
24
|
+
session.tell! "mkdir -p /var/scripts/#{name}"
|
26
25
|
end
|
27
26
|
|
28
|
-
def self.create_init_script(
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
def self.create_init_script(session, options)
|
28
|
+
session.upload_template! "/var/scripts/#{options[:name]}/init",
|
29
|
+
'init.sh',
|
30
|
+
options
|
31
|
+
session.tell! "chmod +x /var/scripts/#{options[:name]}/init"
|
33
32
|
end
|
34
33
|
|
35
|
-
def self.list(
|
36
|
-
|
34
|
+
def self.list(session)
|
35
|
+
session.ask('ls /var/repo/').captures(/(.*)\.git/).map { $1 }
|
37
36
|
end
|
38
37
|
|
39
|
-
def self.create_push_infra(
|
38
|
+
def self.create_push_infra(session, options)
|
40
39
|
name = options[:name]
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
git init --bare
|
50
|
-
}
|
40
|
+
session.tell_all! 'cd /var',
|
41
|
+
'mkdir -p www',
|
42
|
+
'mkdir -p repo',
|
43
|
+
'cd repo',
|
44
|
+
"rm -rf #{name}.git",
|
45
|
+
"mkdir #{name}.git",
|
46
|
+
"cd #{name}.git",
|
47
|
+
'git init --bare'
|
51
48
|
hook_file = "/var/repo/#{name}.git/hooks/post-receive"
|
52
|
-
|
53
|
-
|
49
|
+
session.upload_template! hook_file, 'post-receive.sh', options
|
50
|
+
session.tell! "chmod +x #{hook_file}"
|
54
51
|
end
|
55
52
|
|
56
|
-
def self.configure_monit(
|
53
|
+
def self.configure_monit(session, options)
|
57
54
|
name = options[:name]
|
58
|
-
|
59
|
-
|
60
|
-
|
55
|
+
session.tell! 'mkdir -p /etc/monit/conf.d/'
|
56
|
+
session.upload_template! "/etc/monit/conf.d/escualo-#{name}", 'monit.conf', options
|
57
|
+
session.tell! 'monit reload'
|
61
58
|
end
|
62
59
|
|
63
|
-
def self.create_codechange_script(
|
64
|
-
|
65
|
-
|
60
|
+
def self.create_codechange_script(session, name)
|
61
|
+
session.upload_template! "/var/scripts/#{name}/codechange", 'codechange.sh', name: name
|
62
|
+
session.tell! "chmod +x /var/scripts/#{name}/codechange"
|
66
63
|
end
|
67
64
|
|
68
|
-
def self.configure_upstart(
|
69
|
-
|
65
|
+
def self.configure_upstart(session, options)
|
66
|
+
session.upload_template! "/etc/init/#{options[:name]}.conf", 'upstart.conf', options
|
70
67
|
end
|
71
68
|
end
|
72
69
|
end
|
data/lib/escualo/base.rb
CHANGED
@@ -1,20 +1,41 @@
|
|
1
1
|
module Escualo
|
2
2
|
module Base
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
build-essential \
|
9
|
-
libreadline6 \
|
10
|
-
libreadline6-dev \
|
11
|
-
curl \
|
12
|
-
git \
|
13
|
-
libssl-dev \
|
14
|
-
zlib1g \
|
15
|
-
zlib1g-dev \
|
16
|
-
libreadline-dev
|
17
|
-
}, options
|
3
|
+
DEPS = %w(autoconf bison build-essential libreadline6 libreadline6-dev
|
4
|
+
curl git libssl-dev zlib1g zlib1g-dev libreadline-dev software-properties-common wget ca-certificates sudo upstart)
|
5
|
+
|
6
|
+
def self.install(session)
|
7
|
+
Escualo::AptGet.install session, DEPS.join(' ')
|
18
8
|
end
|
9
|
+
|
10
|
+
def self.add_repositories(session)
|
11
|
+
session.tell_all! 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list',
|
12
|
+
'wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -'
|
13
|
+
|
14
|
+
session.tell_all! 'echo "deb http://www.rabbitmq.com/debian testing main" >> /etc/apt/sources.list',
|
15
|
+
'wget --quiet -O - https://www.rabbitmq.com/rabbitmq-signing-key-public.asc | apt-key add -'
|
16
|
+
|
17
|
+
session.tell! %Q{echo 'deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse' | tee /etc/apt/sources.list.d/mongodb-org-3.2.list}
|
18
|
+
session.tell! %Q{apt-add-repository '#{Escualo::PPA.for 'brightbox/ruby-ng'}'}
|
19
|
+
session.tell! %Q{add-apt-repository '#{Escualo::PPA.for 'nginx/stable'}'}
|
20
|
+
|
21
|
+
session.tell! 'apt-get update'
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.configure_locales(session)
|
25
|
+
session.tell_all! 'apt-get purge -y locales',
|
26
|
+
"echo 'locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8' |debconf-set-selections",
|
27
|
+
"echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections"
|
28
|
+
Escualo::AptGet.install session, 'locales', update: true
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.enable_swap(session)
|
32
|
+
session.tell_all! 'test -e /swapfile || fallocate -l 4 G /swapfile',
|
33
|
+
'chmod 600 /swapfile',
|
34
|
+
'mkswap /swapfile',
|
35
|
+
'swapon /swapfile',
|
36
|
+
'swapon -s',
|
37
|
+
%Q{echo '/swapfile none swap sw 0 0' >> /etc/ fstab}
|
38
|
+
end
|
39
|
+
|
19
40
|
end
|
20
41
|
end
|
data/lib/escualo/env.rb
CHANGED
@@ -1,59 +1,49 @@
|
|
1
1
|
module Escualo
|
2
2
|
module Env
|
3
|
-
def self.setup(
|
3
|
+
def self.setup(session)
|
4
4
|
source_escualorc = "'source ~/.escualorc'"
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
grep -q #{source_escualorc} ~/.bashrc || echo #{source_escualorc} >> ~/.bashrc
|
10
|
-
}
|
5
|
+
session.tell_all! 'mkdir -p ~/.escualo/vars',
|
6
|
+
%q{echo 'for var in ~/.escualo/vars/*; do source $var; done' > ~/.escualorc},
|
7
|
+
%q{chmod u+x ~/.escualorc},
|
8
|
+
"grep -q #{source_escualorc} ~/.bashrc || echo #{source_escualorc} >> ~/.bashrc"
|
11
9
|
end
|
12
10
|
|
13
|
-
def self.
|
14
|
-
|
11
|
+
def self.set_builtins(session, options)
|
12
|
+
set session, ESCUALO_BASE_VERSION: Escualo::BASE_VERSION
|
13
|
+
set session, Escualo::Env.locale_variables
|
14
|
+
set session, Escualo::Env.environment_variables(options.env)
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.
|
18
|
-
|
19
|
-
set ssh, Escualo::Env.locale_variables
|
20
|
-
set ssh, Escualo::Env.environment_variables(options.env)
|
17
|
+
def self.list(session)
|
18
|
+
session.ask('cat ~/.escualo/vars/*').gsub('export ', '')
|
21
19
|
end
|
22
20
|
|
23
|
-
def self.
|
24
|
-
|
21
|
+
def self.clean(session, options)
|
22
|
+
session.tell! 'rm ~/.escualo/vars/*'
|
23
|
+
set_builtins session, options
|
25
24
|
end
|
26
25
|
|
27
|
-
def self.
|
28
|
-
|
29
|
-
ssh.exec!("rm ~/.escualo/vars/*")
|
30
|
-
set_builtins ssh, options
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.present?(ssh, variable)
|
34
|
-
value = get(ssh, variable)
|
35
|
-
value.present?
|
26
|
+
def self.present?(session, variable)
|
27
|
+
get(session, variable).present?
|
36
28
|
rescue
|
37
29
|
false
|
38
30
|
end
|
39
31
|
|
40
|
-
def self.get(
|
41
|
-
|
32
|
+
def self.get(session, variable)
|
33
|
+
session.ask("cat ~/.escualo/vars/#{variable}")
|
42
34
|
end
|
43
35
|
|
44
|
-
def self.set(
|
45
|
-
variables.
|
46
|
-
ssh.exec!(set_command key, value)
|
47
|
-
end
|
36
|
+
def self.set(session, variables)
|
37
|
+
session.tell_all! *variables.map { |key, value| set_command key, value }
|
48
38
|
end
|
49
39
|
|
50
40
|
def self.set_command(key, value)
|
51
41
|
"echo export #{key}=#{value} > ~/.escualo/vars/#{key}"
|
52
42
|
end
|
53
43
|
|
54
|
-
def self.unset(
|
44
|
+
def self.unset(session, variable_names)
|
55
45
|
variable_names.each do |name|
|
56
|
-
|
46
|
+
session.tell!("rm ~/.escualo/vars/#{name}")
|
57
47
|
end
|
58
48
|
end
|
59
49
|
|
data/lib/escualo/gems.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
module Escualo::Gems
|
2
|
-
def self.install(
|
3
|
-
|
2
|
+
def self.install(session)
|
3
|
+
session.tell! "gem install bundler && gem install escualo -v #{Escualo::VERSION}"
|
4
4
|
end
|
5
5
|
|
6
|
-
def self.
|
7
|
-
|
6
|
+
def self.installed?(session)
|
7
|
+
session.check? 'escualo --version', "escualo #{Escualo::VERSION}"
|
8
8
|
end
|
9
9
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Escualo::Plugin
|
2
2
|
class Docker
|
3
|
-
def run(
|
4
|
-
|
3
|
+
def run(session, _options)
|
4
|
+
Escualo::AptGet.install session, 'docker.io'
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
|
7
|
+
def installed?(session, _options)
|
8
|
+
session.check? 'docker -v', 'Docker version'
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Escualo::Plugin
|
2
2
|
class Haskell
|
3
|
-
def run(
|
4
|
-
|
3
|
+
def run(session, _options)
|
4
|
+
Escualo::AptGet.install session, 'haskell-platform'
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
|
7
|
+
def installed?(session, _options)
|
8
|
+
session.check? 'ghc --version', 'The Glorious Glasgow Haskell Compilation System'
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
data/lib/escualo/plugin/mongo.rb
CHANGED
@@ -1,17 +1,13 @@
|
|
1
1
|
module Escualo::Plugin
|
2
2
|
class Mongo
|
3
|
-
def run(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
apt-get install -y --force-yes mongodb-org && \
|
8
|
-
echo '' >> /etc/init/mongodb && \
|
9
|
-
echo 'respawn' >> /etc/init/mongodb
|
10
|
-
}, options
|
3
|
+
def run(session, _options)
|
4
|
+
Escualo::AptGet.install session, 'mongodb-org'
|
5
|
+
session.tell_all! "echo '' >> /etc/init/mongodb",
|
6
|
+
"echo 'respawn' >> /etc/init/mongodb"
|
11
7
|
end
|
12
8
|
|
13
|
-
def
|
14
|
-
|
9
|
+
def installed?(session, _options)
|
10
|
+
session.check? 'mongod --version', 'db version v3.2'
|
15
11
|
end
|
16
12
|
end
|
17
13
|
end
|
data/lib/escualo/plugin/monit.rb
CHANGED
@@ -1,24 +1,23 @@
|
|
1
1
|
module Escualo::Plugin
|
2
2
|
class Monit
|
3
|
-
def run(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
}, options
|
3
|
+
def run(session, options)
|
4
|
+
Escualo::AptGet.install session, 'monit'
|
5
|
+
|
6
|
+
session.tell_all! 'service monit stop',
|
7
|
+
'cd /tmp',
|
8
|
+
"wget https://mmonit.com/monit/dist/binary/5.16/monit-#{options.monit_version}-linux-x64.tar.gz",
|
9
|
+
"tar -xzf monit-#{options.monit_version}-linux-x64.tar.gz",
|
10
|
+
"cp monit-#{options.monit_version}/bin/monit /usr/bin/monit",
|
11
|
+
'ln -s /etc/monit/monitrc /etc/monitrc',
|
12
|
+
'service monit start',
|
13
|
+
"echo 'set httpd port 2812 and' > /etc/monit/conf.d/web-server",
|
14
|
+
"echo ' allow 0.0.0.0/0.0.0.0' >> /etc/monit/conf.d/web-server",
|
15
|
+
"echo ' allow admin:#{options.monit_password}' >> /etc/monit/conf.d/web-server",
|
16
|
+
"monit reload"
|
18
17
|
end
|
19
18
|
|
20
|
-
def
|
21
|
-
|
19
|
+
def installed?(session, options)
|
20
|
+
session.tell!('monit --version').include? 'This is Monit version 5' rescue false
|
22
21
|
end
|
23
22
|
end
|
24
23
|
end
|
data/lib/escualo/plugin/nginx.rb
CHANGED
@@ -1,19 +1,16 @@
|
|
1
1
|
module Escualo::Plugin
|
2
2
|
class Nginx
|
3
|
-
def run(
|
3
|
+
def run(session, options)
|
4
4
|
config = options.nginx_conf.try { |it| File.read it }
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
#{config ? "/etc/nginx/nginx.conf < cat #{config} && " : ''}
|
11
|
-
service nginx restart
|
12
|
-
}, options
|
6
|
+
Escualo::AptGet.install session, 'nginx'
|
7
|
+
|
8
|
+
session.tell_all! "#{config ? "/etc/nginx/nginx.conf < cat #{config} && " : ''}",
|
9
|
+
'service nginx restart'
|
13
10
|
end
|
14
11
|
|
15
|
-
def
|
16
|
-
|
12
|
+
def installed?(session, _options)
|
13
|
+
session.check? 'nginx -v', 'nginx version: nginx/1'
|
17
14
|
end
|
18
15
|
end
|
19
16
|
end
|
data/lib/escualo/plugin/node.rb
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
module Escualo::Plugin
|
2
2
|
class Node
|
3
|
-
def run(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
nvm install 4.2.4
|
8
|
-
}, options
|
3
|
+
def run(session, _options)
|
4
|
+
session.tell_all! 'curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash',
|
5
|
+
'source ~/.bashrc',
|
6
|
+
'nvm install 4.2.4'
|
9
7
|
end
|
10
8
|
|
11
|
-
def
|
12
|
-
|
9
|
+
def installed?(session, _options)
|
10
|
+
session.tell!('nvm use node').include? 'Now using node v4.2.4' rescue false
|
13
11
|
end
|
14
12
|
end
|
15
13
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Escualo::Plugin
|
2
|
+
class Postgres
|
3
|
+
def run(session, options)
|
4
|
+
raise 'missing pg-username' unless options.pg_username
|
5
|
+
raise 'missing pg-password' unless options.pg_password
|
6
|
+
|
7
|
+
pg_hba_conf = "/etc/postgresql/#{options.pg_version}/main/pg_hba.conf"
|
8
|
+
|
9
|
+
Escualo::AptGet.install session, "postgresql-#{options.pg_version} libpq-dev"
|
10
|
+
|
11
|
+
session.tell_all! "echo 'local all postgres peer' > #{pg_hba_conf}",
|
12
|
+
"echo 'local all postgres peer' >> #{pg_hba_conf}",
|
13
|
+
"echo 'local all all password' >> #{pg_hba_conf}",
|
14
|
+
"echo 'host all all 127.0.0.1/32 md5' >> #{pg_hba_conf}"
|
15
|
+
|
16
|
+
session.tell_all! '/etc/init.d/postgresql restart',
|
17
|
+
'cd /',
|
18
|
+
"echo \"create role #{options.pg_username} with createdb login password '#{options.pg_password}';\" | sudo -u postgres PGDATABASE='' psql"
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def installed?(session, options)
|
23
|
+
session.check? 'psql --version', "psql (PostgreSQL) #{options.pg_version}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -1,22 +1,17 @@
|
|
1
1
|
module Escualo::Plugin
|
2
2
|
class Rabbit
|
3
|
-
def run(
|
4
|
-
raise 'missing rabbit
|
3
|
+
def run(session, options)
|
4
|
+
raise 'missing rabbit-admin-password' unless options.rabbit_admin_password
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
apt-get install rabbitmq-server -y --force-yes && \
|
12
|
-
rabbitmq-plugins enable rabbitmq_management && \
|
13
|
-
rabbitmqctl add_user admin #{options.rabbit_admin_password} && \
|
14
|
-
rabbitmqctl set_user_tags admin administrator
|
15
|
-
}, options
|
6
|
+
Escualo::AptGet.install session, 'rabbitmq-server'
|
7
|
+
|
8
|
+
session.tell_all! 'rabbitmq-plugins enable rabbitmq_management',
|
9
|
+
"rabbitmqctl add_user admin #{options.rabbit_admin_password}",
|
10
|
+
'rabbitmqctl set_user_tags admin administrator'
|
16
11
|
end
|
17
12
|
|
18
|
-
def
|
19
|
-
|
13
|
+
def installed?(session, _options)
|
14
|
+
session.check? 'rabbitmq-server', 'node with name "rabbit" already running'
|
20
15
|
end
|
21
16
|
end
|
22
17
|
end
|
data/lib/escualo/plugin.rb
CHANGED
@@ -5,11 +5,6 @@ module Escualo
|
|
5
5
|
def self.load(name)
|
6
6
|
"Escualo::Plugin::#{name.capitalize}".constantize.new
|
7
7
|
end
|
8
|
-
|
9
|
-
def self.run_and_check(plugin, ssh, options)
|
10
|
-
plugin.run ssh, options
|
11
|
-
plugin.check ssh, options
|
12
|
-
end
|
13
8
|
end
|
14
9
|
end
|
15
10
|
|
@@ -19,5 +14,5 @@ require_relative './plugin/haskell'
|
|
19
14
|
require_relative './plugin/mongo'
|
20
15
|
require_relative './plugin/nginx'
|
21
16
|
require_relative './plugin/node'
|
22
|
-
require_relative './plugin/
|
17
|
+
require_relative './plugin/postgres'
|
23
18
|
require_relative './plugin/rabbit'
|
data/lib/escualo/remote.rb
CHANGED
@@ -1,38 +1,36 @@
|
|
1
1
|
module Escualo
|
2
2
|
module Remote
|
3
|
-
def self.attach(dir, name)
|
4
|
-
remote_name = "escualo-#{name}-#{
|
5
|
-
remote_url = remote_git_url(name)
|
6
|
-
|
3
|
+
def self.attach(session, dir, name, session_options)
|
4
|
+
remote_name = "escualo-#{name}-#{session_options.hostname}"
|
5
|
+
remote_url = remote_git_url(name, session_options)
|
6
|
+
session.tell! "cd #{dir} && git remote add #{remote_name} #{remote_url}"
|
7
7
|
end
|
8
8
|
|
9
|
-
def self.remote_git_url(name)
|
10
|
-
if
|
11
|
-
"ssh://#{$username}@#{$hostname}:#{$ssh_port}/var/repo/#{name}.git"
|
12
|
-
else
|
9
|
+
def self.remote_git_url(name, session_options)
|
10
|
+
if session_options.local || session_options.dockerized
|
13
11
|
"/var/repo/#{name}.git"
|
12
|
+
else
|
13
|
+
"ssh://#{session_options.username}@#{session_options.hostname}:#{session_options.ssh_options[:port]}/var/repo/#{name}.git"
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.clone(dir, repo, options)
|
17
|
+
def self.clone(session, dir, repo, options)
|
18
18
|
repo_url = "https://github.com/#{repo}"
|
19
|
-
|
19
|
+
session.tell! "git clone #{repo_url} #{dir}"
|
20
20
|
if options.tag
|
21
|
-
|
21
|
+
session.tell! "cd #{dir} && git checkout #{options.tag}"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def self.remotes(dir)
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
def self.remotes(session, dir)
|
26
|
+
session
|
27
|
+
.ask("cd #{dir} && git remote show")
|
28
|
+
.split
|
29
|
+
.select { |it| it.start_with? 'escualo-' }
|
29
30
|
end
|
30
31
|
|
31
|
-
def self.push(dir)
|
32
|
-
|
33
|
-
.each do |remote|
|
34
|
-
%x{cd #{dir} && git push #{remote} HEAD}
|
35
|
-
end
|
32
|
+
def self.push(session, dir)
|
33
|
+
session.tell! "cd #{dir} && for r in $(git remote show | grep escualo-); do git push $r HEAD; done"
|
36
34
|
end
|
37
35
|
end
|
38
36
|
end
|
data/lib/escualo/ruby.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module Escualo
|
2
|
+
module Ruby
|
3
|
+
def self.install(session, options)
|
4
|
+
session.tell! 'apt-get purge libruby* -y'
|
5
|
+
if options.with_rbenv
|
6
|
+
session.tell_all! 'curl https://raw.githubusercontent.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash',
|
7
|
+
%Q{echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc},
|
8
|
+
%Q{echo 'eval "$(rbenv init -)"' >> ~/.bashrc}
|
9
|
+
session.tell_all! 'rbenv install 2.3.1',
|
10
|
+
'rbenv global 2.3.1',
|
11
|
+
'rbenv rehash'
|
12
|
+
else
|
13
|
+
Escualo::AptGet.install session, 'ruby2.3 ruby2.3-dev'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|