huxley-cli
Version:
CLI for Huxley Deployment Platform
91 lines (89 loc) • 3.73 kB
text/coffeescript
module.exports =
questions: (config) ->
console.log "This utility will walk you through configuring a Huxley cluster."
console.log "It pulls from your local config or tries to guess sane defaults."
console.log " "
console.log "See https://github.com/pandastrike/huxley/wiki for definitive documentation"
console.log " "
console.log "Press ^C at any time to quit."
[
name: "size"
description: "Cluster Size [3-12]:"
message: "Specify an integer between 3 and 12, inclusive."
default: 3
conform: (v) ->
return false if Number.isNaN v
return false if v % 1 != 0
if 12 >= v >= 3 then true else false
,
name: "type"
description: "EC2 Instance Type:"
enum: ["c1.medium", "c1.xlarge", "c3.large", "c3.xlarge", "c3.2xlarge", "c3.4xlarge", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "m3.large", "m3.xlarge", "m3.2xlarge"]
message: "Specify one among the allowed EC2 Instance Types: \nc1.medium, c1.xlarge, \nc3.large, c3.xlarge, c3.2xlarge, c3.4xlarge, \nm1.medium, m1.large, m1.xlarge, \nm2.xlarge, m2.2xlarge, m2.4xlarge, \nm3.large, m3.xlarge, m3.2xlarge"
default: do ->
if config.cluster && config.cluster.instance
return config.cluster.instance
else
return "m1.medium"
,
name: "virtualization"
description: "Instance Virtualizaiton Type:"
enum: ["pv", "hvm"]
message: "Specify one among the allowed virtualization types: pv, hvm"
default: do ->
if config.cluster && config.cluster.virtualization
return config.cluster.virtualization
else
return "pv"
,
name: "region"
description: "AWS Region:"
enum: ["ap-northeast-1", "ap-southeast-1", "ap-southeast-2", "eu-central-1", "eu-west-1", "sa-east-1", "us-east-1", "us-west-1", "us-west-2"]
message: "Specify one among the allowed AWS Regions: \nap-northeast-1, ap-southeast-1, ap-southeast-2, \neu-central-1, eu-west-1, \nsa-east-1, \nus-east-1, us-west-1, us-west-2"
default: config.aws.region
,
name: "zone"
description: "Availability Zone:"
default: config.aws.availability_zone
,
name: "key"
description: "Default SSH Key:"
default: config.aws.key_name
,
name: "channel"
description: "CoreOS Channel:"
enum: ["stable", "beta", "alpha"]
message: "Specify among the allowed CoreOS channels: alpha, beta, stable"
default: do ->
if config.coreos && config.coreos.channel
return confg.coreos.channel
else
return "stable"
,
name: "price"
description: "Spot Bid [or 0 for on-demand]:"
message: "Specify a bid ($/hr) greater that 0 for a Spot Instance, or specify 0 to use an On-Demand Instance."
default: do ->
if config.cluster && config.cluster.price
return config.cluster.price
else
return 0
conform: (v) ->
return false if Number.isNaN v
if v >= 0 then true else false
,
name: "domain"
description: "Public Domain:"
message: "Specify a publicly accessable domain for the cluster:"
default: config.cluster.domain if config.cluster
,
name: "tags"
description: "Descriptive Tag:"
minLength: 1
maxLength: 254
default: do ->
if config.cluster && config.cluster.tags
return config.cluster.tags
else
return "huxley"
]