quickstart-cisco-asav-ravpn-main.yaml 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879
  1. AWSTemplateFormatVersion: 2010-09-09
  2. Description: >-
  3. Cisco Systems - Main Stack - Creates VPC and the necessary policies, roles,
  4. security group and launches the Cisco ASAv RAVPN instances. **WARNING** You
  5. will be billed for the AWS resources used if you create a stack from this
  6. template. (qs-1qp7e9tnp)
  7. Metadata:
  8. 'AWS::CloudFormation::Interface':
  9. ParameterGroups:
  10. - Label:
  11. default: Availability Zone Configuration
  12. Parameters:
  13. - AvailabilityZones
  14. - NumberOfAZs
  15. - Label:
  16. default: VPC Network Configuration
  17. Parameters:
  18. - VPCCIDR
  19. - PublicSubnet1CIDR
  20. - PublicSubnet2CIDR
  21. - PublicSubnet3CIDR
  22. - PublicSubnet4CIDR
  23. - PrivateSubnet1CIDR
  24. - PrivateSubnet2CIDR
  25. - PrivateSubnet3CIDR
  26. - PrivateSubnet4CIDR
  27. - Label:
  28. default: ASAv Configuration
  29. Parameters:
  30. - NumberOfASAv
  31. - ASAv1HostName
  32. - ASAv2HostName
  33. - ASAv3HostName
  34. - ASAv4HostName
  35. - DnsName
  36. - InstanceTypeParam
  37. - KeyPair
  38. - VPNUser
  39. - VPNPassword
  40. - SSHLockDownCIDR
  41. - MgmtSubnet1CIDR
  42. - MgmtSubnet2CIDR
  43. - MgmtSubnet3CIDR
  44. - MgmtSubnet4CIDR
  45. - VPNPoolCIDR1
  46. - VPNPoolCIDR2
  47. - VPNPoolCIDR3
  48. - VPNPoolCIDR4
  49. - Label:
  50. default: AWS Transit Gateway configuration
  51. Parameters:
  52. - TGWSubnet1CIDR
  53. - TGWSubnet2CIDR
  54. - TGWSubnet3CIDR
  55. - TGWSubnet4CIDR
  56. - AmazonSideAsn
  57. - Label:
  58. default: On-Premises Gateway Configuration
  59. Parameters:
  60. - OnPremFirewallPublicIP
  61. - OnPremFirewallASN
  62. - PreSharedKeyForVPNAttachment
  63. - VPNTunnelCIDRs
  64. - OnPremCIDR
  65. - Label:
  66. default: AWS Quick Start Configuration
  67. Parameters:
  68. - QSS3BucketName
  69. - QSS3BucketRegion
  70. - QSS3KeyPrefix
  71. ParameterLabels:
  72. AvailabilityZones:
  73. default: Availability Zones
  74. NumberOfAZs:
  75. default: Number of Availability Zones
  76. VPCCIDR:
  77. default: VPC CIDR
  78. PublicSubnet1CIDR:
  79. default: Public subnet 1 CIDR
  80. PublicSubnet2CIDR:
  81. default: Public subnet 2 CIDR
  82. PublicSubnet3CIDR:
  83. default: Public subnet 3 CIDR
  84. PublicSubnet4CIDR:
  85. default: Public subnet 4 CIDR
  86. PrivateSubnet1CIDR:
  87. default: Private subnet 1 CIDR
  88. PrivateSubnet2CIDR:
  89. default: Private subnet 2 CIDR
  90. PrivateSubnet3CIDR:
  91. default: Private subnet 3 CIDR
  92. PrivateSubnet4CIDR:
  93. default: Private subnet 4 CIDR
  94. NumberOfASAv:
  95. default: Number of ASAv instances
  96. ASAv1HostName:
  97. default: ASAv1 hostname
  98. ASAv2HostName:
  99. default: ASAv2 hostname
  100. ASAv3HostName:
  101. default: ASAv3 hostname
  102. ASAv4HostName:
  103. default: ASAv4 hostname
  104. DnsName:
  105. default: DNS name
  106. InstanceTypeParam:
  107. default: Instance type of ASAv
  108. VPNUser:
  109. default: VPN user
  110. VPNPassword:
  111. default: VPN password
  112. KeyPair:
  113. default: ASAv instance key pair
  114. SSHLockDownCIDR:
  115. default: SSH lockdown CIDR
  116. MgmtSubnet1CIDR:
  117. default: Management subnet 1 CIDR
  118. MgmtSubnet2CIDR:
  119. default: Management subnet 2 CIDR
  120. MgmtSubnet3CIDR:
  121. default: Management subnet 3 CIDR
  122. MgmtSubnet4CIDR:
  123. default: Management subnet 4 CIDR
  124. VPNPoolCIDR1:
  125. default: VPN pool for ASAv1
  126. VPNPoolCIDR2:
  127. default: VPN pool for ASAv2
  128. VPNPoolCIDR3:
  129. default: VPN pool for ASAv3
  130. VPNPoolCIDR4:
  131. default: VPN pool for ASAv4
  132. QSS3BucketName:
  133. default: Quick Start S3 bucket name
  134. QSS3BucketRegion:
  135. default: Quick Start S3 bucket region
  136. QSS3KeyPrefix:
  137. default: Quick Start S3 key prefix
  138. TGWSubnet1CIDR:
  139. default: TGW subnet 1 CIDR
  140. TGWSubnet2CIDR:
  141. default: TGW subnet 2 CIDR
  142. TGWSubnet3CIDR:
  143. default: TGW subnet 3 CIDR
  144. TGWSubnet4CIDR:
  145. default: TGW subnet 4 CIDR
  146. AmazonSideAsn:
  147. default: ASN for TGW S2S VPN attachment
  148. OnPremFirewallPublicIP:
  149. default: Public IP for customer on-premises gateway
  150. OnPremFirewallASN:
  151. default: ASN for customer gateway
  152. PreSharedKeyForVPNAttachment:
  153. default: Pre shared key for VPN attachement
  154. VPNTunnelCIDRs:
  155. default: On-premises gateway to TGW S2S VPN tunnel CIDR blocks
  156. OnPremCIDR:
  157. default: On-premises network CIDR
  158. Parameters:
  159. AvailabilityZones:
  160. Description: >-
  161. List of Availability Zones to use for the subnets in the VPC. Note: The
  162. logical order is preserved and up to 4 Availability Zoness are used for
  163. this deployment.
  164. Type: 'List<AWS::EC2::AvailabilityZone::Name>'
  165. NumberOfAZs:
  166. AllowedValues:
  167. - '1'
  168. - '2'
  169. - '3'
  170. - '4'
  171. Default: '2'
  172. Description: >-
  173. Number of Availability Zones to use in the VPC. This must match the number
  174. of selections in the list of Availability Zones.
  175. Type: String
  176. VPCCIDR:
  177. AllowedPattern: >-
  178. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  179. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  180. Default: 10.0.0.0/16
  181. Description: CIDR block for the VPC.
  182. Type: String
  183. PublicSubnet1CIDR:
  184. AllowedPattern: >-
  185. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  186. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  187. Default: 10.0.0.0/21
  188. Description: CIDR block for public subnet 1 located in Availability Zone 1, for ASAv1.
  189. Type: String
  190. PublicSubnet2CIDR:
  191. AllowedPattern: >-
  192. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  193. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  194. Default: 10.0.8.0/21
  195. Description: CIDR block for public subnet 2 located in Availability Zone 2, for ASAv2.
  196. Type: String
  197. PublicSubnet3CIDR:
  198. AllowedPattern: >-
  199. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  200. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  201. Default: 10.0.16.0/21
  202. Description: CIDR block for public subnet 3 located in Availability Zone 3, for ASAv3.
  203. Type: String
  204. PublicSubnet4CIDR:
  205. AllowedPattern: >-
  206. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  207. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  208. Default: 10.0.24.0/21
  209. Description: CIDR block for public subnet 4 located in Availability Zone 4, for ASAv4.
  210. Type: String
  211. PrivateSubnet1CIDR:
  212. AllowedPattern: >-
  213. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  214. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  215. Default: 10.0.32.0/21
  216. Description: CIDR block for private subnet 1 located in Availability Zone 1, for ASAv1.
  217. Type: String
  218. PrivateSubnet2CIDR:
  219. AllowedPattern: >-
  220. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  221. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  222. Default: 10.0.40.0/21
  223. Description: CIDR block for private subnet 2 located in Availability Zone 2, for ASAv2.
  224. Type: String
  225. PrivateSubnet3CIDR:
  226. AllowedPattern: >-
  227. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  228. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  229. Default: 10.0.48.0/21
  230. Description: CIDR block for private subnet 3 located in Availability Zone 3, for ASAv3.
  231. Type: String
  232. PrivateSubnet4CIDR:
  233. AllowedPattern: >-
  234. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  235. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  236. Default: 10.0.56.0/21
  237. Description: CIDR block for private subnet 4 located in Availability Zone 4, for ASAv4.
  238. Type: String
  239. NumberOfASAv:
  240. AllowedValues:
  241. - '1'
  242. - '2'
  243. - '3'
  244. - '4'
  245. Default: '2'
  246. Description: >-
  247. Number of ASAv instances to be initiated.
  248. Type: String
  249. ASAv1HostName:
  250. Type: String
  251. Default: ASAv01RAVPN
  252. Description: Enter ASAv1 hostname.
  253. ASAv2HostName:
  254. Type: String
  255. Default: ASAv02RAVPN
  256. Description: Enter ASAv2 hostname.
  257. ASAv3HostName:
  258. Type: String
  259. Default: ASAv03RAVPN
  260. Description: Enter ASAv3 hostname.
  261. ASAv4HostName:
  262. Type: String
  263. Default: ASAv04RAVPN
  264. Description: Enter ASAv4 hostname.
  265. DnsName:
  266. Type: String
  267. Description: Domain name of PublicHostedZone registered in Route53. This is the domain name behind which the ASAv firewall instances will be load balanced.
  268. Default: example.com
  269. InstanceTypeParam:
  270. Type: String
  271. Default: c5.large
  272. AllowedValues:
  273. - m4.large
  274. - m4.xlarge
  275. - m4.2xlarge
  276. - c3.large
  277. - c3.xlarge
  278. - c3.2xlarge
  279. - c4.large
  280. - c4.xlarge
  281. - c4.2xlarge
  282. - c5.large
  283. - c5.xlarge
  284. - c5.2xlarge
  285. Description: Select an instance type for the ASAv instances.
  286. VPNUser:
  287. Type: String
  288. Description: Test VPN username.
  289. VPNPassword:
  290. NoEcho: true
  291. Type: String
  292. Description: Test VPN password.
  293. KeyPair:
  294. Type: AWS::EC2::KeyPair::KeyName
  295. Description: ASAv instances will launch with this key pair.
  296. SSHLockDownCIDR:
  297. AllowedPattern: >-
  298. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|1[6-9]|2[0-8]))$
  299. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/0-28
  300. Description: CIDR block for locking down SSH access on the outside interface.
  301. Type: String
  302. MgmtSubnet1CIDR:
  303. AllowedPattern: >-
  304. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  305. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  306. Default: 10.0.64.0/21
  307. Description: CIDR block for management subnet 1 located in Availability Zone 1, for ASAv1.
  308. Type: String
  309. MgmtSubnet2CIDR:
  310. AllowedPattern: >-
  311. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  312. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  313. Default: 10.0.72.0/21
  314. Description: CIDR block for management subnet 2 located in Availability Zone 2, for ASAv2.
  315. Type: String
  316. MgmtSubnet3CIDR:
  317. AllowedPattern: >-
  318. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  319. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  320. Default: 10.0.80.0/21
  321. Description: CIDR block for management subnet 3 located in Availability Zone 3, for ASAv3.
  322. Type: String
  323. MgmtSubnet4CIDR:
  324. AllowedPattern: >-
  325. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  326. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  327. Default: 10.0.88.0/21
  328. Description: CIDR block for management subnet 4 located in Availability Zone 4, for ASAv4.
  329. Type: String
  330. VPNPoolCIDR1:
  331. AllowedPattern: >-
  332. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(19))$
  333. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/19
  334. Default: 172.16.0.0/19
  335. Description: This is a /19 CIDR block for a ghost VPN pool for ASAv1. VPN clients connecting in will be assigned an IP from this subnet. This subnet should not overlap with the on-premises CIDR or VPC CIDR blocks. You can use the default value.
  336. Type: String
  337. VPNPoolCIDR2:
  338. AllowedPattern: >-
  339. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(19))$
  340. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/19
  341. Default: 172.16.32.0/19
  342. Description: This is a /19 CIDR block for a ghost VPN pool for ASAv2. VPN clients connecting in will be assigned an IP from this subnet. This subnet should not overlap with the on-premises CIDR or VPC CIDR blocks. You can use the default value.
  343. Type: String
  344. VPNPoolCIDR3:
  345. AllowedPattern: >-
  346. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(19))$
  347. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/19
  348. Default: 172.16.64.0/19
  349. Description: This is a /19 CIDR block for a ghost VPN pool for ASAv3. VPN clients connecting in will be assigned an IP from this subnet. This subnet should not overlap with the on-premises CIDR or VPC CIDR blocks. You can use the default value.
  350. Type: String
  351. VPNPoolCIDR4:
  352. AllowedPattern: >-
  353. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(19))$
  354. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/19
  355. Default: 172.16.96.0/19
  356. Description: This is a /19 CIDR block for a ghost VPN pool for ASAv4. VPN clients connecting in will be assigned an IP from this subnet. This subnet should not overlap with the on-premises CIDR or VPC CIDR blocks. You can use the default value.
  357. Type: String
  358. QSS3BucketName:
  359. AllowedPattern: '^[0-9a-zA-Z]+([0-9a-zA-Z-]*[0-9a-zA-Z])*$'
  360. ConstraintDescription: >-
  361. Quick Start bucket name can include numbers, lowercase letters, uppercase
  362. letters, and hyphens (-). It cannot start or end with a hyphen (-).
  363. Default: aws-quickstart
  364. Description: >-
  365. S3 bucket name for the Quick Start assets. Quick Start bucket name can
  366. include numbers, lowercase letters, uppercase letters, and hyphens (-). It
  367. cannot start or end with a hyphen (-).
  368. Type: String
  369. QSS3BucketRegion:
  370. Default: us-east-1
  371. Description: >-
  372. The AWS Region where the Quick Start S3 bucket (QSS3BucketName) is hosted.
  373. When using your own bucket, you must specify this value.
  374. Type: String
  375. QSS3KeyPrefix:
  376. AllowedPattern: '^[0-9a-zA-Z-/]*$'
  377. ConstraintDescription: >-
  378. Quick Start key prefix can include numbers, lowercase letters, uppercase
  379. letters, hyphens (-), and forward slash (/).
  380. Default: quickstart-cisco-asav-ravpn/
  381. Description: >-
  382. S3 key prefix for the Quick Start assets. Quick Start key prefix can
  383. include numbers, lowercase letters, uppercase letters, hyphens (-), and
  384. forward slash (/).
  385. Type: String
  386. TGWSubnet1CIDR:
  387. AllowedPattern: >-
  388. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  389. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  390. Default: 10.0.96.0/21
  391. Description: CIDR block for AWS Transit Gateway subnet 1 located in Availability Zone 1.
  392. Type: String
  393. TGWSubnet2CIDR:
  394. AllowedPattern: >-
  395. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  396. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  397. Default: 10.0.104.0/21
  398. Description: CIDR block for AWS Transit Gateway subnet 2 located in Availability Zone 2.
  399. Type: String
  400. TGWSubnet3CIDR:
  401. AllowedPattern: >-
  402. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  403. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  404. Default: 10.0.112.0/21
  405. Description: CIDR block for AWS Transit Gateway subnet 3 located in Availability Zone 3.
  406. Type: String
  407. TGWSubnet4CIDR:
  408. AllowedPattern: >-
  409. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  410. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  411. Default: 10.0.120.0/21
  412. Description: CIDR block for AWS Transit Gateway subnet 4 located in Availability Zone 4.
  413. Type: String
  414. AmazonSideAsn:
  415. Description: A private Autonomous System Number (ASN) for the Amazon side of a BGP session. The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to 4294967294 for 32-bit ASNs.
  416. Type: String
  417. Default: 64513
  418. OnPremFirewallPublicIP:
  419. Description: Specify the public IP address of the on-premises gateway.
  420. Type: String
  421. OnPremFirewallASN:
  422. Description: Specify the BGP ASN of the on-premises gateway.
  423. Type: String
  424. Default: 65001
  425. PreSharedKeyForVPNAttachment:
  426. Description: Specify the pre shared key of the customer gateway. Must be 15 characters in length and cannot start with zero (0).
  427. NoEcho: true
  428. Type: String
  429. Default: casav1234567891
  430. MinLength: 15
  431. MaxLength: 15
  432. OnPremCIDR:
  433. AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$
  434. ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28
  435. Description: CIDR block for the on-premises network.
  436. Type: String
  437. VPNTunnelCIDRs:
  438. Description: Specify the tunnel inside CIDR blocks for the on-premises firewall. You can use the default pre-filled CIDR blocks as well.
  439. Type: CommaDelimitedList
  440. Default: "169.254.6.0/30, 169.254.7.0/30"
  441. Conditions:
  442. UsingDefaultBucket: !Equals
  443. - !Ref QSS3BucketName
  444. - aws-quickstart
  445. 3SubnetCondition: !Or
  446. - !Equals
  447. - !Ref 'NumberOfAZs'
  448. - '3'
  449. - !Condition 4SubnetCondition
  450. 4SubnetCondition: !Equals
  451. - !Ref 'NumberOfAZs'
  452. - '4'
  453. 1ASAvCondition: !Or
  454. - !Equals
  455. - !Ref 'NumberOfASAv'
  456. - '1'
  457. - !Condition '2ASAvCondition'
  458. 2ASAvCondition: !Or
  459. - !Equals
  460. - !Ref 'NumberOfASAv'
  461. - '2'
  462. - !Condition '3ASAvCondition'
  463. 3ASAvCondition: !Or
  464. - !Equals
  465. - !Ref 'NumberOfASAv'
  466. - '3'
  467. - !Condition '4ASAvCondition'
  468. 4ASAvCondition: !Equals
  469. - !Ref 'NumberOfASAv'
  470. - '4'
  471. Resources:
  472. VPCStack:
  473. Type: 'AWS::CloudFormation::Stack'
  474. Properties:
  475. TemplateURL: !Sub
  476. - >-
  477. https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}submodules/quickstart-aws-vpc/templates/aws-vpc.template.yaml
  478. - S3Region: !If
  479. - UsingDefaultBucket
  480. - !Ref 'AWS::Region'
  481. - !Ref QSS3BucketRegion
  482. S3Bucket: !If
  483. - UsingDefaultBucket
  484. - !Sub '${QSS3BucketName}-${AWS::Region}'
  485. - !Ref QSS3BucketName
  486. Parameters:
  487. AvailabilityZones: !Join
  488. - ','
  489. - !Ref AvailabilityZones
  490. NumberOfAZs: !Ref NumberOfAZs
  491. VPCCIDR: !Ref VPCCIDR
  492. PrivateSubnet1ACIDR: !Ref PrivateSubnet1CIDR
  493. PrivateSubnet2ACIDR: !Ref PrivateSubnet2CIDR
  494. PrivateSubnet3ACIDR: !Ref PrivateSubnet3CIDR
  495. PrivateSubnet4ACIDR: !Ref PrivateSubnet4CIDR
  496. PublicSubnet1CIDR: !Ref PublicSubnet1CIDR
  497. PublicSubnet2CIDR: !Ref PublicSubnet2CIDR
  498. PublicSubnet3CIDR: !Ref PublicSubnet3CIDR
  499. PublicSubnet4CIDR: !Ref PublicSubnet4CIDR
  500. TGWStack:
  501. Type: 'AWS::CloudFormation::Stack'
  502. Properties:
  503. TemplateURL: !Sub
  504. - >-
  505. https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/quickstart-cisco-asav-ravpn-tgw.yaml
  506. - S3Region: !If
  507. - UsingDefaultBucket
  508. - !Ref 'AWS::Region'
  509. - !Ref QSS3BucketRegion
  510. S3Bucket: !If
  511. - UsingDefaultBucket
  512. - !Sub '${QSS3BucketName}-${AWS::Region}'
  513. - !Ref QSS3BucketName
  514. Parameters:
  515. AvailabilityZones: !Join
  516. - ','
  517. - !Ref AvailabilityZones
  518. NumberOfAZs: !Ref NumberOfAZs
  519. NumberOfASAv: !Ref NumberOfASAv
  520. VPCID: !GetAtt 'VPCStack.Outputs.VPCID'
  521. NetworkInterfaceId1ASAv1: !If [1ASAvCondition, !GetAtt 'ASAvStack1.Outputs.InsideENI', !Ref "AWS::NoValue"]
  522. NetworkInterfaceId1ASAv2: !If [2ASAvCondition, !GetAtt 'ASAvStack1.Outputs.InsideENI', !Ref "AWS::NoValue"]
  523. NetworkInterfaceId2ASAv2: !If [2ASAvCondition, !GetAtt 'ASAvStack2.Outputs.InsideENI', !Ref "AWS::NoValue"]
  524. NetworkInterfaceId1ASAv3: !If [3ASAvCondition, !GetAtt 'ASAvStack1.Outputs.InsideENI', !Ref "AWS::NoValue"]
  525. NetworkInterfaceId2ASAv3: !If [3ASAvCondition, !GetAtt 'ASAvStack2.Outputs.InsideENI', !Ref "AWS::NoValue"]
  526. NetworkInterfaceId3ASAv3: !If [3ASAvCondition, !GetAtt 'ASAvStack3.Outputs.InsideENI', !Ref "AWS::NoValue"]
  527. NetworkInterfaceId1ASAv4: !If [4ASAvCondition, !GetAtt 'ASAvStack1.Outputs.InsideENI', !Ref "AWS::NoValue"]
  528. NetworkInterfaceId2ASAv4: !If [4ASAvCondition, !GetAtt 'ASAvStack2.Outputs.InsideENI', !Ref "AWS::NoValue"]
  529. NetworkInterfaceId3ASAv4: !If [4ASAvCondition, !GetAtt 'ASAvStack3.Outputs.InsideENI', !Ref "AWS::NoValue"]
  530. NetworkInterfaceId4ASAv4: !If [4ASAvCondition, !GetAtt 'ASAvStack4.Outputs.InsideENI', !Ref "AWS::NoValue"]
  531. PrivateSubnet1ARouteTable: !GetAtt 'VPCStack.Outputs.PrivateSubnet1ARouteTable'
  532. PrivateSubnet2ARouteTable: !GetAtt 'VPCStack.Outputs.PrivateSubnet2ARouteTable'
  533. PrivateSubnet3ARouteTable: !If [3SubnetCondition, !GetAtt 'VPCStack.Outputs.PrivateSubnet3ARouteTable', !Ref "AWS::NoValue"]
  534. PrivateSubnet4ARouteTable: !If [4SubnetCondition, !GetAtt 'VPCStack.Outputs.PrivateSubnet4ARouteTable', !Ref "AWS::NoValue"]
  535. VPNPoolCIDR1: !Ref VPNPoolCIDR1
  536. VPNPoolCIDR2: !Ref VPNPoolCIDR2
  537. VPNPoolCIDR3: !Ref VPNPoolCIDR3
  538. VPNPoolCIDR4: !Ref VPNPoolCIDR4
  539. TGWSubnet1CIDR: !Ref TGWSubnet1CIDR
  540. TGWSubnet2CIDR: !Ref TGWSubnet2CIDR
  541. TGWSubnet3CIDR: !Ref TGWSubnet3CIDR
  542. TGWSubnet4CIDR: !Ref TGWSubnet4CIDR
  543. OnPremFirewallPublicIP: !Ref OnPremFirewallPublicIP
  544. OnPremFirewallASN: !Ref OnPremFirewallASN
  545. PreSharedKeyForVPNAttachment: !Ref PreSharedKeyForVPNAttachment
  546. VPNTunnelCIDRs: !Join
  547. - ","
  548. - !Ref VPNTunnelCIDRs
  549. AmazonSideAsn: !Ref AmazonSideAsn
  550. OnPremCIDR: !Ref OnPremCIDR
  551. QSS3BucketName: !Ref QSS3BucketName
  552. QSS3KeyPrefix: !Ref QSS3KeyPrefix
  553. QSS3BucketRegion: !Ref QSS3BucketRegion
  554. CommonResourcesStack:
  555. Type: 'AWS::CloudFormation::Stack'
  556. Properties:
  557. TemplateURL: !Sub
  558. - >-
  559. https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/quickstart-cisco-asav-ravpn-common.yaml
  560. - S3Region: !If
  561. - UsingDefaultBucket
  562. - !Ref 'AWS::Region'
  563. - !Ref QSS3BucketRegion
  564. S3Bucket: !If
  565. - UsingDefaultBucket
  566. - !Sub '${QSS3BucketName}-${AWS::Region}'
  567. - !Ref QSS3BucketName
  568. Parameters:
  569. DnsName: !Ref DnsName
  570. VPCID: !GetAtt 'VPCStack.Outputs.VPCID'
  571. SSHLockDownCIDR: !Ref SSHLockDownCIDR
  572. ASAvStack1:
  573. Condition: 1ASAvCondition
  574. Type: 'AWS::CloudFormation::Stack'
  575. Properties:
  576. TemplateURL: !Sub
  577. - >-
  578. https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/quickstart-cisco-asav-ravpn-instance.yaml
  579. - S3Region: !If
  580. - UsingDefaultBucket
  581. - !Ref 'AWS::Region'
  582. - !Ref QSS3BucketRegion
  583. S3Bucket: !If
  584. - UsingDefaultBucket
  585. - !Sub '${QSS3BucketName}-${AWS::Region}'
  586. - !Ref QSS3BucketName
  587. Parameters:
  588. InstanceTypeParam: !Ref InstanceTypeParam
  589. KeyPair: !Ref KeyPair
  590. VPCID: !GetAtt 'VPCStack.Outputs.VPCID'
  591. VPNUser: !Ref VPNUser
  592. VPNPassword: !Ref VPNPassword
  593. PrivateSubnet1ID: !GetAtt 'VPCStack.Outputs.PrivateSubnet1AID'
  594. PublicSubnet1ID: !GetAtt 'VPCStack.Outputs.PublicSubnet1ID'
  595. MgmtSubnet1CIDR: !Ref MgmtSubnet1CIDR
  596. ASAv1HostName: !Ref ASAv1HostName
  597. DnsName: !Ref DnsName
  598. VPNPoolFrom1: !Sub
  599. - ${a}.${b}.0.1
  600. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR1 ]]]]
  601. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR1 ]]]]
  602. VPNPoolTo1: !Sub
  603. - ${a}.${b}.31.254
  604. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR1 ]]]]
  605. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR1 ]]]]
  606. VPNPoolCIDRMask1: !Select [1, !Split [ "/" , !Ref VPNPoolCIDR1 ]]
  607. VPCCIDRMASK: !Select [1, !Split [ "/" , !Ref VPCCIDR ]]
  608. VPCPOOL: !Select [0, !Split ["/", !Ref VPCCIDR]]
  609. OnPremCIDRMask: !Select [1, !Split [ "/" , !Ref OnPremCIDR ]]
  610. OnPremPool: !Select [0, !Split ["/", !Ref OnPremCIDR]]
  611. PrivateSubnet1GW: !Sub
  612. - ${a}.${b}.${c}.1
  613. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet1CIDR ]]]]
  614. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet1CIDR ]]]]
  615. c: !Select [2, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet1CIDR ]]]]
  616. PrivateSubnet1CIDR: !Ref PrivateSubnet1CIDR
  617. PrivateSubnet1Pool: !Select [0, !Split ["/", !Ref PrivateSubnet1CIDR]]
  618. PrivateSubnet1CIDRMask: !Select [1, !Split [ "/" , !Ref PrivateSubnet1CIDR ]]
  619. PublicHostedZone: !GetAtt 'CommonResourcesStack.Outputs.PublicHostedZone'
  620. MgmtRouteTable: !GetAtt 'CommonResourcesStack.Outputs.MgmtRouteTable'
  621. ASAvInstanceSGMGMT: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGMGMT'
  622. ASAvInstanceSGOUTSIDE: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGOUTSIDE'
  623. ASAvInstanceSGINSIDE: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGINSIDE'
  624. InstanceIdentifier: 0
  625. ASAvStack2:
  626. Condition: 2ASAvCondition
  627. Type: 'AWS::CloudFormation::Stack'
  628. Properties:
  629. TemplateURL: !Sub
  630. - >-
  631. https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/quickstart-cisco-asav-ravpn-instance.yaml
  632. - S3Region: !If
  633. - UsingDefaultBucket
  634. - !Ref 'AWS::Region'
  635. - !Ref QSS3BucketRegion
  636. S3Bucket: !If
  637. - UsingDefaultBucket
  638. - !Sub '${QSS3BucketName}-${AWS::Region}'
  639. - !Ref QSS3BucketName
  640. Parameters:
  641. InstanceTypeParam: !Ref InstanceTypeParam
  642. KeyPair: !Ref KeyPair
  643. VPCID: !GetAtt 'VPCStack.Outputs.VPCID'
  644. VPNUser: !Ref VPNUser
  645. VPNPassword: !Ref VPNPassword
  646. PrivateSubnet1ID: !GetAtt 'VPCStack.Outputs.PrivateSubnet2AID'
  647. PublicSubnet1ID: !GetAtt 'VPCStack.Outputs.PublicSubnet2ID'
  648. MgmtSubnet1CIDR: !Ref MgmtSubnet2CIDR
  649. ASAv1HostName: !Ref ASAv2HostName
  650. DnsName: !Ref DnsName
  651. VPNPoolFrom1: !Sub
  652. - ${a}.${b}.32.1
  653. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR2 ]]]]
  654. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR2 ]]]]
  655. VPNPoolTo1: !Sub
  656. - ${a}.${b}.63.254
  657. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR2 ]]]]
  658. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR2 ]]]]
  659. VPNPoolCIDRMask1: !Select [1, !Split [ "/" , !Ref VPNPoolCIDR2 ]]
  660. VPCCIDRMASK: !Select [1, !Split [ "/" , !Ref VPCCIDR ]]
  661. VPCPOOL: !Select [0, !Split ["/", !Ref VPCCIDR]]
  662. OnPremCIDRMask: !Select [1, !Split [ "/" , !Ref OnPremCIDR ]]
  663. OnPremPool: !Select [0, !Split ["/", !Ref OnPremCIDR]]
  664. PrivateSubnet1GW: !Sub
  665. - ${a}.${b}.${c}.1
  666. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet2CIDR ]]]]
  667. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet2CIDR ]]]]
  668. c: !Select [2, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet2CIDR ]]]]
  669. PrivateSubnet1CIDR: !Ref PrivateSubnet2CIDR
  670. PrivateSubnet1Pool: !Select [0, !Split ["/", !Ref PrivateSubnet2CIDR]]
  671. PrivateSubnet1CIDRMask: !Select [1, !Split [ "/" , !Ref PrivateSubnet2CIDR ]]
  672. PublicHostedZone: !GetAtt 'CommonResourcesStack.Outputs.PublicHostedZone'
  673. MgmtRouteTable: !GetAtt 'CommonResourcesStack.Outputs.MgmtRouteTable'
  674. ASAvInstanceSGMGMT: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGMGMT'
  675. ASAvInstanceSGOUTSIDE: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGOUTSIDE'
  676. ASAvInstanceSGINSIDE: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGINSIDE'
  677. InstanceIdentifier: 1
  678. ASAvStack3:
  679. Condition: 3ASAvCondition
  680. Type: 'AWS::CloudFormation::Stack'
  681. Properties:
  682. TemplateURL: !Sub
  683. - >-
  684. https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/quickstart-cisco-asav-ravpn-instance.yaml
  685. - S3Region: !If
  686. - UsingDefaultBucket
  687. - !Ref 'AWS::Region'
  688. - !Ref QSS3BucketRegion
  689. S3Bucket: !If
  690. - UsingDefaultBucket
  691. - !Sub '${QSS3BucketName}-${AWS::Region}'
  692. - !Ref QSS3BucketName
  693. Parameters:
  694. InstanceTypeParam: !Ref InstanceTypeParam
  695. KeyPair: !Ref KeyPair
  696. VPCID: !GetAtt 'VPCStack.Outputs.VPCID'
  697. VPNUser: !Ref VPNUser
  698. VPNPassword: !Ref VPNPassword
  699. PrivateSubnet1ID: !GetAtt 'VPCStack.Outputs.PrivateSubnet3AID'
  700. PublicSubnet1ID: !GetAtt 'VPCStack.Outputs.PublicSubnet3ID'
  701. MgmtSubnet1CIDR: !Ref MgmtSubnet3CIDR
  702. ASAv1HostName: !Ref ASAv3HostName
  703. DnsName: !Ref DnsName
  704. VPNPoolFrom1: !Sub
  705. - ${a}.${b}.64.1
  706. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR3 ]]]]
  707. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR3 ]]]]
  708. VPNPoolTo1: !Sub
  709. - ${a}.${b}.95.254
  710. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR3 ]]]]
  711. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR3 ]]]]
  712. VPNPoolCIDRMask1: !Select [1, !Split [ "/" , !Ref VPNPoolCIDR3 ]]
  713. VPCCIDRMASK: !Select [1, !Split [ "/" , !Ref VPCCIDR ]]
  714. VPCPOOL: !Select [0, !Split ["/", !Ref VPCCIDR]]
  715. OnPremCIDRMask: !Select [1, !Split [ "/" , !Ref OnPremCIDR ]]
  716. OnPremPool: !Select [0, !Split ["/", !Ref OnPremCIDR]]
  717. PrivateSubnet1GW: !Sub
  718. - ${a}.${b}.${c}.1
  719. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet3CIDR ]]]]
  720. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet3CIDR ]]]]
  721. c: !Select [2, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet3CIDR ]]]]
  722. PrivateSubnet1CIDR: !Ref PrivateSubnet3CIDR
  723. PrivateSubnet1Pool: !Select [0, !Split ["/", !Ref PrivateSubnet3CIDR]]
  724. PrivateSubnet1CIDRMask: !Select [1, !Split [ "/" , !Ref PrivateSubnet3CIDR ]]
  725. PublicHostedZone: !GetAtt 'CommonResourcesStack.Outputs.PublicHostedZone'
  726. MgmtRouteTable: !GetAtt 'CommonResourcesStack.Outputs.MgmtRouteTable'
  727. ASAvInstanceSGMGMT: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGMGMT'
  728. ASAvInstanceSGOUTSIDE: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGOUTSIDE'
  729. ASAvInstanceSGINSIDE: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGINSIDE'
  730. InstanceIdentifier: 2
  731. ASAvStack4:
  732. Condition: 4ASAvCondition
  733. Type: 'AWS::CloudFormation::Stack'
  734. Properties:
  735. TemplateURL: !Sub
  736. - >-
  737. https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/quickstart-cisco-asav-ravpn-instance.yaml
  738. - S3Region: !If
  739. - UsingDefaultBucket
  740. - !Ref 'AWS::Region'
  741. - !Ref QSS3BucketRegion
  742. S3Bucket: !If
  743. - UsingDefaultBucket
  744. - !Sub '${QSS3BucketName}-${AWS::Region}'
  745. - !Ref QSS3BucketName
  746. Parameters:
  747. InstanceTypeParam: !Ref InstanceTypeParam
  748. KeyPair: !Ref KeyPair
  749. VPCID: !GetAtt 'VPCStack.Outputs.VPCID'
  750. VPNUser: !Ref VPNUser
  751. VPNPassword: !Ref VPNPassword
  752. PrivateSubnet1ID: !GetAtt 'VPCStack.Outputs.PrivateSubnet4AID'
  753. PublicSubnet1ID: !GetAtt 'VPCStack.Outputs.PublicSubnet4ID'
  754. MgmtSubnet1CIDR: !Ref MgmtSubnet4CIDR
  755. ASAv1HostName: !Ref ASAv4HostName
  756. DnsName: !Ref DnsName
  757. VPNPoolFrom1: !Sub
  758. - ${a}.${b}.96.1
  759. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR4 ]]]]
  760. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR4 ]]]]
  761. VPNPoolTo1: !Sub
  762. - ${a}.${b}.127.254
  763. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR4 ]]]]
  764. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref VPNPoolCIDR4 ]]]]
  765. VPNPoolCIDRMask1: !Select [1, !Split [ "/" , !Ref VPNPoolCIDR4 ]]
  766. VPCCIDRMASK: !Select [1, !Split [ "/" , !Ref VPCCIDR ]]
  767. VPCPOOL: !Select [0, !Split ["/", !Ref VPCCIDR]]
  768. OnPremCIDRMask: !Select [1, !Split [ "/" , !Ref OnPremCIDR ]]
  769. OnPremPool: !Select [0, !Split ["/", !Ref OnPremCIDR]]
  770. PrivateSubnet1GW: !Sub
  771. - ${a}.${b}.${c}.1
  772. - a: !Select [0, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet4CIDR ]]]]
  773. b: !Select [1, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet4CIDR ]]]]
  774. c: !Select [2, !Split ['.', !Select [0, !Split [ "/" , !Ref PrivateSubnet4CIDR ]]]]
  775. PrivateSubnet1CIDR: !Ref PrivateSubnet4CIDR
  776. PrivateSubnet1Pool: !Select [0, !Split ["/", !Ref PrivateSubnet4CIDR]]
  777. PrivateSubnet1CIDRMask: !Select [1, !Split [ "/" , !Ref PrivateSubnet4CIDR ]]
  778. PublicHostedZone: !GetAtt 'CommonResourcesStack.Outputs.PublicHostedZone'
  779. MgmtRouteTable: !GetAtt 'CommonResourcesStack.Outputs.MgmtRouteTable'
  780. ASAvInstanceSGMGMT: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGMGMT'
  781. ASAvInstanceSGOUTSIDE: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGOUTSIDE'
  782. ASAvInstanceSGINSIDE: !GetAtt 'CommonResourcesStack.Outputs.ASAvInstanceSGINSIDE'
  783. InstanceIdentifier: 3
  784. Outputs:
  785. AccountId:
  786. Description: Amazon Account ID
  787. Value: !Ref 'AWS::AccountId'
  788. #------------------------------- ASAvStack1-----------------
  789. ASAv1MGMTIPStack1:
  790. Condition: 1ASAvCondition
  791. Description: ASAv Instance 1 Management IP
  792. Value: !GetAtt ASAvStack1.Outputs.ASAv1MGMTIP
  793. ASAv1PublicIPStack1:
  794. Condition: 1ASAvCondition
  795. Description: ASAv Instance 1 Public IP
  796. Value: !GetAtt ASAvStack1.Outputs.ASAv1PublicIP
  797. VPNPoolFrom1Stack1:
  798. Condition: 1ASAvCondition
  799. Description: ASAv Instance 1 VPN Pool From
  800. Value: !GetAtt ASAvStack1.Outputs.VPNPoolFrom1
  801. VPNPoolTo1Stack1:
  802. Condition: 1ASAvCondition
  803. Description: ASAv Instance 1 VPN Pool To
  804. Value: !GetAtt ASAvStack1.Outputs.VPNPoolTo1
  805. VPNPoolMask1Stack1:
  806. Condition: 1ASAvCondition
  807. Description: ASAv Instance 1 VPN Pool Mask
  808. Value: !GetAtt ASAvStack1.Outputs.VPNPoolCIDRMask1
  809. #------------------------------- ASAvStack2-----------------
  810. ASAv2MGMTIPStack2:
  811. Condition: 2ASAvCondition
  812. Description: ASAv Instance 2 Management IP
  813. Value: !GetAtt ASAvStack2.Outputs.ASAv1MGMTIP
  814. ASAv2PublicIPStack2:
  815. Condition: 2ASAvCondition
  816. Description: ASAv Instance 2 Public IP
  817. Value: !GetAtt ASAvStack2.Outputs.ASAv1PublicIP
  818. VPNPoolFrom2Stack2:
  819. Condition: 2ASAvCondition
  820. Description: ASAv Instance 2 VPN Pool From
  821. Value: !GetAtt ASAvStack2.Outputs.VPNPoolFrom1
  822. VPNPoolTo2Stack2:
  823. Condition: 2ASAvCondition
  824. Description: ASAv Instance 2 VPN Pool To
  825. Value: !GetAtt ASAvStack2.Outputs.VPNPoolTo1
  826. VPNPoolMask2Stack2:
  827. Condition: 2ASAvCondition
  828. Description: ASAv Instance 2 VPN Pool Mask
  829. Value: !GetAtt ASAvStack2.Outputs.VPNPoolCIDRMask1
  830. #------------------------------- ASAvStack3-----------------
  831. ASAv3MGMTIPStack3:
  832. Condition: 3ASAvCondition
  833. Description: ASAv Instance 3 Management IP
  834. Value: !GetAtt ASAvStack3.Outputs.ASAv1MGMTIP
  835. ASAv3PublicIPStack3:
  836. Condition: 3ASAvCondition
  837. Description: ASAv Instance 3 Public IP
  838. Value: !GetAtt ASAvStack3.Outputs.ASAv1PublicIP
  839. VPNPoolFrom3Stack3:
  840. Condition: 3ASAvCondition
  841. Description: ASAv Instance 3 VPN Pool From
  842. Value: !GetAtt ASAvStack3.Outputs.VPNPoolFrom1
  843. VPNPoolTo3Stack3:
  844. Condition: 3ASAvCondition
  845. Description: ASAv Instance 3 VPN Pool To
  846. Value: !GetAtt ASAvStack3.Outputs.VPNPoolTo1
  847. VPNPoolMask3Stack3:
  848. Condition: 3ASAvCondition
  849. Description: ASAv Instance 3 VPN Pool Mask
  850. Value: !GetAtt ASAvStack3.Outputs.VPNPoolCIDRMask1
  851. #------------------------------- ASAvStack4-----------------
  852. ASAv4MGMTIPStack4:
  853. Condition: 4ASAvCondition
  854. Description: ASAv Instance 4 Management IP
  855. Value: !GetAtt ASAvStack4.Outputs.ASAv1MGMTIP
  856. ASAv4PublicIPStack4:
  857. Condition: 4ASAvCondition
  858. Description: ASAv Instance 4 Public IP
  859. Value: !GetAtt ASAvStack4.Outputs.ASAv1PublicIP
  860. VPNPoolFrom4Stack4:
  861. Condition: 4ASAvCondition
  862. Description: ASAv Instance 4 VPN Pool From
  863. Value: !GetAtt ASAvStack4.Outputs.VPNPoolFrom1
  864. VPNPoolTo4Stack4:
  865. Condition: 4ASAvCondition
  866. Description: ASAv Instance 4 VPN Pool To
  867. Value: !GetAtt ASAvStack4.Outputs.VPNPoolTo1
  868. VPNPoolMask4Stack4:
  869. Condition: 4ASAvCondition
  870. Description: ASAv Instance 4 VPN Pool Mask
  871. Value: !GetAtt ASAvStack4.Outputs.VPNPoolCIDRMask1
  872. #--------------------------------------------------------------
  873. VPNTunnelOutsideIPs:
  874. Description: VPN Tunnel Outside IP
  875. Value: !GetAtt TGWStack.Outputs.VPNTunnelOutsideIPs