AWS CloudFormation EC2 UserData – Usando un “!If” El uso de la función “!If” en el UserData para EC2 de AWS CloudFormation.
Estoy creando un archivo .bashrc en la sección UserData de mi plantilla CloudFormation.
En este punto, quiero usar una de dos declaraciones basadas en una condición. Ya sea
UserData:
Fn::Base64:
!Sub |
#!/bin/bash -xe
echo "export JOIN_STR=${ExistingJoinString}" >> /home/ec2-user/.bashrc
o
UserData:
Fn::Base64:
!Sub |
#!/bin/bash -xe
echo "export JOIN_STR=${CRDBIPNode01.PrimaryPrivateIpAddress},${CRDBIPNode02.PrimaryPrivateIpAddress},${CRDBIPNode03.PrimaryPrivateIpAddress}" >> /home/ec2-user/.bashrc
Ya tengo una condición definida:
Conditions:
UseNewJoinString: !Equals [!Ref ExistingJoinString, NONE]
¿Alguien sabe si hay alguna forma de usar una declaración “!If” o cualquier otra solución para controlar cuál declaración termina en mi .bashrc? Algo como esto:
UserData:
Fn::Base64:
!Sub |
#!/bin/bash -xe
!If
- UseNewJoinString
-
echo "export JOIN_STR=${CRDBIPNode01.PrimaryPrivateIpAddress},${CRDBIPNode02.PrimaryPrivateIpAddress},${CRDBIPNode03.PrimaryPrivateIpAddress}" >> /home/ec2-user/.bashrc
-
echo "export JOIN_STR=${ExistingJoinString}" >> /home/ec2-user/.bashrc
Gracias de antemano por la ayuda y las ideas.
davy.ai
Sí, puedes utilizar la función intrínseca
!If
para controlar qué declaración se agrega a tu archivo .bashrc en función de la condición que hayas definido. Aquí tienes un ejemplo de cómo puedes modificar tu plantilla de CloudFormation para lograr esto:En el ejemplo anterior, estamos utilizando la función
!If
para verificar si la condiciónUseNewJoinString
se evalúa como verdadera o falsa. Si es verdadera, se ejecuta la primera declaración; de lo contrario, se ejecuta la segunda declaración. Estamos utilizando la sintaxis${!If}
para interpolar la declaración resultante en la sección UserData de la plantilla de CloudFormation. Puedes reemplazar la sección UserData existente con esta versión modificada para lograr el comportamiento deseado.