From dbbde4e624ae04eaa856431eeafdd13a9e93e1cd Mon Sep 17 00:00:00 2001 From: JT Date: Sat, 19 Aug 2023 16:17:41 +0800 Subject: [PATCH] feat: configurable CPU type (#20) * feat: allow cpu type to be passed * Formatting fixes * chore: self mutation Signed-off-by: github-actions --------- Signed-off-by: github-actions Co-authored-by: Dan Reiland Co-authored-by: github-actions --- API.md | 14 ++++++++++++++ src/index.ts | 26 ++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/API.md b/API.md index 4203756..7f6fb47 100644 --- a/API.md +++ b/API.md @@ -275,6 +275,7 @@ const tailscaleBastionProps: TailscaleBastionProps = { ... } | additionalInit | aws-cdk-lib.aws_ec2.InitElement[] | Additional cloudformation init actions to perform during startup. | | advertiseRoute | string | Advertise a custom route instead of using the VPC CIDR, used for Tailscale 4via6 support. | | availabilityZone | string | In which AZ to place the instance within the VPC. | +| cpuType | aws-cdk-lib.aws_ec2.AmazonLinuxCpuType | CPU Type of the instance. | | incomingRoutes | string[] | List of incoming routes from Tailscale network. | | instanceName | string | The name of the instance. | | instanceType | aws-cdk-lib.aws_ec2.InstanceType | Type of instance to launch. | @@ -347,6 +348,19 @@ In which AZ to place the instance within the VPC. --- +##### `cpuType`Optional + +```typescript +public readonly cpuType: AmazonLinuxCpuType; +``` + +- *Type:* aws-cdk-lib.aws_ec2.AmazonLinuxCpuType +- *Default:* AmazonLinuxCpuType.X86_64 + +CPU Type of the instance. + +--- + ##### `incomingRoutes`Optional ```typescript diff --git a/src/index.ts b/src/index.ts index 9f18046..ef054bf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,20 @@ import { CfnOutput, Fn, Stack, Token } from 'aws-cdk-lib'; -import { BastionHostLinux, CloudFormationInit, InitCommand, ISecurityGroup, Peer, Port, SubnetSelection, IVpc, InstanceType, SubnetType, InitElement, CfnRoute, MachineImage } from 'aws-cdk-lib/aws-ec2'; +import { + AmazonLinuxCpuType, + BastionHostLinux, + CfnRoute, + CloudFormationInit, + InitCommand, + InitElement, + InstanceType, + ISecurityGroup, + IVpc, + MachineImage, + Peer, + Port, + SubnetSelection, + SubnetType, +} from 'aws-cdk-lib/aws-ec2'; import { ISecret } from 'aws-cdk-lib/aws-secretsmanager'; import { Construct } from 'constructs'; @@ -68,6 +83,12 @@ export interface TailscaleBastionProps { * @default 't3.nano' */ readonly instanceType?: InstanceType; + /** + * CPU Type of the instance. + * + * @default AmazonLinuxCpuType.X86_64 + */ + readonly cpuType?: AmazonLinuxCpuType; /** * Additional cloudformation init actions to perform during startup. */ @@ -100,6 +121,7 @@ export class TailscaleBastion extends Construct { additionalInit, incomingRoutes, advertiseRoute, + cpuType, } = props; const authKeyCommand = this.computeTsKeyCli(tailscaleCredentials); @@ -110,7 +132,7 @@ export class TailscaleBastion extends Construct { instanceName: instanceName ?? 'BastionHostTailscale', securityGroup, instanceType, - machineImage: MachineImage.latestAmazonLinux2023(), + machineImage: MachineImage.latestAmazonLinux2023({ cpuType: cpuType ?? AmazonLinuxCpuType.X86_64 }), subnetSelection: subnetSelection ?? { subnetType: SubnetType.PUBLIC }, init: CloudFormationInit.fromElements( // Configure IP forwarding