def build_from(*ip_addrs)
      ip_addrs = [*ip_addrs].flatten.compact
      begin
        Fleetctl.logger.info 'building from hosts: ' + ip_addrs.inspect
        built_from = ip_addrs.detect { |ip_addr| fetch_machines(ip_addr) }
        Fleetctl.logger.info 'built successfully from host: ' + built_from.inspect if built_from
        built_from
      rescue => e
        Fleetctl.logger.error 'ERROR building from hosts: ' + ip_addrs.inspect
        Fleetctl.logger.error e.message
        Fleetctl.logger.error e.backtrace.join("\n")
        nil
      end
    end
def build_from(*ip_addrs)
      ip_addrs = [*ip_addrs].flatten.compact
      begin
        Fleetctl.logger.info 'building from hosts: ' + ip_addrs.inspect
        built_from = ip_addrs.detect { |ip_addr| fetch_machines(ip_addr) }
        Fleetctl.logger.info 'built successfully from host: ' + built_from.inspect if built_from
        built_from
      rescue => e
        Fleetctl.logger.error 'ERROR building from hosts: ' + ip_addrs.inspect
        Fleetctl.logger.error e.message
        Fleetctl.logger.error e.backtrace.join("\n")
        nil
      end
    end
attempts to rebuild the cluster from any of the hosts passed as arguments
 returns the first ip that worked, else nil