-
Notifications
You must be signed in to change notification settings - Fork 402
Asgard Configuration
Joe Sondow edited this page Nov 22, 2013
·
14 revisions
Optional functions of Asgard can be enabled by editing ~/.asgard/Config.groovy
import com.netflix.asgard.model.HardwareProfile
import com.netflix.asgard.model.InstanceTypeData
// List of relevant Amazon Web Services account numbers as strings, starting with the
// account primarily used by this Asgard instance. All other accounts in the list are
// candidates for cross-account sharing of resources such as Amazon Machine Images
// (AMIs). When an AMI gets used in an Auto Scaling Group in the current account,
// Asgard then attempts to grant launch permissions for that AMI to all other accounts
// in this list.
grails.awsAccounts = ['123456789012', '098765432109']
// Map of interesting AWS account numbers to account nicknames. These will be
// displayed on the home page and may also be used in some parts of the user
// interface to show the account nickname instead of the account number.
grails.awsAccountNames = ['123456789012': 'test', '098765432109': 'prod']
cloud {
// Nickname of the current account, for display and messages. Usually this should
// match the first value in grails.awsAccountNames.
accountName = 'test'
// Choose a skin name to change the look and feel of this Asgard GUI.
// 'test' has a black header with red logotype, 'prod' has a red header with
// black logotype.
envStyle = 'test'
// The name of the EC2 SSH Keypair that you recommend for most deployments.
defaultKeyName = 'test-keypair-primary'
// The root URL of the build server (probably Jenkins) that Asgard should use
// to construct hyperlinks to the builds that generated tagged AMIs through
// Aminator.
buildServer = 'http://builds.example.com'
// A list of instance types that should be added to the instance types list screen
// and the instance types form select fields. By default this custom list is empty,
// and only the instance types published in the InstanceType.java enum in the
// aws-java-sdk library are displayed in Asgard.
customInstanceTypes = [
new InstanceTypeData(linuxOnDemandPrice: 0.15, hardwareProfile:
new HardwareProfile(instanceType: 'c3.large',
family: 'Compute Optimized', group: 'c3', size: 'Large',
arch: '64-bit', vCpu: '2', ecu: '7', mem: '3.75',
storage: '2 x 16', ebsOptim: '-', netPerf: '?')),
new InstanceTypeData(linuxOnDemandPrice: 0.30, hardwareProfile:
new HardwareProfile(instanceType: 'c3.xlarge',
family: 'Compute Optimized', group: 'c3',
size: 'Extra Large', arch: '64-bit', vCpu: '4', ecu: '14',
mem: '7', storage: '2 x 40', ebsOptim: '-', netPerf: '?')),
new InstanceTypeData(linuxOnDemandPrice: 0.60, hardwareProfile:
new HardwareProfile(instanceType: 'c3.2xlarge',
family: 'Compute Optimized', group: 'c3',
size: 'Double Extra Large', arch: '64-bit', vCpu: '8',
ecu: '28', mem: '15', storage: '2 x 80', ebsOptim: '-',
netPerf: '?')),
new InstanceTypeData(linuxOnDemandPrice: 1.20, hardwareProfile:
new HardwareProfile(instanceType: 'c3.4xlarge',
family: 'Compute Optimized', group: 'c3',
size: 'Quadruple Extra Large', arch: '64-bit', vCpu: '16',
ecu: '55', mem: '30', storage: '2 x 160', ebsOptim: '-',
netPerf: '?')),
new InstanceTypeData(linuxOnDemandPrice: 2.40, hardwareProfile:
new HardwareProfile(instanceType: 'c3.8xlarge',
family: 'Compute Optimized', group: 'c3',
size: 'Eight Extra Large', arch: '64-bit', vCpu: '32',
ecu: '108', mem: '60', storage: '2 x 320', ebsOptim: '-',
netPerf: '?')),
]
// Special cases for how to launch certain instance types.
launchConfig {
// Details about when and how to add EBS volumes in a launch configuration.
ebsVolumes {
// A Closure that takes an instance type string and returns a boolean.
// If true, EBS volumes will be added for the instance type.
// Otherwise, no EBS volumes.
instanceTypeNeeds = { String instanceType ->
instanceType.startsWith('m3.') // Default implementation
}
// Number of GB of storage each EBS volume will have, if the instance
// type needs EBS volumes.
size = 125 // Default value
// The list of device names of all the EBS volumes that be added, if the
// instance type needs EBS volumes.
deviceNames = ['/dev/sdb', '/dev/sdc'] // Default list
}
}
}
promote {
// The address of the Asgard server that should receive all the REST calls to add,
// update, and delete image tags in order keep the image tags identical between the
// source and target accounts.
targetServer = 'http://asgardprod'
// Set this to true in order to turn on image replication from this Asgard instance.
// Only set this on the source Asgard, not on the target Asgard.
imageTags = true
// The address of the One True Asgard Instance that should be solely responsible for
// automated replication of image tags to the tag promotion target account. Asgard
// will query this address for its internal host name in order to answer the question
// "Am I the current Asgard instance who should do the tag replication?"
canonicalServerForBakeEnvironment = 'http://asgardtest'
}
A Netflix Original Production
Tech Blog | Twitter @NetflixOSS | Jobs