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
demandé il y a un an225 vues
1 réponse
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
EXPERT
kentrad
répondu il y a un an
profile picture
EXPERT
vérifié il y a un an
  • 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"]

Vous n'êtes pas connecté. Se connecter pour publier une réponse.

Une bonne réponse répond clairement à la question, contient des commentaires constructifs et encourage le développement professionnel de la personne qui pose la question.

Instructions pour répondre aux questions