Module: Toquen::LocalWriter
- Defined in:
- lib/toquen/local_writer.rb
Class Method Summary collapse
- .create_databag_item(details) ⇒ Object
- .create_stage(name, servers) ⇒ Object
- .superfluous_check!(servers, roles) ⇒ Object
Class Method Details
.create_databag_item(details) ⇒ Object
3 4 5 6 7 8 9 |
# File 'lib/toquen/local_writer.rb', line 3 def self.create_databag_item(details) servers = "#{fetch(:chef_data_bags_path)}/servers" FileUtils.mkdir_p servers open("#{servers}/#{details[:name]}.json", 'w') do |f| f.write JSON.dump(details) end end |
.create_stage(name, servers) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/toquen/local_writer.rb', line 11 def self.create_stage(name, servers) run_locally { info "Creating stage '#{name}' with servers: #{servers.map { |s| s[:name] }.join(', ')}" } open("config/deploy/#{name}.rb", 'w') do |f| f.write("# This file will be overwritten by toquen! Don't put anything here.\n") f.write("set :stage, '#{name}'.intern\n") secgroups = [] servers.each { |details| rstring = (details[:roles] + [ "all", "server-#{details[:name]}" ]).join(' ') f.write("server '#{details[:external_ip]}', ") f.write("roles: %w{#{rstring}}, ") f.write("environment: \"#{details[:environment]}\", ") unless details[:environment].nil? f.write("awsname: '#{details[:name]}'\n") secgroups += details[:security_groups] } secstring = secgroups.uniq.join(' ') f.write("set :filter, roles: %w{#{name}}, secgroups: %w{#{secstring}}\n") end end |
.superfluous_check!(servers, roles) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/toquen/local_writer.rb', line 30 def self.superfluous_check!(servers, roles) # check for superflous stages / data bag items and warn if found run_locally do Dir["#{fetch(:chef_data_bags_path)}/servers/*.json"].each { |path| unless servers.include? File.basename(path, ".json") warn "Data bag item #{path} does not represent an active server. You should delete it." end } stages = roles + servers.map { |n| "server-#{n}" } Dir["config/deploy/*.rb"].each { |path| unless stages.include? File.basename(path, ".rb") warn "Stage #{path} does not represent an active server. You should delete it." end } end end |