Merge pull request #2640 from pottava/2492-awsec2-blockdevicemapping-configurable

Fix amazonec2 initiated shutdown caused by constant DeviceName
This commit is contained in:
David Gageot 2015-12-28 10:41:54 +01:00
commit 3988b5fabf
2 changed files with 24 additions and 2 deletions

View File

@ -43,7 +43,9 @@ This example assumes the VPC ID was found in the `a` availability zone. Use the`
- `--amazonec2-subnet-id`: AWS VPC subnet id. - `--amazonec2-subnet-id`: AWS VPC subnet id.
- `--amazonec2-security-group`: AWS VPC security group name. - `--amazonec2-security-group`: AWS VPC security group name.
- `--amazonec2-instance-type`: The instance type to run. - `--amazonec2-instance-type`: The instance type to run.
- `--amazonec2-device-name`: The root device name of the instance.
- `--amazonec2-root-size`: The root disk size of the instance (in GB). - `--amazonec2-root-size`: The root disk size of the instance (in GB).
- `--amazonec2-volume-type`: The Amazon EBS volume type to be attached to the instance.
- `--amazonec2-iam-instance-profile`: The AWS IAM role name to be used as the instance profile. - `--amazonec2-iam-instance-profile`: The AWS IAM role name to be used as the instance profile.
- `--amazonec2-ssh-user`: SSH Login user name. - `--amazonec2-ssh-user`: SSH Login user name.
- `--amazonec2-request-spot-instance`: Use spot instances. - `--amazonec2-request-spot-instance`: Use spot instances.
@ -82,7 +84,9 @@ Environment variables and default values:
| `--amazonec2-subnet-id` | `AWS_SUBNET_ID` | - | | `--amazonec2-subnet-id` | `AWS_SUBNET_ID` | - |
| `--amazonec2-security-group` | `AWS_SECURITY_GROUP` | `docker-machine` | | `--amazonec2-security-group` | `AWS_SECURITY_GROUP` | `docker-machine` |
| `--amazonec2-instance-type` | `AWS_INSTANCE_TYPE` | `t2.micro` | | `--amazonec2-instance-type` | `AWS_INSTANCE_TYPE` | `t2.micro` |
| `--amazonec2-device-name` | `AWS_DEVICE_NAME` | `/dev/sda1` |
| `--amazonec2-root-size` | `AWS_ROOT_SIZE` | `16` | | `--amazonec2-root-size` | `AWS_ROOT_SIZE` | `16` |
| `--amazonec2-volume-type` | `AWS_VOLUME_TYPE` | `gp2` |
| `--amazonec2-iam-instance-profile` | `AWS_INSTANCE_PROFILE` | - | | `--amazonec2-iam-instance-profile` | `AWS_INSTANCE_PROFILE` | - |
| `--amazonec2-ssh-user` | `AWS_SSH_USER` | `ubuntu` | | `--amazonec2-ssh-user` | `AWS_SSH_USER` | `ubuntu` |
| `--amazonec2-request-spot-instance` | - | `false` | | `--amazonec2-request-spot-instance` | - | `false` |

View File

@ -32,7 +32,9 @@ const (
defaultAmiId = "ami-615cb725" defaultAmiId = "ami-615cb725"
defaultRegion = "us-east-1" defaultRegion = "us-east-1"
defaultInstanceType = "t2.micro" defaultInstanceType = "t2.micro"
defaultDeviceName = "/dev/sda1"
defaultRootSize = 16 defaultRootSize = 16
defaultVolumeType = "gp2"
defaultZone = "a" defaultZone = "a"
defaultSecurityGroup = machineSecurityGroupName defaultSecurityGroup = machineSecurityGroupName
defaultSSHUser = "ubuntu" defaultSSHUser = "ubuntu"
@ -64,7 +66,9 @@ type Driver struct {
SecurityGroupId string SecurityGroupId string
SecurityGroupName string SecurityGroupName string
ReservationId string ReservationId string
DeviceName string
RootSize int64 RootSize int64
VolumeType string
IamInstanceProfile string IamInstanceProfile string
VpcId string VpcId string
SubnetId string SubnetId string
@ -133,12 +137,24 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
Value: defaultInstanceType, Value: defaultInstanceType,
EnvVar: "AWS_INSTANCE_TYPE", EnvVar: "AWS_INSTANCE_TYPE",
}, },
mcnflag.StringFlag{
Name: "amazonec2-device-name",
Usage: "AWS root device name",
Value: defaultDeviceName,
EnvVar: "AWS_DEVICE_NAME",
},
mcnflag.IntFlag{ mcnflag.IntFlag{
Name: "amazonec2-root-size", Name: "amazonec2-root-size",
Usage: "AWS root disk size (in GB)", Usage: "AWS root disk size (in GB)",
Value: defaultRootSize, Value: defaultRootSize,
EnvVar: "AWS_ROOT_SIZE", EnvVar: "AWS_ROOT_SIZE",
}, },
mcnflag.StringFlag{
Name: "amazonec2-volume-type",
Usage: "Amazon EBS volume type",
Value: defaultVolumeType,
EnvVar: "AWS_VOLUME_TYPE",
},
mcnflag.StringFlag{ mcnflag.StringFlag{
Name: "amazonec2-iam-instance-profile", Name: "amazonec2-iam-instance-profile",
Usage: "AWS IAM Instance Profile", Usage: "AWS IAM Instance Profile",
@ -217,7 +233,9 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
d.SecurityGroupName = flags.String("amazonec2-security-group") d.SecurityGroupName = flags.String("amazonec2-security-group")
zone := flags.String("amazonec2-zone") zone := flags.String("amazonec2-zone")
d.Zone = zone[:] d.Zone = zone[:]
d.DeviceName = flags.String("amazonec2-device-name")
d.RootSize = int64(flags.Int("amazonec2-root-size")) d.RootSize = int64(flags.Int("amazonec2-root-size"))
d.VolumeType = flags.String("amazonec2-volume-type")
d.IamInstanceProfile = flags.String("amazonec2-iam-instance-profile") d.IamInstanceProfile = flags.String("amazonec2-iam-instance-profile")
d.SwarmMaster = flags.Bool("swarm-master") d.SwarmMaster = flags.Bool("swarm-master")
d.SwarmHost = flags.String("swarm-host") d.SwarmHost = flags.String("swarm-host")
@ -373,10 +391,10 @@ func (d *Driver) Create() error {
} }
bdm := &ec2.BlockDeviceMapping{ bdm := &ec2.BlockDeviceMapping{
DeviceName: aws.String("/dev/sda1"), DeviceName: aws.String(d.DeviceName),
Ebs: &ec2.EbsBlockDevice{ Ebs: &ec2.EbsBlockDevice{
VolumeSize: aws.Int64(d.RootSize), VolumeSize: aws.Int64(d.RootSize),
VolumeType: aws.String("gp2"), VolumeType: aws.String(d.VolumeType),
DeleteOnTermination: aws.Bool(true), DeleteOnTermination: aws.Bool(true),
}, },
} }