meroku 2.0.8 → 2.0.9
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/README.md +9 -5
- data/bin/meroku +1 -1
- data/circle.yml +23 -0
- data/frontend/Gemfile +5 -2
- data/frontend/Gemfile.lock +5 -2
- data/frontend/app/controllers/application_controller.rb +1 -0
- data/frontend/app/controllers/apps_controller.rb +46 -48
- data/frontend/app/controllers/publickeys_controller.rb +45 -46
- data/frontend/app/controllers/users/registrations_controller.rb +0 -15
- data/frontend/app/controllers/users/sessions_controller.rb +12 -3
- data/frontend/app/lib/cmd.rb +11 -0
- data/frontend/app/models/app.rb +18 -11
- data/frontend/app/models/publickey.rb +1 -1
- data/frontend/app/models/user.rb +5 -4
- data/frontend/app/policies/application_policy.rb +53 -0
- data/frontend/app/policies/publickey_policy.rb +7 -0
- data/frontend/app/serializable/serializable_user.rb +2 -1
- data/frontend/app/views/layouts/application.html.erb +1 -1
- data/frontend/config/database.yml +72 -10
- data/frontend/config/routes.rb +6 -14
- data/frontend/db/migrate/20171028150506_add_apisecret_to_users.rb +6 -0
- data/frontend/etc_nginx_sites-enabled_default +1 -1
- data/frontend/public/Meroku.html +140 -0
- data/frontend/public/Meroku/Api.html +129 -0
- data/frontend/public/Meroku/Api/Request.html +221 -0
- data/frontend/public/Meroku/Aws.html +212 -0
- data/frontend/public/Meroku/Aws/Ec2.html +477 -0
- data/frontend/public/Meroku/CLI.html +784 -0
- data/frontend/public/Meroku/CLI/AdminUser.html +192 -0
- data/frontend/public/Meroku/CLI/Help.html +224 -0
- data/frontend/public/Meroku/CLI/Secrets.html +191 -0
- data/frontend/public/Meroku/CLI/Session.html +460 -0
- data/frontend/public/Meroku/CLI/User.html +182 -0
- data/frontend/public/Meroku/Extensions.html +405 -0
- data/frontend/public/Meroku/Infrastructure.html +279 -0
- data/frontend/public/Meroku/Infrastructure/Node.html +785 -0
- data/frontend/public/Meroku/Infrastructure/Server.html +373 -0
- data/frontend/public/Meroku/Node.html +845 -0
- data/frontend/public/Meroku/Tunnel.html +701 -0
- data/frontend/public/Meroku/Tunnelable.html +243 -0
- data/frontend/public/_index.html +273 -0
- data/frontend/public/class_list.html +51 -0
- data/frontend/public/css/common.css +1 -0
- data/frontend/public/css/full_list.css +58 -0
- data/frontend/public/css/style.css +492 -0
- data/frontend/public/file.README.html +181 -0
- data/frontend/public/file_list.html +56 -0
- data/frontend/public/frames.html +17 -0
- data/frontend/public/index.html +181 -0
- data/frontend/public/js/app.js +248 -0
- data/frontend/public/js/full_list.js +216 -0
- data/frontend/public/js/jquery.js +4 -0
- data/frontend/public/method_list.html +395 -0
- data/frontend/public/robots.txt +2 -1
- data/frontend/public/top-level-namespace.html +110 -0
- data/frontend/test/policies/publickey_policy_test.rb +19 -0
- data/lib/meroku.rb +9 -7
- data/lib/meroku/api.rb +8 -0
- data/lib/meroku/api/request.rb +17 -0
- data/lib/meroku/aws.rb +14 -0
- data/lib/meroku/aws/ec2.rb +59 -0
- data/lib/meroku/cli.rb +80 -81
- data/lib/meroku/cli/help.rb +27 -0
- data/lib/meroku/cli/secrets.rb +13 -0
- data/lib/meroku/cli/session.rb +32 -51
- data/lib/meroku/extensions.rb +32 -0
- data/lib/meroku/infrastructure.rb +14 -17
- data/lib/meroku/infrastructure/server.rb +20 -0
- data/lib/meroku/node.rb +113 -0
- data/lib/meroku/tunnelable.rb +31 -0
- data/lib/meroku/version.rb +1 -1
- data/modified-cedar-14.sh +0 -4
- metadata +50 -9
- data/frontend/app/controllers/pages_controller.rb +0 -4
- data/frontend/app/views/pages/landing.html.erb +0 -2
- data/frontend/db/migrate/20171025193627_add_token_to_users.rb +0 -5
- data/lib/meroku/cli/admin_user.rb +0 -20
- data/lib/meroku/cli/user.rb +0 -14
- data/lib/meroku/infrastructure/node.rb +0 -102
- data/lib/meroku/tunnel.rb +0 -56
@@ -1,20 +0,0 @@
|
|
1
|
-
module Meroku
|
2
|
-
module CLI
|
3
|
-
|
4
|
-
module AdminUser
|
5
|
-
|
6
|
-
def self.load_secrets(obj)
|
7
|
-
env_file = Dir.home+'/.meroku/meroku.env'
|
8
|
-
if !File.exist?(env_file)
|
9
|
-
puts "error: File not found (#{Dir.home}/.meroku/meroku.env)"
|
10
|
-
return nil
|
11
|
-
end
|
12
|
-
Dotenv.load(env_file)
|
13
|
-
obj.ec2_client = ::Aws::EC2::Client.new(
|
14
|
-
region: 'us-east-1',
|
15
|
-
credentials: ::Aws::Credentials.new(ENV['AWS_ACCESS_KEY'], ENV['AWS_SECRET'])
|
16
|
-
)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/lib/meroku/cli/user.rb
DELETED
@@ -1,102 +0,0 @@
|
|
1
|
-
|
2
|
-
module Meroku
|
3
|
-
module Infrastructure
|
4
|
-
class Node
|
5
|
-
attr_accessor :instance, :tunnel, :ec2_client
|
6
|
-
|
7
|
-
def initialize(ec2_client)
|
8
|
-
@ec2_client = ec2_client
|
9
|
-
result = ec2_client.try(
|
10
|
-
:run_instances,
|
11
|
-
{
|
12
|
-
image_id: 'ami-841f46ff', #was xenial 'ami-cd0f5cb6',
|
13
|
-
min_count: 1,
|
14
|
-
max_count: 1,
|
15
|
-
key_name: 'meroku.id_rsa',
|
16
|
-
instance_type: 't2.micro',
|
17
|
-
tag_specifications: [
|
18
|
-
{
|
19
|
-
resource_type: "instance",
|
20
|
-
tags: [
|
21
|
-
{
|
22
|
-
key: "Name",
|
23
|
-
value: "node",
|
24
|
-
},
|
25
|
-
],
|
26
|
-
},
|
27
|
-
]
|
28
|
-
}
|
29
|
-
)
|
30
|
-
@instance = result.instances.first if result
|
31
|
-
@tunnel = Meroku::Tunnel.new(
|
32
|
-
ip: "34.239.241.218",
|
33
|
-
username: "ubuntu",
|
34
|
-
keys: "~/crypto/meroku/meroku.id_rsa",
|
35
|
-
verify_host_key: false,
|
36
|
-
verbose: false
|
37
|
-
)
|
38
|
-
self
|
39
|
-
end
|
40
|
-
|
41
|
-
def associate_address
|
42
|
-
retries ||= 0
|
43
|
-
@ec2_client.associate_address(
|
44
|
-
allocation_id: "eipalloc-139f7823",
|
45
|
-
instance_id: @instance.try(:instance_id)
|
46
|
-
)
|
47
|
-
self
|
48
|
-
rescue ::Aws::EC2::Errors::InvalidInstanceID => e
|
49
|
-
print STDERR.print "."
|
50
|
-
sleep 2
|
51
|
-
retry if (retries += 1) < 15
|
52
|
-
end
|
53
|
-
|
54
|
-
def install_packages
|
55
|
-
@tunnel.run "sudo apt-add-repository ppa:brightbox/ruby-ng\;"
|
56
|
-
@tunnel.run "curl -s -o /tmp/modified-cedar-14.sh https://raw.githubusercontent.com/oystersauce8/meroku/master/modified-cedar-14.sh"
|
57
|
-
@tunnel.run "sudo chmod 755 /tmp/modified-cedar-14.sh"
|
58
|
-
@tunnel.run "/bin/bash -lc 'sudo /tmp/modified-cedar-14.sh'"
|
59
|
-
@tunnel.run "sudo apt-get install -y ruby2.4 ruby2.4-dev"
|
60
|
-
@tunnel.run "sudo apt-get install -y nginx libsqlite3-dev nodejs"
|
61
|
-
self
|
62
|
-
end
|
63
|
-
|
64
|
-
def tweak_configuration
|
65
|
-
#@tunnel.run 'sudo adduser --disabled-password --shell /usr/bin/git-shell --gecos "" git'
|
66
|
-
#@tunnel.run 'sudo -u git mkdir /home/git/.ssh/'
|
67
|
-
#@tunnel.run 'sudo -u git touch /home/git/.ssh/authorized_keys'
|
68
|
-
@tunnel.run 'sudo mkdir /sharedro && sudo chmod 777 /sharedro'
|
69
|
-
end
|
70
|
-
|
71
|
-
def install_frontend_app
|
72
|
-
@tunnel.run 'mkdir /home/ubuntu/.meroku'
|
73
|
-
@tunnel.run "cd ~\; git clone https://github.com/oystersauce8/meroku\;"
|
74
|
-
@tunnel.run "sudo rm -f /etc/nginx/sites-enabled/*"
|
75
|
-
@tunnel.run "sudo cp ~/meroku/frontend/etc_nginx_sites-enabled_default /etc/nginx/sites-enabled/default"
|
76
|
-
@tunnel.run 'sudo cp /home/ubuntu/meroku/frontend/etc_nginx_sites-enabled_template /sharedro'
|
77
|
-
@tunnel.run 'sudo chmod a+r /sharedro/etc_nginx_sites-enabled_template'
|
78
|
-
|
79
|
-
@tunnel.run "curl -o /home/ubuntu/.meroku/letsencrypt_fullchain.pem http://www.sam-we.com/dropbox/meroku-#{ENV['SECRET']}/letsencrypt_fullchain.pem"
|
80
|
-
@tunnel.run "curl -o /home/ubuntu/.meroku/letsencrypt_privkey.pem http://www.sam-we.com/dropbox/meroku-#{ENV['SECRET']}/letsencrypt_privkey.pem"
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
@tunnel.run "cd ~/meroku/frontend/\; sudo gem install bundler\; bundle\;"
|
85
|
-
@tunnel.run "(cd ~/meroku/frontend && RAILS_ENV=production bundle exec rails assets:precompile)"
|
86
|
-
|
87
|
-
@tunnel.run "(cd ~/meroku/frontend && RAILS_ENV=production bundle exec rake db:migrate)"
|
88
|
-
@tunnel.run "cd ~/meroku/frontend/\; bundle exec puma -d -b unix:///tmp/meroku.sock"
|
89
|
-
@tunnel.run "sudo service nginx restart"
|
90
|
-
@tunnel.run %Q[sudo sh -c 'echo "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIPWJQU+TkDu9uyVzHQcVnKklRhQvIBdXHkA/7zAQG8XuoAoGCCqGSM49\nAwEHoUQDQgAEI1lm18nECH4jH+6p80jhn8WgZRDOC1ufVVtoPUnUgEvslfV3xzWl\nDXZKof765EiCOYyt2TZ7pKClMexhHWhMtA==\n-----END EC PRIVATE KEY-----" > /etc/ssh/ssh_host_ecdsa_key']
|
91
|
-
@tunnel.run %Q[sudo sh -c 'echo "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCNZZtfJxAh+Ix/uqfNI4Z/FoGUQzgtbn1VbaD1J1IBL7JX1d8c1pQ12SqH++uRIgjmMrdk2e6SgpTHsYR1oTLQ= root@ip-172-31-64-77" > /etc/ssh/ssh_host_ecdsa_key.pub']
|
92
|
-
#@tunnel.run "cd ~/.meroku/\; curl -O http://www.sam-we.com/dropbox/meroku-#{ENV['SECRET']}/ssh_host_keys.tgz"
|
93
|
-
#@tunnel.run "cd ~/.meroku/\; sudo tar xf ssh_host_keys.tgz -C /etc/ssh/ --overwrite && sudo service ssh restart"
|
94
|
-
|
95
|
-
self
|
96
|
-
rescue
|
97
|
-
byebug
|
98
|
-
end
|
99
|
-
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
data/lib/meroku/tunnel.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
module Meroku
|
2
|
-
class Tunnel
|
3
|
-
|
4
|
-
attr_accessor :ip, :username, :keys, :verify_host_key, :verbose
|
5
|
-
|
6
|
-
def initialize(ip:,username:,keys:,verify_host_key:,verbose:)
|
7
|
-
@ip = ip
|
8
|
-
@username = username
|
9
|
-
@keys = keys
|
10
|
-
@verify_host_key = verify_host_key
|
11
|
-
@verbose = verbose
|
12
|
-
end
|
13
|
-
|
14
|
-
def run(cmd)
|
15
|
-
@verbose=true
|
16
|
-
retries ||= 0
|
17
|
-
exit_code=nil
|
18
|
-
Net::SSH.start(@ip,
|
19
|
-
@username,
|
20
|
-
password: 'password',
|
21
|
-
keys: @keys,
|
22
|
-
verify_host_key: @verify_host_key,
|
23
|
-
timeout: 90) do |ssh|
|
24
|
-
channel = ssh.open_channel do |ch|
|
25
|
-
STDERR.print "#{cmd}\n"
|
26
|
-
ch.exec cmd do |ch, success|
|
27
|
-
raise "could not execute command" unless success
|
28
|
-
ch.on_data do |c, data|
|
29
|
-
if @verbose
|
30
|
-
$stdout.print data
|
31
|
-
else
|
32
|
-
$stdout.print "."
|
33
|
-
end
|
34
|
-
end
|
35
|
-
ch.on_extended_data do |c, type, data|
|
36
|
-
if @verbose
|
37
|
-
$stderr.print data
|
38
|
-
else
|
39
|
-
$stderr.print "."
|
40
|
-
end
|
41
|
-
end
|
42
|
-
ch.on_request("exit-status") do |ch, data|
|
43
|
-
exit_code = data.read_long
|
44
|
-
end
|
45
|
-
|
46
|
-
ch.on_close { print "\n" }
|
47
|
-
end
|
48
|
-
end
|
49
|
-
channel.wait
|
50
|
-
end
|
51
|
-
fail "Ssh command returned non-zero" if status != 0
|
52
|
-
rescue Errno::ECONNREFUSED => e
|
53
|
-
retry if (retries += 1) < 10
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|