Я пытаюсь создать скрипт CloudFormation, который позволяет пользователю выбирать дистрибутив Linux из трех вариантов (ubuntu, redhat, centos). На основе опции, которую выбирает пользователь, я хочу выбрать правильный AMI для региона, в котором создается стек CloudFormation, из существующего сопоставления. Наконец, я хочу использовать этот специфичный для региона AMI в качестве идентификатора изображения для экземпляра EC2.
У меня есть сопоставления для каждого распределения с AMI для сопоставленного региона.
Я хотел бы иметьвсе это автоматизировано, поэтому я могу использовать только один скрипт CloudFormation, а не один для каждой ОС.
У меня есть веб-приложение, которое в зависимости от предпочтений клиента будет работать в Ubuntu, CentOS или Red Hat. Я не хочу поддерживать три отдельных скрипта CloudFormation для каждого дистрибутива, особенно учитывая, что единственная реальная вещь, которая будет отличаться в каждом, - это ImageId
для экземпляра EC2.
Я знаю, чтоВероятно, мне следовало бы воспользоваться условными функциями CloudFormation, но я пока не нашел способа сделать это.
Я не смог найти в Интернете ничего, что могло бы помочь. Это либо потому, что это действительно просто, никто ничего не опубликовал об этом, либо это невозможно, я чувствую, что это может быть последнее, но хотел бы увидеть некоторые другие взгляды.
Вот выдержка из того, что я естьВ настоящее время работает с.
Parameters:
ApplicationServerLinuxDistribution:
Type: "String"
AllowedValues:
- ubuntu
- redhat
- centos
Mappings:
# Ubuntu 18.04 AMIs
AWSUbuntuAMIRegionMap:
ap-northeast-1:
HVM64: "ami-0cd744adeca97abb1"
ap-northeast-2:
HVM64: "ami-00379ec40a3e30f87"
# Red Hat 8 AMIs
AWSRedHatAMIRegionMap:
ap-northeast-1:
HVM64: "ami-0c45b9b8b241f629f"
ap-northeast-2:
HVM64: "ami-090f71670acf741d8"
# CentOS 7 AMIs
AWSCentOSAMIRegionMap:
ap-northeast-1:
HVM64: "ami-045f38c93733dd48d"
ap-northeast-2:
HVM64: "ami-06cf2a72dadf92410"
Resources:
ApplicationServer:
Type: AWS::EC2::Instance
Properties:
ImageId:
Итак, чтобы было ясно, что я хочу, если пользователь находится в eu-west-1 и выбирает Ubuntu, я хочу запросить мою карту Ubuntu Region / AMI для AMI eu-west-1,и используйте этот AMI для создания экземпляра EC2, и если пользователь выбирает Red Hat или CentOS, сделайте то же самое, но вместо этого для этих карт.