Cloudformation Template

0

so I am looking to get MySQL install if I specify parameter environment as prod and if dev mariadb get installed from userdata script of this cloudformation template but it is not happening. Please guide on this how to do it? AWSTemplateFormatVersion: "2010-09-09" Parameters: Environment: Description: "The environment to deploy to (dev or prod)" Type: String Default: "dev" Resources: EC2Instance: Type: "AWS::EC2::Instance" Properties: InstanceType: "t2.micro" ImageId: "ami-0f8ca728008ff5af4" KeyName: "devops" SecurityGroupIds: - "sg-02464c840862fddaf" SubnetId: "subnet-0b2bbe1a860c1ec8f" UserData: !Base64 | #!/bin/bash if [ "${Environment}" == "prod" ]; then # Install MySQL on production instances sudo apt-get update sudo apt install mysql-server -y sudo systemctl restart mysql sudo systemctl enable mysql elif [ "${Environment}" == "dev" ]; then # Install MariaDB on development instances sudo apt-get update sudo apt install mariadb-server mariadb-client -y sudo systemctl enable mariadb fi Tags: - Key: "Name" Value: "MyNewInstance"

user01
preguntada hace un año224 visualizaciones
1 Respuesta
0

You can do this with Conditions in the template, then test this condition and choose between defining the UserData property with the MySQL or MariaDB install. Something like this:

Conditions:
  CreateProdResources: !Equals [!Ref Environment, "prod"]

Then:

UserData: !If [CreateProdResources, !Base64 |
#!/bin/bash
# Install MySQL on production instances
sudo apt-get update
sudo apt install mysql-server -y
sudo systemctl restart mysql
sudo systemctl enable mysql, !Base64 |
# Install MariaDB on development instances
sudo apt-get update
sudo apt install mariadb-server mariadb-client -y
sudo systemctl enable mariadb]
profile pictureAWS
EXPERTO
kentrad
respondido hace un año
profile picture
EXPERTO
revisado hace un año
  • AWSTemplateFormatVersion: "2010-09-09"

    Parameters: Environment: Description: "The environment to deploy to (dev or prod)" Type: String Default: ""

    Conditions: CreateProdResources: !Equals [!Ref Environment, "prod"]

    Resources: EC2Instance: Type: "AWS::EC2::Instance" Properties: InstanceType: "t2.micro" ImageId: "ami-0f8ca728008ff5af4" KeyName: "devops" SecurityGroupIds: - "sg-02464c840862fddaf" SubnetId: "subnet-0b2bbe1a860c1ec8f" UserData: !If - CreateProdResources - !Base64 | Fn::Sub: | #!/bin/bash
    sudo apt-get update sudo apt install mysql-server -y sudo systemctl restart mysql sudo systemctl enable mysql - !Base64 | Fn::Sub: | #!/bin/bash sudo apt-get update sudo apt install mariadb-server mariadb-client -y sudo systemctl enable mariadb Tags: - Key: "Name" Value: !If [CreateProdResources, "${Environment}-prod", "${Environment}-dev"]

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.

Pautas para responder preguntas