before deploy hook: generate run list

This commit is contained in:
Anton Martynov 2015-08-21 15:17:42 +03:00
parent 6c1cd9b9f2
commit 83cb04ab85
3 changed files with 28 additions and 10 deletions

View File

@ -139,7 +139,8 @@ module Devops
def deploy_info deploy_env, build_number def deploy_info deploy_env, build_number
{ {
"run_list" => deploy_env.run_list, "use_json_file" => true,
# "run_list" => Set.new.merge(self.run_list).merge(deploy_env.run_list).to_a,
"project" => self.id, "project" => self.id,
"project_info" => { "project_info" => {
"project" => self.id, "project" => self.id,

View File

@ -20,6 +20,8 @@ module Devops
define_hook :before_bootstrap define_hook :before_bootstrap
define_hook :after_bootstrap define_hook :after_bootstrap
before_deploy :create_run_list
def initialize server, out def initialize server, out
if server if server
@project = Devops::Db.connector.project(server.project) @project = Devops::Db.connector.project(server.project)
@ -72,8 +74,6 @@ module Devops
@out.flush @out.flush
DevopsLogger.logger.info "Server with parameters: #{@server.to_hash.inspect} is running" DevopsLogger.logger.info "Server with parameters: #{@server.to_hash.inspect} is running"
unless options["without_bootstrap"] unless options["without_bootstrap"]
@server.run_list = Set.new.merge(@project.run_list).merge(@deploy_env.run_list).merge(@server.run_list).to_a
@server.chef_node_name = provider.create_default_chef_node_name(@server) if @server.chef_node_name.nil?
bootstrap_options = { bootstrap_options = {
bootstrap_template: i.bootstrap_template bootstrap_template: i.bootstrap_template
} }
@ -132,6 +132,7 @@ module Devops
retry retry
end end
@server.chef_node_name = provider.create_default_chef_node_name(@server) if @server.chef_node_name.nil?
r = @knife_instance.knife_bootstrap(@out, ip, self.bootstrap_options(ja, options)) r = @knife_instance.knife_bootstrap(@out, ip, self.bootstrap_options(ja, options))
if r == 0 if r == 0
@out << "Chef node name: #{@server.chef_node_name}\n" @out << "Chef node name: #{@server.chef_node_name}\n"
@ -142,6 +143,7 @@ module Devops
@out << "Done\n" @out << "Done\n"
DevopsLogger.logger.info "Server with id '#{@server.id}' is bootstraped" DevopsLogger.logger.info "Server with id '#{@server.id}' is bootstraped"
else else
@out << "Can not bootstrap node '#{@server.id}', error code: #{r}"
end end
@out.flush @out.flush
r r
@ -178,13 +180,13 @@ module Devops
@out << "\n" @out << "\n"
@out.flush @out.flush
run_list = @server.run_list + provider.run_list # run_list = @server.run_list + provider.run_list
@out << "\nRun list: #{run_list.inspect}" # @out << "\nRun list: #{run_list.inspect}"
# s.options[:run_list] += run_list # s.options[:run_list] += run_list
@knife_instance.set_run_list(@server.chef_node_name, run_list) # @knife_instance.set_run_list(@server.chef_node_name, run_list)
status = deploy_server({}) status = deploy_server(@project.deploy_info(@deploy_env))
if status != 0 if status != 0
msg = "Failed on chef-client with project run list, server with id '#{@server.id}'" msg = "Failed on chef-client with run list, server with id '#{@server.id}'"
DevopsLogger.logger.error msg DevopsLogger.logger.error msg
@out << "\n" + msg + "\n" @out << "\n" + msg + "\n"
end end
@ -347,6 +349,21 @@ module Devops
end end
end end
def create_run_list out, deploy_info
out << "\nGenerate run list hook...\n"
out << "Project run list: #{@project.run_list.join(", ")}\n"
out << "Deploy environment run list: #{@deploy_env.run_list.join(", ")}\n"
out << "Server run list: #{@server.run_list.join(", ")}\n"
rlist = Set.new.merge(@project.run_list).merge(@deploy_env.run_list).merge(@server.run_list)
if @server.stack
stack = Devops::Db.stack(@server.stack)
out << "Stack run list: #{stack.run_list.join(", ")}\n"
rlist.merge(stack.run_list)
end
deploy_info["run_list"] = rlist.to_a
out << "New deploy run list: #{deploy_info["run_list"].join(", ")}\nRun list has been generated\n\n"
end
end end
end end
end end

View File

@ -68,7 +68,7 @@ class StackBootstrapWorker < Worker
server = ::Devops::Model::Server.new(server_attrs) server = ::Devops::Model::Server.new(server_attrs)
mongo.server_insert(server) mongo.server_insert(server)
server.chef_node_name = provider.create_default_chef_node_name(server) # server.chef_node_name = provider.create_default_chef_node_name(server)
server server
end end
end end