Method: Auger::Project#server

Defined in:
lib/auger/project.rb

#server(*args) ⇒ Object

set server, or list of server names, with optional roles and options e.g. server server1, server2, :roleA, :roleB, options => values servers can be any combination in:

strings: passed through HostRange to make an array
array: or expressions that returns an array
block: returning an array (arrays will be flattened)

roles are symbols options are hash members, must be last args



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/auger/project.rb', line 29

def server(*args)
  options = args.last.is_a?(Hash) ? args.pop : {}
  roles = args.select { |arg| arg.class == Symbol }
  servers =
    args.select { |arg| arg.class == String }.map { |arg| HostRange.parse(arg) } +
    args.select { |arg| arg.class == Array } +
    (block_given? ? yield : [])
  @servers += servers.flatten.map do |name|
    Auger::Server.new(name, *roles, options)
  end
end