generators_rails 0.0.3 → 0.0.4
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/generators/docker/config/config_generator.rb +46 -36
- data/lib/generators/docker/config/templates/Dockerfile +1 -2
- data/lib/generators/docker/config/templates/docker-compose.debug.yml +1 -1
- data/lib/generators/docker/config/templates/docker-compose.yml +1 -1
- data/lib/generators/docker/config/templates/docker.rake +73 -27
- data/lib/generators/docker/config/templates/dockerconfig.json +17 -0
- data/lib/generators/rancher/config/config_generator.rb +46 -16
- data/lib/generators/rancher/config/templates/rancher +1 -5
- data/lib/generators/rancher/config/templates/rancher-compose.yml +7 -0
- data/lib/generators/rancher/config/templates/rancher.rake +186 -0
- data/lib/generators/rancher/config/templates/rancherconfig.json +8 -0
- data/lib/generators_rails/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 914fc3e4b1f4e40599b753681bee0f502b77cff2
|
4
|
+
data.tar.gz: d1ff48e2cbef5afec03e5cd2e7910b1899c21f44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bce52e3469ef1a1dc723261cfdd13bfb0121fbf459f9a1beed16bf581ce34827228645e14913ddea98e22a34cf67a3ed989ce092f1a81d515993c838f2a6d4f
|
7
|
+
data.tar.gz: 412afc6c8bf29fd9a33de550db9e2884e5a9bda74460eced8fc944e0280b6e9106d886bc055d72ca6e074206b2604090bfa1ac8e20dee355d141e8780d30d9ff
|
@@ -1,11 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Docker
|
2
4
|
class ConfigGenerator < Rails::Generators::Base
|
3
5
|
source_root File.expand_path('../templates', __FILE__)
|
4
6
|
|
5
7
|
def setup
|
6
|
-
|
7
|
-
@
|
8
|
-
@
|
8
|
+
config = file?('docker/dockerconfig.json') ? JSON.parse(File.read('docker/dockerconfig.json')) : {}
|
9
|
+
@base_image_name = ask_with_default('Which Image do you want to from(Base Image)?', config['base_name'] || default_base_image_name)
|
10
|
+
@author = ask_with_default('Who is the Author', config['author'] || ENV['USER'])
|
11
|
+
@service_name = ask_with_default('What is the Service Name', config['service_name'] || 'app')
|
9
12
|
db_type = %w[mongo mysql postgres]
|
10
13
|
say('what type of DB you are using:')
|
11
14
|
print_table(db_type.map.with_index { |a, i| [i + 1, a] })
|
@@ -17,11 +20,16 @@ module Docker
|
|
17
20
|
db_select = ask_with_default('choice:', default_choice).to_i
|
18
21
|
@db_type = db_type[db_select - 1]
|
19
22
|
@db = db_content(@db_type)
|
20
|
-
@service_image_name = ask_with_default('Service Image Name ', default_service_image_name)
|
21
|
-
@docker_repo_url = ask_with_default('Your docker repo', default_docker_repo)
|
23
|
+
@service_image_name = ask_with_default('Service Image Name ', config['image_name'] || default_service_image_name)
|
24
|
+
@docker_repo_url = ask_with_default('Your docker repo', config['docker_repo'] || default_docker_repo)
|
22
25
|
@secret = `rake secret`.chop
|
23
26
|
end
|
24
27
|
|
28
|
+
def create_docker_config
|
29
|
+
say('creating docker config')
|
30
|
+
template 'dockerconfig.json', 'docker/dockerconfig.json'
|
31
|
+
end
|
32
|
+
|
25
33
|
def create_docker_file
|
26
34
|
say('creating docker file')
|
27
35
|
@db_config_file = if @db_type == 'mongo'
|
@@ -33,11 +41,13 @@ module Docker
|
|
33
41
|
end
|
34
42
|
|
35
43
|
def create_docker_ignore
|
36
|
-
content =
|
37
|
-
config/database.yml
|
38
|
-
config/mongoid.yml
|
39
|
-
Dockerfile
|
40
|
-
docker-compose*.yml
|
44
|
+
content = <<~CODE
|
45
|
+
config/database.yml
|
46
|
+
config/mongoid.yml
|
47
|
+
Dockerfile
|
48
|
+
docker-compose*.yml
|
49
|
+
docker/
|
50
|
+
lib/tasks/docker.rake
|
41
51
|
CODE
|
42
52
|
filename = '.dockerignore'
|
43
53
|
if file? filename
|
@@ -48,31 +58,31 @@ CODE
|
|
48
58
|
end
|
49
59
|
|
50
60
|
def create_git_ignore
|
51
|
-
content =
|
52
|
-
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
53
|
-
#
|
54
|
-
# If you find yourself ignoring temporary files generated by your text editor
|
55
|
-
# or operating system, you probably want to add a global ignore instead:
|
56
|
-
# git config --global core.excludesfile '~/.gitignore_global'
|
57
|
-
|
58
|
-
# Ignore bundler config.
|
59
|
-
/.bundle
|
60
|
-
|
61
|
-
# Ignore all logfiles and tempfiles.
|
62
|
-
.rake_tasks
|
63
|
-
/log/*
|
64
|
-
!/log/.keep
|
65
|
-
/tmp
|
66
|
-
*~
|
67
|
-
.#*
|
68
|
-
public/assets
|
69
|
-
config/settings.local.yml
|
70
|
-
config/settings/*.local.yml
|
71
|
-
config/environments/*.local.yml
|
72
|
-
config/mongoid.yml
|
73
|
-
cache
|
74
|
-
spring/*
|
75
|
-
vendor/*
|
61
|
+
content = <<~CODE
|
62
|
+
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
63
|
+
#
|
64
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
65
|
+
# or operating system, you probably want to add a global ignore instead:
|
66
|
+
# git config --global core.excludesfile '~/.gitignore_global'
|
67
|
+
|
68
|
+
# Ignore bundler config.
|
69
|
+
/.bundle
|
70
|
+
|
71
|
+
# Ignore all logfiles and tempfiles.
|
72
|
+
.rake_tasks
|
73
|
+
/log/*
|
74
|
+
!/log/.keep
|
75
|
+
/tmp
|
76
|
+
*~
|
77
|
+
.#*
|
78
|
+
public/assets
|
79
|
+
config/settings.local.yml
|
80
|
+
config/settings/*.local.yml
|
81
|
+
config/environments/*.local.yml
|
82
|
+
config/mongoid.yml
|
83
|
+
cache
|
84
|
+
spring/*
|
85
|
+
vendor/*
|
76
86
|
CODE
|
77
87
|
filename = '.gitignore'
|
78
88
|
if file? filename
|
@@ -117,7 +127,7 @@ CODE
|
|
117
127
|
end
|
118
128
|
|
119
129
|
def default_base_image_name
|
120
|
-
'shaoyang/ruby:
|
130
|
+
'shaoyang/ruby:alpine'
|
121
131
|
end
|
122
132
|
|
123
133
|
def default_service_image_name
|
@@ -3,7 +3,6 @@ FROM <%=@base_image_name%>
|
|
3
3
|
MAINTAINER <%=@author%>
|
4
4
|
ADD . /usr/src/app
|
5
5
|
ADD config/<%=@db_config_file%>.docker.yml /usr/src/app/config/<%=@db_config_file%>.yml
|
6
|
-
ENV RAILS_ENV=production
|
7
6
|
RUN bundle install --local
|
8
7
|
RUN rake assets:precompile
|
9
|
-
CMD bash -c "rake db:setup&&
|
8
|
+
CMD bash -c "bundle exec rake db:setup&&bundle exec unicorn -p3000 -E $RAILS_ENV"
|
@@ -3,49 +3,59 @@
|
|
3
3
|
require 'thor'
|
4
4
|
class Hammer < Thor
|
5
5
|
include Thor::Actions
|
6
|
+
source_root '.'
|
6
7
|
end
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
class Hash
|
10
|
+
def method_missing(methodname, *params)
|
11
|
+
if self.class == Hash && key?(methodname.to_s)
|
12
|
+
self[methodname.to_s]
|
13
|
+
else
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
13
18
|
|
19
|
+
namespace :docker do
|
20
|
+
config = JSON.parse(File.read('docker/dockerconfig.json'))
|
21
|
+
TAG = ENV['TAG'] || 'latest'
|
14
22
|
desc 'exec bash for service container'
|
15
23
|
task :bash, [:service] do |_t, args|
|
16
|
-
exec_cmd("docker-compose -f #{debug_yml} exec #{args[:service] ||
|
24
|
+
exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} exec #{args[:service] || config.service_name} #{config.shell_command}")
|
17
25
|
end
|
18
26
|
|
19
27
|
desc 'destroy all services container'
|
20
28
|
task :down do |_t, _args|
|
21
|
-
exec_cmd("docker-compose -f #{debug_yml} down")
|
29
|
+
exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} down")
|
22
30
|
end
|
23
31
|
|
24
|
-
desc 'run
|
32
|
+
desc 'run test with docker'
|
25
33
|
task test: :up do
|
26
|
-
exec_cmd("docker-compose -f #{debug_yml}
|
27
|
-
|
28
|
-
|
34
|
+
exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} exec #{config.service_name} #{config.test_command}")
|
35
|
+
end
|
36
|
+
|
37
|
+
desc 'run rspec with docker'
|
38
|
+
task rspec: :test do
|
29
39
|
end
|
30
40
|
|
31
41
|
desc 'start service with docker with prod env'
|
32
42
|
task :run do
|
33
|
-
exec_cmd("docker-compose -f #{prod_yml} up -d")
|
43
|
+
exec_cmd("TAG=#{TAG} docker-compose -f #{config.prod_yml} up -d")
|
34
44
|
end
|
35
45
|
|
36
46
|
desc 'start service with docker in debug mode '
|
37
47
|
task :up do
|
38
|
-
exec_cmd("docker-compose -f #{debug_yml} up -d")
|
48
|
+
exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} up -d")
|
39
49
|
end
|
40
50
|
|
41
51
|
desc 'debug service with docker '
|
42
52
|
task debug: :up do
|
43
|
-
exec_cmd("docker-compose -f #{debug_yml} exec #{
|
53
|
+
exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} exec #{config.service_name} #{config.up_command}")
|
44
54
|
end
|
45
55
|
|
46
56
|
desc 'rubocop service with docker '
|
47
|
-
task
|
48
|
-
exec_cmd("docker-compose -f #{debug_yml} exec -T #{
|
57
|
+
task lint: :up do
|
58
|
+
exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} exec -T #{config.service_name} #{config.lint_command}")
|
49
59
|
end
|
50
60
|
|
51
61
|
desc 'gitpull'
|
@@ -54,32 +64,68 @@ namespace :docker do
|
|
54
64
|
end
|
55
65
|
|
56
66
|
desc 'precheck before release'
|
57
|
-
task precommit: %i[
|
58
|
-
exec_cmd("docker-compose -f #{debug_yml} down")
|
67
|
+
task precommit: %i[lint test gitpull] do |_t, _args|
|
68
|
+
exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} down")
|
59
69
|
hammer.say 'Precommit succeed.'
|
60
70
|
end
|
61
71
|
|
62
72
|
desc 'build as docker image '
|
63
73
|
task :build do
|
64
|
-
exec_cmd(
|
65
|
-
exec_cmd("docker build -t
|
74
|
+
exec_cmd(config.package_command.to_s)
|
75
|
+
exec_cmd("TAG=#{TAG} docker build -t #{config.image_name}:#{TAG} -f #{config.docker_file} .")
|
66
76
|
end
|
67
77
|
|
68
78
|
desc 'release docker image '
|
69
|
-
task :release
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
tag_cmd = "docker tag <%=@service_image_name%> #{remote_image}"
|
79
|
+
task :release do |_t, _args|
|
80
|
+
if `TAG=#{TAG} docker images -f reference=#{config.image_name}:#{TAG} -q`.chop.present?
|
81
|
+
remote_image = "#{config.docker_repo}/#{config.image_name}:#{TAG}"
|
82
|
+
tag_cmd = "TAG=#{TAG} docker tag #{config.image_name} #{remote_image}"
|
74
83
|
exec_cmd(tag_cmd)
|
75
|
-
push_cmd = "docker push #{remote_image}"
|
84
|
+
push_cmd = "TAG=#{TAG} docker push #{remote_image}"
|
76
85
|
exec_cmd(push_cmd)
|
77
|
-
rmi_cmd = "docker rmi #{remote_image}"
|
86
|
+
rmi_cmd = "TAG=#{TAG} docker rmi #{remote_image}"
|
78
87
|
exec_cmd(rmi_cmd)
|
79
88
|
hammer.say('pls commit code and push it manually!!')
|
80
89
|
else
|
81
90
|
hammer.say('There is no local image for push')
|
91
|
+
end
|
92
|
+
end
|
93
|
+
desc 'show docker config'
|
94
|
+
task :info do
|
95
|
+
last_build_time = `docker inspect -f '{{ .Created }}' #{config.image_name}`.chop
|
96
|
+
last_build_time = Time.parse(last_build_time).localtime
|
97
|
+
puts JSON.pretty_generate(config)
|
82
98
|
end
|
99
|
+
|
100
|
+
desc 'parse dockerfile and docker-compose'
|
101
|
+
task :parse do
|
102
|
+
match = ->(rexp) { File.open(config.docker_file).grep(rexp).first.match(rexp)[1] }
|
103
|
+
service_config = YAML.load_file(config.prod_yml)
|
104
|
+
image = service_config['services'][config.service_name]['image'].match(/((.*)\/)?(.*)/)
|
105
|
+
image_name = image[3].gsub('${TAG}', ENV['TAG'] || 'latest')
|
106
|
+
last_build_time = `docker inspect -f '{{ .Created }}' #{image_name}`.chop
|
107
|
+
last_build_time = Time.parse(last_build_time).localtime
|
108
|
+
ret = {
|
109
|
+
base_image: match.call(/FROM (.*)/),
|
110
|
+
author: match.call(/MAINTAINER (.*)/),
|
111
|
+
docker_repo: image[2] || 'docker.io',
|
112
|
+
image_name: image_name,
|
113
|
+
last_build_at: last_build_time
|
114
|
+
}
|
115
|
+
File.write(config.docker_parse, ret.to_json)
|
116
|
+
puts JSON.pretty_generate(ret)
|
117
|
+
end
|
118
|
+
|
119
|
+
desc 'dump docker task '
|
120
|
+
task :dump do
|
121
|
+
target_path = hammer.ask('target path?:')
|
122
|
+
hammer.directory('./docker', "#{target_path}/docker")
|
123
|
+
hammer.copy_file('./lib/tasks/docker.rake', "#{target_path}/docker/docker.rake")
|
124
|
+
target_rakefile = "#{target_path}/Rakefile"
|
125
|
+
File.open(target_rakefile, 'a') do |f|
|
126
|
+
f.puts "import 'docker/docker.rake'"
|
127
|
+
f.puts "require 'json'"
|
128
|
+
end
|
83
129
|
end
|
84
130
|
|
85
131
|
private
|
@@ -0,0 +1,17 @@
|
|
1
|
+
{
|
2
|
+
"base_name": "<%=@base_image_name%>",
|
3
|
+
"author": "<%=@author%>",
|
4
|
+
"docker_repo": "<%=@docker_repo_url%>",
|
5
|
+
"image_name": "<%=@service_image_name%>",
|
6
|
+
"service_name": "<%=@service_name%>",
|
7
|
+
"debug_yml": "docker/docker-compose.debug.yml",
|
8
|
+
"prod_yml": "docker/docker-compose.yml",
|
9
|
+
"docker_file": "docker/Dockerfile",
|
10
|
+
"docker_parse": "docker/.docker_parse.json",
|
11
|
+
"test_command": "bundle exec rspec --format documentation",
|
12
|
+
"up_command": "bundle exec rails s -b 0.0.0.0",
|
13
|
+
"lint_command": "rubocop -a",
|
14
|
+
"shell_command": "/bin/bash",
|
15
|
+
"package_command": "bundle package",
|
16
|
+
"db_type": "<%=@db_type%>"
|
17
|
+
}
|
@@ -2,34 +2,64 @@ module Rancher
|
|
2
2
|
class ConfigGenerator < Rails::Generators::Base
|
3
3
|
source_root File.expand_path('../templates', __FILE__)
|
4
4
|
def setup
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
@
|
5
|
+
config = file?('rancher/rancherconfig.json') ? load_json_file('rancher/rancherconfig.json') : {}
|
6
|
+
docker_config = file?('docker/dockerconfig.json') ? load_json_file('docker/dockerconfig.json') : {}
|
7
|
+
|
8
|
+
@docker_compose_config = YAML.load_file(docker_config['prod_yml'])
|
9
|
+
@services = @docker_compose_config['services'].each_with_object([]) { |(key, _value), r| r << key; }
|
10
|
+
@url = ask_with_default('Rancher URL:[example:http://<server_ip>:8080]', config['url'] || '')
|
11
|
+
@access_key = ask_with_default('ACCESS KEY:', config['accessKey'])
|
12
|
+
@secret_key = ask_with_default('SECRET KEY:', config['secretKey'])
|
13
|
+
@environment = ask_with_default('Enviroment Id Or Name:', config['environment'])
|
14
|
+
@stack = ask_with_default('stack name:', config['stack'] || File.basename(Dir.getwd))
|
15
|
+
|
9
16
|
@debug = false
|
10
17
|
end
|
11
18
|
|
19
|
+
def create_rancher_config
|
20
|
+
template 'rancherconfig.json', 'rancher/rancherconfig.json'
|
21
|
+
end
|
22
|
+
|
23
|
+
def ignore_rancher_config
|
24
|
+
ignore('.gitignore', 'rancher/rancherconfig.json')
|
25
|
+
ignore('.dockerignore', 'rancher/')
|
26
|
+
ignore('.dockerignore', 'lib/tasks/rancher.rake')
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_ranche_compose
|
30
|
+
template 'rancher-compose.yml', 'rancher/rancher-compose.yml'
|
31
|
+
end
|
32
|
+
|
12
33
|
def create_rancher_wrapper
|
13
34
|
template 'rancher', 'bin/rancher'
|
14
35
|
run('chmod +x bin/rancher')
|
15
36
|
end
|
16
37
|
|
17
|
-
|
18
|
-
|
19
|
-
def create_env_var
|
20
|
-
generate('direnv:config') unless file?('.envrc')
|
21
|
-
content = <<-CODE
|
22
|
-
export RANCHER_URL=#{@url}
|
23
|
-
export RANCHER_ACCESS_KEY=#{@access_key}
|
24
|
-
export RANCHER_SECRET_KEY=#{@secret_key}
|
25
|
-
export RANCHER_ENVIORONMENT=#{@environment}
|
26
|
-
export RANCHER_CLIENT_DEBUG=#{@debug}
|
27
|
-
CODE
|
28
|
-
append_to_file '.envrc', content
|
38
|
+
def create_rancher_task
|
39
|
+
template 'rancher.rake', 'lib/tasks/rancher.rake'
|
29
40
|
end
|
30
41
|
|
42
|
+
private
|
43
|
+
|
31
44
|
def file?(path)
|
32
45
|
File.exist?(path)
|
33
46
|
end
|
47
|
+
|
48
|
+
def ignore(filename, content)
|
49
|
+
if file? filename
|
50
|
+
append_to_file filename, content
|
51
|
+
else
|
52
|
+
create_file filename, content
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def load_json_file(file)
|
57
|
+
JSON.parse(File.read(file))
|
58
|
+
end
|
59
|
+
|
60
|
+
def ask_with_default(statement, default_value)
|
61
|
+
answer = ask("#{statement}[#{default_value}]:", Thor::Shell::Color::BLUE)
|
62
|
+
answer.present? ? answer : default_value
|
63
|
+
end
|
34
64
|
end
|
35
65
|
end
|
@@ -0,0 +1,186 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'thor'
|
4
|
+
class Hammer < Thor
|
5
|
+
include Thor::Actions
|
6
|
+
source_root '.'
|
7
|
+
end
|
8
|
+
|
9
|
+
class Hash
|
10
|
+
def method_missing(methodname, *params)
|
11
|
+
if self.class == Hash && key?(methodname.to_s)
|
12
|
+
self[methodname.to_s]
|
13
|
+
else
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
namespace :rancher do
|
20
|
+
rancherconfig = 'rancher/rancherconfig.json'
|
21
|
+
dockerconfig = 'docker/dockerconfig.json'
|
22
|
+
config = File.exist?(rancherconfig) ? JSON.parse(File.read(rancherconfig)) : {}
|
23
|
+
docker_config = JSON.parse(File.read(dockerconfig))
|
24
|
+
docker_file = 'docker/docker-compose.yml'
|
25
|
+
rancher_file = 'rancher/rancher-compose.yml'
|
26
|
+
tag = ENV['TAG'] || 'latest'
|
27
|
+
RANCHER = "rancher -c #{rancherconfig}".freeze
|
28
|
+
File.write('rancher/.env.tmp', "TAG=#{tag}")
|
29
|
+
RANCHER_UP = [
|
30
|
+
RANCHER,
|
31
|
+
'up',
|
32
|
+
"-s #{config.stack}",
|
33
|
+
"-f #{docker_file}",
|
34
|
+
"-rancher-file #{rancher_file}",
|
35
|
+
'-e rancher/.env.tmp'
|
36
|
+
].join(' ')
|
37
|
+
|
38
|
+
desc 'rancher up current service'
|
39
|
+
task :up_service, [:service] do |_t, _args|
|
40
|
+
exec_cmd(RANCHER_UP.to_s,
|
41
|
+
'--upgrade',
|
42
|
+
'--pull',
|
43
|
+
_args[:service] || docker_config.service_name)
|
44
|
+
end
|
45
|
+
|
46
|
+
desc 'rancher restart service'
|
47
|
+
task :restart, [:service] do |_t, _args|
|
48
|
+
exec_cmd(RANCHER.to_s,
|
49
|
+
'restart',
|
50
|
+
"#{config.stack}/#{_args[:service] || docker_config.service_name}")
|
51
|
+
end
|
52
|
+
|
53
|
+
desc 'rancher upall'
|
54
|
+
task :up, [:deamon] do |_t, _args|
|
55
|
+
exec_cmd(RANCHER_UP,
|
56
|
+
'--upgrade',
|
57
|
+
'--pull #{_args[:deamon]}')
|
58
|
+
end
|
59
|
+
desc 'rancher inspect stack'
|
60
|
+
task :inspect, [:opt] do |_t, _args|
|
61
|
+
exec_cmd(RANCHER, 'inspect', '-a')
|
62
|
+
end
|
63
|
+
|
64
|
+
desc 'rancher rm service'
|
65
|
+
task :rm do |_t, _args|
|
66
|
+
exec_cmd(RANCHER,
|
67
|
+
'rm',
|
68
|
+
"#{config.stack}/#{docker_config.service_name}")
|
69
|
+
end
|
70
|
+
|
71
|
+
desc 'rancher rm stack'
|
72
|
+
task :rm_stack do |_t, _args|
|
73
|
+
exec_cmd(RANCHER,
|
74
|
+
'rm',
|
75
|
+
config.stack)
|
76
|
+
end
|
77
|
+
|
78
|
+
desc 'rancher rollback service'
|
79
|
+
task :rollback, [:service] do |_t, _args|
|
80
|
+
exec_cmd(RANCHER_UP,
|
81
|
+
'-r',
|
82
|
+
_args[:service] || docker_config.service_name)
|
83
|
+
end
|
84
|
+
|
85
|
+
desc 'rancher upgrade'
|
86
|
+
task :upgrade_service, [:service] do |_t, _args|
|
87
|
+
exec_cmd(RANCHER_UP,
|
88
|
+
'--force-upgrade',
|
89
|
+
'--pull',
|
90
|
+
_args[:service] || docker_config.service_name)
|
91
|
+
end
|
92
|
+
|
93
|
+
desc 'rancher upgrade-all'
|
94
|
+
task :upgrade do |_t, _args|
|
95
|
+
exec_cmd(RANCHER_UP, '--force-upgrade', '--pull')
|
96
|
+
end
|
97
|
+
|
98
|
+
desc 'rancher confirm upgrade'
|
99
|
+
task :confirm, [:service] do |_t, _args|
|
100
|
+
exec_cmd(RANCHER_UP,
|
101
|
+
'--confirm-upgrade',
|
102
|
+
_args[:service] || docker_config.service_name)
|
103
|
+
end
|
104
|
+
|
105
|
+
desc 'rancher export'
|
106
|
+
task :export do |_t, _args|
|
107
|
+
exec_cmd(RANCHER, 'export', config.stack)
|
108
|
+
end
|
109
|
+
|
110
|
+
desc 'rancher host'
|
111
|
+
task :host do |_t, _args|
|
112
|
+
exec_cmd(RANCHER, 'host', '-a')
|
113
|
+
end
|
114
|
+
|
115
|
+
desc 'rancher ls container'
|
116
|
+
task :lsc do |_t, _args|
|
117
|
+
exec_cmd(RANCHER, 'ps', '-c')
|
118
|
+
end
|
119
|
+
|
120
|
+
desc 'rancher ls service'
|
121
|
+
task :lss do |_t, _args|
|
122
|
+
exec_cmd(RANCHER, 'ps', '-a')
|
123
|
+
end
|
124
|
+
|
125
|
+
desc 'rancher ls stacks'
|
126
|
+
task :lsk do |_t, _args|
|
127
|
+
exec_cmd(RANCHER, 'stacks')
|
128
|
+
end
|
129
|
+
|
130
|
+
desc 'rancher ls volume'
|
131
|
+
task lsv: [:volume] do |_t, _args|
|
132
|
+
end
|
133
|
+
|
134
|
+
desc 'rancher logs'
|
135
|
+
task :logs, [:container] do |_t, _args|
|
136
|
+
exec_cmd(RANCHER, 'logs', "#{config.stack}/#{docker_config.service_name}")
|
137
|
+
end
|
138
|
+
|
139
|
+
desc 'rancher exec'
|
140
|
+
task :exec, [:container, :cmd] do |_t, _args|
|
141
|
+
exec_cmd(RANCHER,
|
142
|
+
'-i',
|
143
|
+
'-t',
|
144
|
+
_args[:container],
|
145
|
+
_args[:cmd] || '/bin/bash')
|
146
|
+
end
|
147
|
+
|
148
|
+
desc 'rancher volume'
|
149
|
+
task :volume, [:cmd] do |_t, _args|
|
150
|
+
exec_cmd(RANCHER,
|
151
|
+
'volume',
|
152
|
+
_args[:cmd] || 'ls')
|
153
|
+
end
|
154
|
+
|
155
|
+
desc 'show rancher config'
|
156
|
+
task :info do
|
157
|
+
puts JSON.pretty_generate(config)
|
158
|
+
end
|
159
|
+
|
160
|
+
desc 'dump rancher task '
|
161
|
+
task :dump do
|
162
|
+
target_path = hammer.ask('target path?:')
|
163
|
+
hammer.directory('./rancher', "#{target_path}/rancher")
|
164
|
+
hammer.copy_file('./lib/tasks/rancher.rake', "#{target_path}/rancher/rancher.rake")
|
165
|
+
target_rakefile = "#{target_path}/Rakefile"
|
166
|
+
File.open(target_rakefile, 'a') do |f|
|
167
|
+
f.puts "import 'rancher/rancher.rake'"
|
168
|
+
end
|
169
|
+
hammer.directory('bin/rancher', "#{target_path}/bin")
|
170
|
+
end
|
171
|
+
|
172
|
+
private
|
173
|
+
|
174
|
+
def exec_cmd(*cmdstr)
|
175
|
+
hammer.say cmdstr.join(' ')
|
176
|
+
hammer.run(cmdstr.join(' '))
|
177
|
+
end
|
178
|
+
|
179
|
+
def hello
|
180
|
+
p :hello
|
181
|
+
end
|
182
|
+
|
183
|
+
def hammer
|
184
|
+
Hammer.new
|
185
|
+
end
|
186
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: generators_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- shaoyang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -59,6 +59,7 @@ files:
|
|
59
59
|
- lib/generators/docker/config/templates/docker-compose.yml
|
60
60
|
- lib/generators/docker/config/templates/docker.rake
|
61
61
|
- lib/generators/docker/config/templates/dockercfg.yml
|
62
|
+
- lib/generators/docker/config/templates/dockerconfig.json
|
62
63
|
- lib/generators/docker/config/templates/mongo.erb
|
63
64
|
- lib/generators/docker/config/templates/mongoid.yml
|
64
65
|
- lib/generators/docker/config/templates/mysql.erb
|
@@ -66,6 +67,9 @@ files:
|
|
66
67
|
- lib/generators/rancher/config/USAGE
|
67
68
|
- lib/generators/rancher/config/config_generator.rb
|
68
69
|
- lib/generators/rancher/config/templates/rancher
|
70
|
+
- lib/generators/rancher/config/templates/rancher-compose.yml
|
71
|
+
- lib/generators/rancher/config/templates/rancher.rake
|
72
|
+
- lib/generators/rancher/config/templates/rancherconfig.json
|
69
73
|
- lib/generators/rspec/config/USAGE
|
70
74
|
- lib/generators/rspec/config/config_generator.rb
|
71
75
|
- lib/generators/setup/full/USAGE
|