Skip to content
Snippets Groups Projects

Run instances with IMDSv2

Merged Thiago Presa requested to merge tpresa-run-instances-imdsv2 into master
All threads resolved!
Files
2
@@ -29,21 +29,23 @@ import (
@@ -29,21 +29,23 @@ import (
)
)
const (
const (
driverName = "amazonec2"
driverName = "amazonec2"
ipRange = "0.0.0.0/0"
ipRange = "0.0.0.0/0"
machineSecurityGroupName = "docker-machine"
machineSecurityGroupName = "docker-machine"
defaultAmiId = "ami-c60b90d1"
defaultAmiId = "ami-c60b90d1"
defaultRegion = "us-east-1"
defaultRegion = "us-east-1"
defaultInstanceType = "t2.micro"
defaultInstanceType = "t2.micro"
defaultDeviceName = "/dev/sda1"
defaultDeviceName = "/dev/sda1"
defaultRootSize = 16
defaultRootSize = 16
defaultVolumeType = "gp2"
defaultVolumeType = "gp2"
defaultZone = "a"
defaultZone = "a"
defaultSecurityGroup = machineSecurityGroupName
defaultSecurityGroup = machineSecurityGroupName
defaultSSHPort = 22
defaultSSHPort = 22
defaultSSHUser = "ubuntu"
defaultSSHUser = "ubuntu"
defaultSpotPrice = "0.50"
defaultSpotPrice = "0.50"
defaultBlockDurationMinutes = 0
defaultBlockDurationMinutes = 0
 
defaultMetadataTokenSetting = "optional"
 
defaultMetadataTokenResponseHopLimit = 1
)
)
const (
const (
@@ -89,31 +91,32 @@ type Driver struct {
@@ -89,31 +91,32 @@ type Driver struct {
SecurityGroupName string
SecurityGroupName string
SecurityGroupNames []string
SecurityGroupNames []string
SecurityGroupReadOnly bool
SecurityGroupReadOnly bool
OpenPorts []string
OpenPorts []string
Tags string
Tags string
ReservationId string
ReservationId string
DeviceName string
DeviceName string
RootSize int64
RootSize int64
VolumeType string
VolumeType string
IamInstanceProfile string
IamInstanceProfile string
VpcId string
VpcId string
SubnetId string
SubnetId string
Zone string
Zone string
keyPath string
keyPath string
RequestSpotInstance bool
RequestSpotInstance bool
SpotPrice string
SpotPrice string
BlockDurationMinutes int64
BlockDurationMinutes int64
PrivateIPOnly bool
PrivateIPOnly bool
UsePrivateIP bool
UsePrivateIP bool
UseEbsOptimizedInstance bool
UseEbsOptimizedInstance bool
Monitoring bool
Monitoring bool
SSHPrivateKeyPath string
SSHPrivateKeyPath string
RetryCount int
RetryCount int
Endpoint string
Endpoint string
DisableSSL bool
DisableSSL bool
UserDataFile string
UserDataFile string
MetadataToken string
MetadataTokenSetting string
 
MetadataTokenResponseHopLimit int64
spotInstanceRequestId string
spotInstanceRequestId string
}
}
@@ -291,7 +294,12 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
@@ -291,7 +294,12 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
mcnflag.StringFlag{
mcnflag.StringFlag{
Name: "amazonec2-metadata-token",
Name: "amazonec2-metadata-token",
Usage: "Whether the metadata token is required or optional",
Usage: "Whether the metadata token is required or optional",
Value: "optional",
Value: defaultMetadataTokenSetting,
 
},
 
mcnflag.IntFlag{
 
Name: "amazonec2-metadata-token-response-hop-limit",
 
Usage: "The number of network hops that the metadata token can travel",
 
Value: defaultMetadataTokenResponseHopLimit,
},
},
}
}
}
}
@@ -314,6 +322,8 @@ func NewDriver(hostName, storePath string) *Driver {
@@ -314,6 +322,8 @@ func NewDriver(hostName, storePath string) *Driver {
MachineName: hostName,
MachineName: hostName,
StorePath: storePath,
StorePath: storePath,
},
},
 
MetadataTokenSetting: defaultMetadataTokenSetting,
 
MetadataTokenResponseHopLimit: defaultMetadataTokenResponseHopLimit,
}
}
driver.clientFactory = driver.buildClient
driver.clientFactory = driver.buildClient
@@ -391,7 +401,8 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
@@ -391,7 +401,8 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
d.RetryCount = flags.Int("amazonec2-retries")
d.RetryCount = flags.Int("amazonec2-retries")
d.OpenPorts = flags.StringSlice("amazonec2-open-port")
d.OpenPorts = flags.StringSlice("amazonec2-open-port")
d.UserDataFile = flags.String("amazonec2-userdata")
d.UserDataFile = flags.String("amazonec2-userdata")
d.MetadataToken = flags.String("amazonec2-metadata-token")
d.MetadataTokenSetting = flags.String("amazonec2-metadata-token")
 
d.MetadataTokenResponseHopLimit = int64(flags.Int("amazonec2-metadata-token-response-hop-limit"))
d.DisableSSL = flags.Bool("amazonec2-insecure-transport")
d.DisableSSL = flags.Bool("amazonec2-insecure-transport")
if d.DisableSSL && d.Endpoint == "" {
if d.DisableSSL && d.Endpoint == "" {
@@ -746,7 +757,8 @@ func (d *Driver) innerCreate() error {
@@ -746,7 +757,8 @@ func (d *Driver) innerCreate() error {
InstanceType: &d.InstanceType,
InstanceType: &d.InstanceType,
NetworkInterfaces: netSpecs,
NetworkInterfaces: netSpecs,
MetadataOptions: &ec2.InstanceMetadataOptionsRequest{
MetadataOptions: &ec2.InstanceMetadataOptionsRequest{
HttpTokens: &d.MetadataToken,
HttpTokens: &d.MetadataTokenSetting,
 
HttpPutResponseHopLimit: &d.MetadataTokenResponseHopLimit,
},
},
Monitoring: &ec2.RunInstancesMonitoringEnabled{Enabled: aws.Bool(d.Monitoring)},
Monitoring: &ec2.RunInstancesMonitoringEnabled{Enabled: aws.Bool(d.Monitoring)},
IamInstanceProfile: &ec2.IamInstanceProfileSpecification{
IamInstanceProfile: &ec2.IamInstanceProfileSpecification{
Loading