escualo 0.9.1 → 1.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/lib/commands/artifact.rb +6 -1
- data/lib/commands/bootstrap.rb +4 -21
- data/lib/commands/plugin.rb +7 -1
- data/lib/commands/script.rb +1 -1
- data/lib/escualo/bootstrap.rb +2 -19
- data/lib/escualo/env.rb +3 -1
- data/lib/escualo/gems.rb +9 -0
- data/lib/escualo/plugin/monit.rb +24 -0
- data/lib/escualo/plugin.rb +2 -1
- data/lib/escualo/version.rb +1 -1
- data/lib/escualo.rb +1 -0
- metadata +17 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ca67b509144fad6dbaf8a507cb5caeb31dc07dc
|
4
|
+
data.tar.gz: 22bd4bb34946705c6a8e285ff831e374a1283337
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5dd59f3fe505e7d01b68fccf8a2ed86013fdf88df85673f55367504f4918558a48521a3676e0f95a7b854d29e0de9565d2369b2b6734c7796495ef87bd2937e2
|
7
|
+
data.tar.gz: f9d999c5a5245c8935b3607b566791e151d01c3f52de8ef0f594be1dfa53eedad2fa4b3fbc529625c4c948d8b126c300cc693e39fa08b29fbbb98732562ae391
|
data/lib/commands/artifact.rb
CHANGED
@@ -15,7 +15,12 @@ command 'artifact destroy' do |c|
|
|
15
15
|
name = args.first
|
16
16
|
|
17
17
|
Escualo::Artifact.destroy(ssh, name)
|
18
|
-
|
18
|
+
|
19
|
+
if !Escualo::Artifact.present? ssh, name
|
20
|
+
say "#{name} destroyed successfully"
|
21
|
+
else
|
22
|
+
abort "Could not destroy artifact #{name}"
|
23
|
+
end
|
19
24
|
end
|
20
25
|
end
|
21
26
|
|
data/lib/commands/bootstrap.rb
CHANGED
@@ -1,28 +1,15 @@
|
|
1
|
-
def ask_monit_password(options)
|
2
|
-
password = ask('Monit Password: ') { |q| q.echo = '*' }
|
3
|
-
options.default monit_password: password
|
4
|
-
end
|
5
|
-
|
6
1
|
command 'bootstrap' do |c|
|
7
2
|
c.syntax = 'escualo bootstrap'
|
8
3
|
c.description = 'Prepare environment to be an escualo host'
|
9
4
|
c.option '--swap', TrueClass, 'Setup swap?'
|
10
|
-
c.option '--monit-version VERSION', String, 'Monit version'
|
11
|
-
c.option '--monit-password PASSWORD', String, 'Monit password. Will be prompted otherwise'
|
12
|
-
c.option '--no-monit', TrueClass, 'Skip monit installation'
|
13
5
|
c.option '--env ENVIRONMENT', String, 'Environment. Valid options are development and production. default is production'
|
14
6
|
c.option '--with-rbenv', TrueClass, 'Use rbenv instead of native ruby installation'
|
15
|
-
|
16
7
|
c.option '-f', '--force', TrueClass, 'Force bootstrap even if already done?'
|
17
8
|
|
18
9
|
c.ssh_action do |_args, options, ssh|
|
19
|
-
|
20
|
-
options.default monit_version: '5.16',
|
21
|
-
env: 'production'
|
10
|
+
options.default env: 'production'
|
22
11
|
|
23
|
-
do_unless Escualo::
|
24
|
-
'This host has already been bootstrapped',
|
25
|
-
options do
|
12
|
+
do_unless Escualo::Bootstrap.check(ssh), 'This host has already been bootstrapped', options do
|
26
13
|
step 'Configuring variables...' do
|
27
14
|
Escualo::Env.setup ssh
|
28
15
|
Escualo::Env.set_builtins ssh, options
|
@@ -33,23 +20,19 @@ command 'bootstrap' do |c|
|
|
33
20
|
Escualo::Bootstrap.install_ruby ssh, options
|
34
21
|
end
|
35
22
|
|
36
|
-
step 'Installing and configuring monit...' do
|
37
|
-
Escualo::Bootstrap.setup_monit ssh, options
|
38
|
-
end unless options.no_monit
|
39
|
-
|
40
23
|
step 'Enabling swap...' do
|
41
24
|
Escualo::Bootstrap.enable_swap ssh
|
42
25
|
end if options.swap
|
43
26
|
|
44
27
|
step 'Installing gems...' do
|
45
|
-
Escualo::
|
28
|
+
Escualo::Gems.install ssh, options
|
46
29
|
end
|
47
30
|
|
48
31
|
step 'Setup artifact directories...' do
|
49
32
|
Escualo::Artifact.setup ssh
|
50
33
|
end
|
51
34
|
|
52
|
-
if Escualo::
|
35
|
+
if Escualo::Bootstrap.check ssh
|
53
36
|
say 'Host bootstrapped successfully '
|
54
37
|
else
|
55
38
|
abort 'bootstrapping failed'
|
data/lib/commands/plugin.rb
CHANGED
@@ -2,12 +2,18 @@ command 'plugin install' do |c|
|
|
2
2
|
c.syntax = 'escualo plugin install <plugin>'
|
3
3
|
c.description = "Install plugin on host. Valid plugins are #{Escualo::Plugin::PLUGINS.join(', ')}"
|
4
4
|
c.option '--nginx-conf FILENAME', String, 'ningix config file, only for nginx plugin'
|
5
|
+
|
5
6
|
c.option '--rabbit-admin-password PASSWORD', String, 'rabbitmq admin password, only for rabbit plugin'
|
7
|
+
|
6
8
|
c.option '--pg-version VERSION', String, 'PostgreSQL major and minor version. Default is 9.3, only for postgre plugin'
|
7
9
|
|
10
|
+
c.option '--monit-version VERSION', String, 'Monit version. Default is 5.16'
|
11
|
+
c.option '--monit-password PASSWORD', String, 'Monit password. Required with monit plugin'
|
12
|
+
|
8
13
|
c.option '-f', '--force', TrueClass, 'Force reinstalling even if already done'
|
9
14
|
c.ssh_action do |args, options, ssh|
|
10
|
-
options.default pg_version: '9.3'
|
15
|
+
options.default pg_version: '9.3',
|
16
|
+
monit_version: '5.16'
|
11
17
|
|
12
18
|
plugin = args.first
|
13
19
|
say "Installing #{plugin}"
|
data/lib/commands/script.rb
CHANGED
@@ -16,13 +16,13 @@ command 'script' do |c|
|
|
16
16
|
mode.start! options
|
17
17
|
|
18
18
|
file = YAML.load_file args.first
|
19
|
+
|
19
20
|
local_ssh = Net::SSH::Connection::LocalSession.new
|
20
21
|
delegated_options = Escualo::Script.delegated_options options
|
21
22
|
|
22
23
|
step 'Running local commands...' do
|
23
24
|
mode.run_commands_for! file['local'], delegated_options, local_ssh, options
|
24
25
|
end
|
25
|
-
|
26
26
|
step 'Running remote commands...' do
|
27
27
|
Net::SSH.with_session(ssh_session_options) do |ssh|
|
28
28
|
mode.run_commands_for! file['remote'], ssh, options
|
data/lib/escualo/bootstrap.rb
CHANGED
@@ -11,7 +11,6 @@ module Escualo
|
|
11
11
|
libreadline6-dev \
|
12
12
|
curl \
|
13
13
|
git \
|
14
|
-
monit \
|
15
14
|
libssl-dev \
|
16
15
|
zlib1g \
|
17
16
|
zlib1g-dev \
|
@@ -48,24 +47,8 @@ module Escualo
|
|
48
47
|
echo '/swapfile none swap sw 0 0' >> /etc/fstab}
|
49
48
|
end
|
50
49
|
|
51
|
-
def self.
|
52
|
-
ssh.
|
53
|
-
service monit stop
|
54
|
-
cd /tmp &&
|
55
|
-
wget https://mmonit.com/monit/dist/binary/5.16/monit-#{options.monit_version}-linux-x64.tar.gz &&
|
56
|
-
tar -xzf monit-#{options.monit_version}-linux-x64.tar.gz &&
|
57
|
-
cp monit-#{options.monit_version}/bin/monit /usr/bin/monit
|
58
|
-
ln -s /etc/monit/monitrc /etc/monitrc
|
59
|
-
service monit start
|
60
|
-
echo 'set httpd port 2812 and' > /etc/monit/conf.d/web-server
|
61
|
-
echo ' allow 0.0.0.0/0.0.0.0' >> /etc/monit/conf.d/web-server
|
62
|
-
echo ' allow admin:#{options.monit_password}' >> /etc/monit/conf.d/web-server
|
63
|
-
monit reload
|
64
|
-
}, options
|
65
|
-
end
|
66
|
-
|
67
|
-
def self.install_gems(ssh, options)
|
68
|
-
ssh.shell.perform! 'gem install bundler && gem install escualo', options
|
50
|
+
def self.check(ssh)
|
51
|
+
Escualo::Env.present?(ssh, :ESCUALO_BASE_VERSION) && Escualo::Gems.present?(ssh)
|
69
52
|
end
|
70
53
|
end
|
71
54
|
end
|
data/lib/escualo/env.rb
CHANGED
data/lib/escualo/gems.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
module Escualo::Plugin
|
2
|
+
class Monit
|
3
|
+
def run(ssh, options)
|
4
|
+
ssh.perform! %Q{
|
5
|
+
apt-get install monit
|
6
|
+
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
|
17
|
+
}, options
|
18
|
+
end
|
19
|
+
|
20
|
+
def check(ssh, options)
|
21
|
+
ssh.shell.exec!('monit --version').include? 'This is Monit version 5'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/escualo/plugin.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Escualo
|
2
2
|
module Plugin
|
3
|
-
PLUGINS = %w(node haskell docker postgre nginx rabbit mongo)
|
3
|
+
PLUGINS = %w(node haskell docker postgre nginx rabbit mongo monit)
|
4
4
|
|
5
5
|
def self.load(name)
|
6
6
|
"Escualo::Plugin::#{name.capitalize}".constantize.new
|
@@ -14,6 +14,7 @@ module Escualo
|
|
14
14
|
end
|
15
15
|
|
16
16
|
require_relative './plugin/docker'
|
17
|
+
require_relative './plugin/monit'
|
17
18
|
require_relative './plugin/haskell'
|
18
19
|
require_relative './plugin/mongo'
|
19
20
|
require_relative './plugin/nginx'
|
data/lib/escualo/version.rb
CHANGED
data/lib/escualo.rb
CHANGED
@@ -19,6 +19,7 @@ require_relative './ssh'
|
|
19
19
|
require_relative './escualo/version'
|
20
20
|
require_relative './escualo/env'
|
21
21
|
require_relative './escualo/ppa'
|
22
|
+
require_relative './escualo/gems'
|
22
23
|
require_relative './escualo/bootstrap'
|
23
24
|
require_relative './escualo/script'
|
24
25
|
require_relative './escualo/plugin'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: escualo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Franco Leonardo Bulgarelli
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '3.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: docker-api
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
description: |-
|
112
126
|
escualo.rb is command-line tools that implements of the escualo provisioning format used by Mumuki Platform.
|
113
127
|
It allows to deploy mumuki artifacts to any host
|
@@ -134,10 +148,12 @@ files:
|
|
134
148
|
- lib/escualo/artifact.rb
|
135
149
|
- lib/escualo/bootstrap.rb
|
136
150
|
- lib/escualo/env.rb
|
151
|
+
- lib/escualo/gems.rb
|
137
152
|
- lib/escualo/plugin.rb
|
138
153
|
- lib/escualo/plugin/docker.rb
|
139
154
|
- lib/escualo/plugin/haskell.rb
|
140
155
|
- lib/escualo/plugin/mongo.rb
|
156
|
+
- lib/escualo/plugin/monit.rb
|
141
157
|
- lib/escualo/plugin/nginx.rb
|
142
158
|
- lib/escualo/plugin/node.rb
|
143
159
|
- lib/escualo/plugin/postgre.rb
|