mimas 0.3.1 → 0.4.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/mimas/commands/provision.rb +4 -1
- data/lib/mimas/commands/push.rb +7 -0
- data/lib/mimas/commands/setup/ruby.rb +2 -2
- data/lib/mimas/deployment/ruby_app.rb +1 -1
- data/lib/mimas/scripts/configure_ruby.sh +10 -11
- data/lib/mimas/server/console.rb +1 -1
- data/lib/mimas/server/ruby.rb +11 -19
- data/lib/mimas/server/software.rb +21 -0
- data/lib/mimas/templates/mimas.env.erb +1 -0
- data/lib/mimas/templates/systemd.service.erb +1 -1
- data/lib/mimas/version.rb +1 -1
- data/lib/mimas.rb +1 -1
- metadata +4 -5
- data/lib/mimas/scripts/install_ruby_prerequisites.sh +0 -26
- data/lib/mimas/server/prerequisites.rb +0 -25
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 89a173c94a94713193d4a7c75a56b3aea832ac73d414fece78c19b4a331e4065
|
|
4
|
+
data.tar.gz: 5cba822934db35c755f15109611c970c9e417309df4888f17a6ec1fc0a485634
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e8a56d19ff9fa37ed56e486b5cc6caedb172ce9b78e8b9232ef6706fa2ed2daef0bbde3ab5721aee683e3f8a2ed0aef09a8fb60c5449085712aeab2751d9cb90
|
|
7
|
+
data.tar.gz: 1a02a80c18fb91f212052d6cbe68bf6b418328e5597611ed95659d34df4bf780558bf05d60ebc642fc2a7f79d86767e1a73aee65e8e72b1a65d8266d9fcc4e19
|
|
@@ -40,9 +40,12 @@ module Mimas
|
|
|
40
40
|
server.install_caddy(sudo_user: sudo_user)
|
|
41
41
|
|
|
42
42
|
unless skip_ruby
|
|
43
|
-
server.
|
|
43
|
+
server.install_server_software(sudo_user: sudo_user)
|
|
44
44
|
server.install_ruby
|
|
45
45
|
end
|
|
46
|
+
|
|
47
|
+
say ""
|
|
48
|
+
say "Your server is provisioned and ready to serve websites."
|
|
46
49
|
end
|
|
47
50
|
end
|
|
48
51
|
end
|
data/lib/mimas/commands/push.rb
CHANGED
|
@@ -16,6 +16,13 @@ module Mimas
|
|
|
16
16
|
server = Config.current.servers[server_name.to_sym]
|
|
17
17
|
site = Config.current.sites[site.to_sym]
|
|
18
18
|
|
|
19
|
+
unless server && site
|
|
20
|
+
say "Server or site not found. Please ensure you've invoked the command correctly.".red
|
|
21
|
+
say ""
|
|
22
|
+
puts Dry::CLI::Banner.call(self, "mimas push")
|
|
23
|
+
exit 1
|
|
24
|
+
end
|
|
25
|
+
|
|
19
26
|
working_copy = `git status --porcelain`
|
|
20
27
|
unless working_copy == ""
|
|
21
28
|
confirm = ask "You have modified files in your working copy, would you like to continue with deployment? (y|n)"
|
|
@@ -2,13 +2,13 @@ module Mimas
|
|
|
2
2
|
module CLI
|
|
3
3
|
module Commands
|
|
4
4
|
class Setup::Ruby < Setup
|
|
5
|
-
desc "Install
|
|
5
|
+
desc "Install server prerequisites and download a pre-built Ruby binary on a server"
|
|
6
6
|
|
|
7
7
|
def call(server_name:, **options)
|
|
8
8
|
server = Config.current.servers[server_name.to_sym]
|
|
9
9
|
sudo_user = options[:user]
|
|
10
10
|
|
|
11
|
-
server.
|
|
11
|
+
server.install_server_software(sudo_user: sudo_user)
|
|
12
12
|
server.install_ruby
|
|
13
13
|
end
|
|
14
14
|
end
|
|
@@ -33,7 +33,7 @@ module Mimas
|
|
|
33
33
|
|
|
34
34
|
say "Running deploy script"
|
|
35
35
|
session.upload StringIO.new(site.deploy), deploy_script_path
|
|
36
|
-
session.run "cd #{remote_destination} && /
|
|
36
|
+
session.run "cd #{remote_destination} && ~/.cargo/bin/rv run sh #{deploy_script}"
|
|
37
37
|
session.run "rm #{deploy_script_path}"
|
|
38
38
|
|
|
39
39
|
say "Setting current symlink"
|
|
@@ -2,18 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
set -e
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
# Install RV
|
|
6
|
+
curl -LsSf https://rv.dev/install | sh
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
source /usr/local/share/chruby/auto.sh
|
|
10
|
-
STRING
|
|
11
|
-
|
|
12
|
-
source /usr/local/share/chruby/chruby.sh
|
|
13
|
-
source /usr/local/share/chruby/auto.sh
|
|
8
|
+
echo 'eval "$(~/.cargo/bin/rv shell init bash)"' >> ~/.profile
|
|
9
|
+
echo 'eval "$(~/.cargo/bin/rv shell completions bash)"' >> ~/.profile
|
|
14
10
|
|
|
15
11
|
echo 'gem: --no-document' >> ~/.gemrc
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
mkdir -p ~/.bundle/
|
|
14
|
+
cat << STRING > ~/.bundle/config
|
|
15
|
+
---
|
|
16
|
+
BUNDLE_WITHOUT: "development:test"
|
|
17
|
+
BUNDLE_FROZEN: "true"
|
|
18
|
+
STRING
|
data/lib/mimas/server/console.rb
CHANGED
|
@@ -8,7 +8,7 @@ module Mimas
|
|
|
8
8
|
Net::SSH.start(host, user) do |session|
|
|
9
9
|
session.open_channel do |channel|
|
|
10
10
|
channel.request_pty do
|
|
11
|
-
channel.exec("cd #{current_path(site)} && /bin/
|
|
11
|
+
channel.exec("cd #{current_path(site)} && ~/.cargo/bin/rv run #{console_command}") do
|
|
12
12
|
channel.on_data do |_, data|
|
|
13
13
|
$stdout.print(data) if data
|
|
14
14
|
end
|
data/lib/mimas/server/ruby.rb
CHANGED
|
@@ -1,35 +1,27 @@
|
|
|
1
1
|
module Mimas
|
|
2
2
|
class Server
|
|
3
3
|
module Ruby
|
|
4
|
-
def
|
|
4
|
+
def install_server_software(sudo_user:)
|
|
5
5
|
ssh(self, user: sudo_user) do |session|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
software_list = Software.utilities + Software.prerequisites
|
|
7
|
+
software_list = software_list.join(" ")
|
|
8
8
|
|
|
9
|
-
session.
|
|
10
|
-
sudo: true,
|
|
11
|
-
vars: { PREREQUISITES: "'#{prerequisites}'" }
|
|
12
|
-
)
|
|
9
|
+
session.run "sudo apt-get install #{software_list} -y"
|
|
13
10
|
end
|
|
14
11
|
end
|
|
15
12
|
|
|
16
13
|
def install_ruby(version: Config.current.ruby_version)
|
|
17
14
|
ssh(self) do |session|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return say "Ruby #{version} is already installed!"
|
|
24
|
-
end
|
|
15
|
+
begin
|
|
16
|
+
session.run "test -d ~/.rubies/ruby-*"
|
|
17
|
+
rescue SSH::Session::NonZeroExitCode
|
|
18
|
+
# Install `rv` for fresh installs
|
|
19
|
+
session.script "configure_ruby"
|
|
25
20
|
end
|
|
26
21
|
|
|
27
|
-
session.run "ruby
|
|
22
|
+
session.run "~/.cargo/bin/rv ruby install #{version} -i ~/.rubies"
|
|
28
23
|
session.run "echo '#{version}' > ~/.ruby-version"
|
|
29
|
-
|
|
30
|
-
if current_ruby == ""
|
|
31
|
-
session.script("configure_ruby")
|
|
32
|
-
end
|
|
24
|
+
session.run "~/.cargo/bin/rv run gem update --system"
|
|
33
25
|
end
|
|
34
26
|
end
|
|
35
27
|
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Mimas
|
|
2
|
+
class Server
|
|
3
|
+
module Software
|
|
4
|
+
extend self
|
|
5
|
+
|
|
6
|
+
PREREQUISITES = %w[build-essential libyaml-dev libssl-dev libjemalloc-dev]
|
|
7
|
+
private_constant :PREREQUISITES
|
|
8
|
+
|
|
9
|
+
def prerequisites
|
|
10
|
+
MUTEX.synchronize { @prerequisites ||= PREREQUISITES }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
UTILITIES = %w[curl jq]
|
|
14
|
+
private_constant :UTILITIES
|
|
15
|
+
|
|
16
|
+
def utilities
|
|
17
|
+
MUTEX.synchronize { @utilities ||= UTILITIES }
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -9,7 +9,7 @@ User=<%= user %>
|
|
|
9
9
|
EnvironmentFile=<%= site_root %>/.env
|
|
10
10
|
EnvironmentFile=<%= site_root %>/mimas/mimas.env
|
|
11
11
|
WorkingDirectory=<%= site_root %>/current
|
|
12
|
-
ExecStart
|
|
12
|
+
ExecStart=%h/.cargo/bin/rv run <%= command %>
|
|
13
13
|
StandardOutput=append:<%= site_root %>/logs/<%= service_name %>.log
|
|
14
14
|
StandardError=append:<%= site_root %>/logs/<%= service_name %>.log
|
|
15
15
|
KillMode=mixed
|
data/lib/mimas/version.rb
CHANGED
data/lib/mimas.rb
CHANGED
|
@@ -19,7 +19,7 @@ require_relative "mimas/config"
|
|
|
19
19
|
require_relative "mimas/site/archive"
|
|
20
20
|
require_relative "mimas/site"
|
|
21
21
|
|
|
22
|
-
require_relative "mimas/server/
|
|
22
|
+
require_relative "mimas/server/software"
|
|
23
23
|
require_relative "mimas/server/harden"
|
|
24
24
|
require_relative "mimas/server/deploy_user"
|
|
25
25
|
require_relative "mimas/server/caddy"
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mimas
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ayush Newatia
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: dry-cli
|
|
@@ -127,14 +127,13 @@ files:
|
|
|
127
127
|
- lib/mimas/scripts/create_deploy_user.sh
|
|
128
128
|
- lib/mimas/scripts/harden.sh
|
|
129
129
|
- lib/mimas/scripts/install_caddy.sh
|
|
130
|
-
- lib/mimas/scripts/install_ruby_prerequisites.sh
|
|
131
130
|
- lib/mimas/server.rb
|
|
132
131
|
- lib/mimas/server/caddy.rb
|
|
133
132
|
- lib/mimas/server/console.rb
|
|
134
133
|
- lib/mimas/server/deploy_user.rb
|
|
135
134
|
- lib/mimas/server/harden.rb
|
|
136
|
-
- lib/mimas/server/prerequisites.rb
|
|
137
135
|
- lib/mimas/server/ruby.rb
|
|
136
|
+
- lib/mimas/server/software.rb
|
|
138
137
|
- lib/mimas/site.rb
|
|
139
138
|
- lib/mimas/site/archive.rb
|
|
140
139
|
- lib/mimas/ssh.rb
|
|
@@ -168,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
168
167
|
- !ruby/object:Gem::Version
|
|
169
168
|
version: '0'
|
|
170
169
|
requirements: []
|
|
171
|
-
rubygems_version:
|
|
170
|
+
rubygems_version: 4.0.18
|
|
172
171
|
specification_version: 4
|
|
173
172
|
summary: Deploy Ruby apps to a single server using an omakase setup
|
|
174
173
|
test_files: []
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
export DEBIAN_FRONTEND=noninteractive
|
|
5
|
-
|
|
6
|
-
# Install Ruby prerequisites
|
|
7
|
-
sudo apt-get install $PREREQUISITES -y
|
|
8
|
-
|
|
9
|
-
# Install Ruby Install
|
|
10
|
-
wget https://github.com/postmodern/ruby-install/releases/download/v0.10.2/ruby-install-0.10.2.tar.gz
|
|
11
|
-
tar -xzvf ruby-install-0.10.2.tar.gz
|
|
12
|
-
cd ruby-install-0.10.2/
|
|
13
|
-
sudo make install
|
|
14
|
-
cd ..
|
|
15
|
-
rm ruby-install-0.10.2.tar.gz
|
|
16
|
-
rm -rf ruby-install-0.10.2/
|
|
17
|
-
|
|
18
|
-
# Install chruby
|
|
19
|
-
wget https://github.com/postmodern/chruby/releases/download/v0.3.9/chruby-0.3.9.tar.gz
|
|
20
|
-
tar -xzvf chruby-0.3.9.tar.gz
|
|
21
|
-
cd chruby-0.3.9/
|
|
22
|
-
sudo make install
|
|
23
|
-
cd ..
|
|
24
|
-
rm chruby-0.3.9.tar.gz
|
|
25
|
-
rm -rf chruby-0.3.9/
|
|
26
|
-
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
module Mimas
|
|
2
|
-
class Server
|
|
3
|
-
module Prerequisites
|
|
4
|
-
extend self
|
|
5
|
-
|
|
6
|
-
def for_ruby
|
|
7
|
-
%w[
|
|
8
|
-
xz-utils
|
|
9
|
-
build-essential
|
|
10
|
-
zlib1g-dev
|
|
11
|
-
libyaml-dev
|
|
12
|
-
libssl-dev
|
|
13
|
-
libncurses-dev
|
|
14
|
-
libffi-dev
|
|
15
|
-
rustc
|
|
16
|
-
libjemalloc-dev
|
|
17
|
-
]
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def utilities
|
|
21
|
-
%w[curl jq]
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|