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
posta un anno fa224 visualizzazioni
1 Risposta
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
ESPERTO
kentrad
con risposta un anno fa
profile picture
ESPERTO
verificato un anno fa
  • 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"]

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande