es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    UserData:
      Fn::Base64: !Sub |
        #!/bin/bash -xe
        ${!If [UseNewJoinString, 
                !Sub 'echo "export JOIN_STR=${CRDBIPNode01.PrimaryPrivateIpAddress},${CRDBIPNode02.PrimaryPrivateIpAddress},${CRDBIPNode03.PrimaryPrivateIpAddress}" >> /home/ec2-user/.bashrc', 
                !Sub 'echo "export JOIN_STR=${ExistingJoinString}" >> /home/ec2-user/.bashrc']}
    

    En el ejemplo anterior, estamos utilizando la función !If para verificar si la condición UseNewJoinString 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.

Comments are closed.