vpsb 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 +7 -0
- data/.gitignore +21 -0
- data/Gemfile +20 -0
- data/Gemfile.lock +175 -0
- data/LICENSE.txt +22 -0
- data/README.md +62 -0
- data/Rakefile +2 -0
- data/bin/vpsb +10 -0
- data/lib/vpsb/ask_support.rb +27 -0
- data/lib/vpsb/base_ask_resource.rb +40 -0
- data/lib/vpsb/base_resource.rb +13 -0
- data/lib/vpsb/base_task.rb +32 -0
- data/lib/vpsb/commands/base.rb +68 -0
- data/lib/vpsb/commands/build.rb +61 -0
- data/lib/vpsb/commands/cook.rb +27 -0
- data/lib/vpsb/commands/deploy.rb +25 -0
- data/lib/vpsb/commands/help_messages.rb +23 -0
- data/lib/vpsb/commands/init.rb +52 -0
- data/lib/vpsb/commands/setup.rb +23 -0
- data/lib/vpsb/core.rb +41 -0
- data/lib/vpsb/helpers/file_replace.rb +20 -0
- data/lib/vpsb/helpers/ssh.rb +117 -0
- data/lib/vpsb/resources/app_bags_json.rb +38 -0
- data/lib/vpsb/resources/app_env_variables.rb +24 -0
- data/lib/vpsb/resources/app_host.rb +12 -0
- data/lib/vpsb/resources/app_name.rb +11 -0
- data/lib/vpsb/resources/app_nginx_use_ssl.rb +12 -0
- data/lib/vpsb/resources/base_path.rb +10 -0
- data/lib/vpsb/resources/db_postgres_json.rb +62 -0
- data/lib/vpsb/resources/db_postgres_pass.rb +11 -0
- data/lib/vpsb/resources/db_postgres_version.rb +21 -0
- data/lib/vpsb/resources/db_postgresql_bags_json.rb +20 -0
- data/lib/vpsb/resources/deploy_bags_json.rb +36 -0
- data/lib/vpsb/resources/deploy_config.rb +32 -0
- data/lib/vpsb/resources/deploy_keychain.rb +19 -0
- data/lib/vpsb/resources/deploy_pass.rb +11 -0
- data/lib/vpsb/resources/deploy_ssh_keys.rb +20 -0
- data/lib/vpsb/resources/deploy_to_known_hosts.rb +13 -0
- data/lib/vpsb/resources/do_api_key.rb +14 -0
- data/lib/vpsb/resources/do_client_id.rb +8 -0
- data/lib/vpsb/resources/do_droplet_ssh_key.rb +15 -0
- data/lib/vpsb/resources/do_host.rb +8 -0
- data/lib/vpsb/resources/do_host_ip.rb +8 -0
- data/lib/vpsb/resources/do_image.rb +16 -0
- data/lib/vpsb/resources/do_region.rb +16 -0
- data/lib/vpsb/resources/do_size.rb +16 -0
- data/lib/vpsb/resources/do_ssh_path.rb +15 -0
- data/lib/vpsb/resources/do_ssh_pub_path.rb +15 -0
- data/lib/vpsb/resources/es_cluster_name.rb +9 -0
- data/lib/vpsb/resources/es_json.rb +50 -0
- data/lib/vpsb/resources/es_memlock.rb +18 -0
- data/lib/vpsb/resources/es_node_name.rb +8 -0
- data/lib/vpsb/resources/es_nofile.rb +18 -0
- data/lib/vpsb/resources/es_version.rb +21 -0
- data/lib/vpsb/resources/has_do_account.rb +19 -0
- data/lib/vpsb/resources/hostname.rb +12 -0
- data/lib/vpsb/resources/knife_rb_path.rb +10 -0
- data/lib/vpsb/resources/local_ssh_path.rb +15 -0
- data/lib/vpsb/resources/local_ssh_pub.rb +13 -0
- data/lib/vpsb/resources/monit_role_json.rb +33 -0
- data/lib/vpsb/resources/newrelic_lic.rb +8 -0
- data/lib/vpsb/resources/node_json.rb +31 -0
- data/lib/vpsb/resources/packages_bags_json.rb +20 -0
- data/lib/vpsb/resources/packages_list.rb +18 -0
- data/lib/vpsb/resources/rails_app_path.rb +11 -0
- data/lib/vpsb/resources/read_do_api_access.rb +21 -0
- data/lib/vpsb/resources/ruby_version.rb +21 -0
- data/lib/vpsb/resources/server_app_path.rb +11 -0
- data/lib/vpsb/resources/ssh_helper.rb +10 -0
- data/lib/vpsb/resources/unicorn_worker_processes.rb +18 -0
- data/lib/vpsb/resources/unicorn_worker_timeout.rb +18 -0
- data/lib/vpsb/resources/web_role_json.rb +92 -0
- data/lib/vpsb/resources.rb +4 -0
- data/lib/vpsb/shell_support.rb +7 -0
- data/lib/vpsb/tasks/apps_bags.rb +33 -0
- data/lib/vpsb/tasks/create_droplet.rb +51 -0
- data/lib/vpsb/tasks/db_postgres_bags.rb +32 -0
- data/lib/vpsb/tasks/db_postgres_role.rb +32 -0
- data/lib/vpsb/tasks/deploy_bags.rb +32 -0
- data/lib/vpsb/tasks/deploy_config.rb +19 -0
- data/lib/vpsb/tasks/do_api_access.rb +52 -0
- data/lib/vpsb/tasks/droplet_ssh_keys.rb +22 -0
- data/lib/vpsb/tasks/droplet_ssh_update_config.rb +20 -0
- data/lib/vpsb/tasks/es_role.rb +32 -0
- data/lib/vpsb/tasks/monit_role.rb +32 -0
- data/lib/vpsb/tasks/node.rb +32 -0
- data/lib/vpsb/tasks/packages_bags.rb +32 -0
- data/lib/vpsb/tasks/web_role.rb +32 -0
- data/lib/vpsb/version.rb +3 -0
- data/lib/vpsb.rb +16 -0
- data/spec/spec_helper.rb +22 -0
- data/vpsb.gemspec +30 -0
- metadata +263 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class CreateDroplet < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
include ShellSupport
|
|
6
|
+
prepare_squence :do_image, :do_region, :do_size, :do_droplet_ssh_key
|
|
7
|
+
|
|
8
|
+
def call
|
|
9
|
+
prepare
|
|
10
|
+
|
|
11
|
+
ask_loop(proc {|r| process(r)}) do
|
|
12
|
+
ap preparation_results
|
|
13
|
+
puts "Save this configuration y[es]/n[o]?"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
create_droplet
|
|
17
|
+
puts "Your droplet has been created. Congratulations! Visit https://cloud.digitalocean.com/ to see more details"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def process(r)
|
|
23
|
+
return true if r[0].to_s.downcase == 'y'
|
|
24
|
+
reprepare
|
|
25
|
+
false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def create_droplet
|
|
29
|
+
puts "Creating droplet please wait... It may take a couple of minutes"
|
|
30
|
+
command = [
|
|
31
|
+
"knife digital_ocean droplet create",
|
|
32
|
+
"--server-name #{core.get(:do_host)}",
|
|
33
|
+
"--image #{core.get(:do_image)}",
|
|
34
|
+
"--location #{core.get(:do_region)}",
|
|
35
|
+
"--size #{core.get(:do_size)}",
|
|
36
|
+
"--ssh-keys #{core.get(:do_droplet_ssh_key)}",
|
|
37
|
+
].join(' ')
|
|
38
|
+
|
|
39
|
+
output = run(core.get(:server_app_path), command)
|
|
40
|
+
ip = output.split("\n").find{ |x| x.include?('IPv4 address is:')}.split(':').last.strip
|
|
41
|
+
core.data[:do_host_ip] = ip
|
|
42
|
+
puts output
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def run(where, what)
|
|
46
|
+
%x{cd #{where} && #{what}}
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class DbPostgresBags < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
|
|
6
|
+
PATH = 'bootstrap_server_app_in_do/data_bags/db_users/postgresql.json'
|
|
7
|
+
|
|
8
|
+
prepare_squence :db_postgres_pass, :db_postgresql_bags_json
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
prepare
|
|
12
|
+
|
|
13
|
+
ask_loop(proc {|r| process(r)}) do
|
|
14
|
+
ap preparation_results
|
|
15
|
+
p "Save this configuration y[es]/n[o]?"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Vpsb::Helpers::FileReplace.replace_json(PATH, core.get(:db_postgresql_bags_json))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def process(result)
|
|
24
|
+
return true if result[0].to_s.downcase == 'y'
|
|
25
|
+
reprepare
|
|
26
|
+
false
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class DbPostgresRole < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
|
|
6
|
+
PATH = 'bootstrap_server_app_in_do/roles/db.json'
|
|
7
|
+
|
|
8
|
+
prepare_squence :db_postgres_version, :db_postgres_json
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
prepare
|
|
12
|
+
|
|
13
|
+
ask_loop(proc {|r| process(r)}) do
|
|
14
|
+
ap preparation_results
|
|
15
|
+
p "Save this configuration y[es]/n[o]?"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Vpsb::Helpers::FileReplace.replace_json(PATH,core.get(:db_postgres_json))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def process(result)
|
|
24
|
+
return true if result[0].to_s.downcase == 'y'
|
|
25
|
+
reprepare
|
|
26
|
+
false
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class DeployBags < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
|
|
6
|
+
PATH = 'bootstrap_server_app_in_do/data_bags/users/deploy.json'
|
|
7
|
+
|
|
8
|
+
prepare_squence :deploy_pass, :deploy_ssh_keys, :deploy_bags_json
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
prepare
|
|
12
|
+
|
|
13
|
+
ask_loop(proc {|r| process(r)}) do
|
|
14
|
+
ap preparation_results
|
|
15
|
+
p "Save this configuration y[es]/n[o]?"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Vpsb::Helpers::FileReplace.replace_json(PATH, core.get(:deploy_bags_json))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def process(result)
|
|
24
|
+
return true if result[0].to_s.downcase == 'y'
|
|
25
|
+
reprepare
|
|
26
|
+
false
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class DeployConfig < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
|
|
6
|
+
PATH = 'bootstrap_rails_app_in_do/config/deploy/production.rb'
|
|
7
|
+
|
|
8
|
+
prepare_squence :deploy_config
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
prepare
|
|
12
|
+
|
|
13
|
+
Vpsb::Helpers::FileReplace.replace_text(PATH, core.get(:deploy_config))
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
module Vpsb
|
|
4
|
+
module Tasks
|
|
5
|
+
class DoApiAccess < BaseTask
|
|
6
|
+
include AskSupport
|
|
7
|
+
|
|
8
|
+
prepare_squence :has_do_account, :do_host, :do_api_key, :do_client_id
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
prepare
|
|
12
|
+
|
|
13
|
+
ask_loop(proc {|r| process(r)}) do
|
|
14
|
+
ap preparation_results
|
|
15
|
+
puts "Save this configuration y[es]/n[o]?"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
update_knife_rb
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def process(result)
|
|
24
|
+
return true if result[0].to_s.downcase == 'y'
|
|
25
|
+
reprepare
|
|
26
|
+
false
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def update_knife_rb
|
|
30
|
+
File.open(core.get(:knife_rb_path), "w+") { |f| f.write(config) }
|
|
31
|
+
puts 'Knife.rb file created'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def config
|
|
35
|
+
<<-EOS
|
|
36
|
+
cookbook_path ["cookbooks", "site-cookbooks"]
|
|
37
|
+
node_path "nodes"
|
|
38
|
+
role_path "roles"
|
|
39
|
+
environment_path "environments"
|
|
40
|
+
data_bag_path "data_bags"
|
|
41
|
+
encrypted_data_bag_secret "data_bag_key"
|
|
42
|
+
|
|
43
|
+
# knife[:secret_file] = "data_bag_key"
|
|
44
|
+
knife[:secret_file] = "~/chef-solo/data_bag_key"
|
|
45
|
+
knife[:berkshelf_path] = "cookbooks"
|
|
46
|
+
knife[:digital_ocean_client_id] = '#{core.get(:do_client_id)}'
|
|
47
|
+
knife[:digital_ocean_api_key] = '#{core.get(:do_api_key)}'
|
|
48
|
+
EOS
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class DropletSshKeys < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
attr_reader :core
|
|
6
|
+
|
|
7
|
+
def initialize(core)
|
|
8
|
+
@core = core
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
prepare_squence :do_ssh_path
|
|
12
|
+
|
|
13
|
+
def call
|
|
14
|
+
prepare
|
|
15
|
+
core.get(:ssh_helper).generate_ssh(core.get(:do_ssh_path))
|
|
16
|
+
puts core.get(:ssh_helper).pub_key(core.get(:do_ssh_path))
|
|
17
|
+
ask { puts "Visit https://cloud.digitalocean.com/ssh_keys and add add the key above. Press Enter to continue" }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class DropletSshUpdateConfig < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
attr_reader :core
|
|
6
|
+
|
|
7
|
+
def initialize(core)
|
|
8
|
+
@core = core
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
prepare_squence :ssh_helper, :do_host_ip, :do_ssh_pub_path
|
|
12
|
+
|
|
13
|
+
def call
|
|
14
|
+
prepare
|
|
15
|
+
core.get(:ssh_helper).add_host_to_config(core.get(:do_host_ip), core.get(:do_ssh_pub_path), 'root')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class EsRole < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
|
|
6
|
+
PATH = 'bootstrap_server_app_in_do/roles/es.json'
|
|
7
|
+
|
|
8
|
+
prepare_squence :es_version, :es_nofile, :es_memlock, :es_node_name, :es_cluster_name, :es_json
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
prepare
|
|
12
|
+
|
|
13
|
+
ask_loop(proc {|r| process(r)}) do
|
|
14
|
+
ap preparation_results
|
|
15
|
+
p "Save this configuration y[es]/n[o]?"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Vpsb::Helpers::FileReplace.replace_json(PATH, core.get(:es_json))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def process(result)
|
|
24
|
+
return true if result[0].to_s.downcase == 'y'
|
|
25
|
+
reprepare
|
|
26
|
+
false
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class MonitRole < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
|
|
6
|
+
PATH = 'bootstrap_server_app_in_do/roles/monit.json'
|
|
7
|
+
|
|
8
|
+
prepare_squence :hostname, :newrelic_lic, :monit_role_json
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
prepare
|
|
12
|
+
|
|
13
|
+
ask_loop(proc {|r| process(r)}) do
|
|
14
|
+
ap preparation_results
|
|
15
|
+
p "Save this configuration y[es]/n[o]?"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Vpsb::Helpers::FileReplace.replace_json(PATH, core.get(:monit_role_json))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def process(result)
|
|
24
|
+
return true if result[0].to_s.downcase == 'y'
|
|
25
|
+
reprepare
|
|
26
|
+
false
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class Node < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
|
|
6
|
+
PATH = 'bootstrap_server_app_in_do/nodes/'
|
|
7
|
+
|
|
8
|
+
prepare_squence :node_json
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
prepare
|
|
12
|
+
|
|
13
|
+
# ip = ask_loop(proc {|r| process(r)}) do
|
|
14
|
+
# p "What is server ip address (example: 1.23.44.11)?"
|
|
15
|
+
# end
|
|
16
|
+
|
|
17
|
+
ip = core.get(:do_host_ip)
|
|
18
|
+
|
|
19
|
+
Vpsb::Helpers::FileReplace.replace_json("#{PATH}#{ip}.json",core.get(:node_json))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def process(result)
|
|
25
|
+
return true if result.split('.').length == 4
|
|
26
|
+
false
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class PackagesBags < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
|
|
6
|
+
PATH = 'bootstrap_server_app_in_do/data_bags/components/packages.json'
|
|
7
|
+
|
|
8
|
+
prepare_squence :packages_list, :packages_bags_json
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
prepare
|
|
12
|
+
|
|
13
|
+
ask_loop(proc {|r| process(r)}) do
|
|
14
|
+
ap preparation_results
|
|
15
|
+
p "Save this configuration y[es]/n[o]?"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Vpsb::Helpers::FileReplace.replace_json(PATH, core.get(:packages_bags_json))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def process(result)
|
|
24
|
+
return true if result[0].to_s.downcase == 'y'
|
|
25
|
+
reprepare
|
|
26
|
+
false
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Vpsb
|
|
2
|
+
module Tasks
|
|
3
|
+
class WebRole < BaseTask
|
|
4
|
+
include AskSupport
|
|
5
|
+
|
|
6
|
+
PATH = 'bootstrap_server_app_in_do/roles/web.json'
|
|
7
|
+
|
|
8
|
+
prepare_squence :ruby_version, :unicorn_worker_processes, :unicorn_worker_timeout
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
prepare
|
|
12
|
+
|
|
13
|
+
ask_loop(proc {|r| process(r)}) do
|
|
14
|
+
ap preparation_results
|
|
15
|
+
p "Save this configuration y[es]/n[o]?"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Vpsb::Helpers::FileReplace.replace_json(PATH, core.get(:web_role_json))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def process(result)
|
|
24
|
+
return true if result[0].to_s.downcase == 'y'
|
|
25
|
+
reprepare
|
|
26
|
+
false
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
data/lib/vpsb/version.rb
ADDED
data/lib/vpsb.rb
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require "vpsb/version"
|
|
2
|
+
require "vpsb/ask_support"
|
|
3
|
+
require "vpsb/core"
|
|
4
|
+
require "vpsb/shell_support"
|
|
5
|
+
require "vpsb/helpers/file_replace"
|
|
6
|
+
require "vpsb/base_resource"
|
|
7
|
+
require "vpsb/base_ask_resource"
|
|
8
|
+
require "vpsb/base_task"
|
|
9
|
+
|
|
10
|
+
Dir[File.join(File.expand_path('../', __FILE__), "**/*.rb")].each{ |f| require f}
|
|
11
|
+
|
|
12
|
+
module Vpsb
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
|
4
|
+
# loaded once.
|
|
5
|
+
#
|
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
|
7
|
+
|
|
8
|
+
require File.expand_path(File.dirname(__FILE__) + '/../lib/vpsg')
|
|
9
|
+
require 'rspec'
|
|
10
|
+
require 'ostruct'
|
|
11
|
+
|
|
12
|
+
RSpec.configure do |config|
|
|
13
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
|
14
|
+
config.run_all_when_everything_filtered = true
|
|
15
|
+
config.filter_run :focus
|
|
16
|
+
|
|
17
|
+
# Run specs in random order to surface order dependencies. If you find an
|
|
18
|
+
# order dependency and want to debug it, you can fix the order by providing
|
|
19
|
+
# the seed, which is printed after each run.
|
|
20
|
+
# --seed 1234
|
|
21
|
+
config.order = 'random'
|
|
22
|
+
end
|
data/vpsb.gemspec
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'vpsb/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "vpsb"
|
|
8
|
+
spec.version = Vpsb::VERSION
|
|
9
|
+
spec.authors = ["Pawel Niemczyk"]
|
|
10
|
+
spec.email = ["pniemczyk@o2.pl"]
|
|
11
|
+
spec.summary = %q{VPS bootstrap}
|
|
12
|
+
spec.description = %q{From instalation server and configure to deploy}
|
|
13
|
+
spec.homepage = ""
|
|
14
|
+
spec.license = "MIT"
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
|
22
|
+
spec.add_development_dependency "rake"
|
|
23
|
+
spec.add_development_dependency "rspec"
|
|
24
|
+
spec.add_dependency "executable", "~> 1.2"
|
|
25
|
+
spec.add_dependency "json", "~> 1.7"
|
|
26
|
+
spec.add_dependency "activesupport", "~> 4.0"
|
|
27
|
+
spec.add_dependency "awesome_print", "~> 1.2"
|
|
28
|
+
spec.add_dependency "hashie", "~> 2.1"
|
|
29
|
+
spec.add_dependency "rendering_engine", "0.1"
|
|
30
|
+
end
|