AWS Cloudformation EC2 linux UserData 小ネタ

以下例はインデントのズレがある可能性があるため、確認要。


以下はlinux起動時にechoを実行する(基本形)


 Userdata:

    Fn::Base64: |

        #!/bin/bash


        echo "test"


Userdata + Sub。

Cloudformationテンプレート内で定義した値指定。

SubnetId は事前に定義してあるとする。

以下はSubnetIdの値がechoされる。


Userdata:

    Fn::Base64: !Sub

      |

        #!/bin/bash


        echo "${SubnetId}"


シェル変数を使用する。

以下はechoで sample の文字列を出力。


Userdata:

    Fn::Base64: !Sub

        |

         #!/bin/bash


         TEST1="sample"

         echo "${!TEST1}"


Userdataに引数を与える。

SubnetId は事前に定義してあるとする。

以下はSubnet1(SubnetId)の値がechoされる。


Userdata:

    Fn::Base64: !Sub

        - |

           #!/bin/bash


           echo "${Subnet1}"

        -  {

              Subnet1: !Ref SubnetId

            }


Userdata + Sub + ImportValue。

Subnet001 は他スタックで出力したExport名。


Userdata:

    Fn::Base64: !Sub

        - |

           #!/bin/bash


           echo "${Subnet1}"

        -  {

              Subnet1: !ImportValue Subnet001

            }


引数を複数指定する場合は以下。


Userdata:

    Fn::Base64: !Sub

        - |

           #!/bin/bash


           echo "${Subnet1}${Subnet2}"

        -  {

              Subnet1: !ImportValue Subnet001,

              Subnet2: !ImportValue Subnet002

            }


Userdataの中でヒアドキュメントでスクリプト作成。

$の前に¥が必要。


Userdata:

    Fn::Base64: |

        #!/bin/bash


        cat <<EOF > test.sh

        TEST1=¥$(ls)

        echo ¥$TEST1

        EOF


${TEST1} のような場合は 以下のようにするしかなさそう。


Userdata:

    Fn::Base64: |

        #!/bin/bash


       LEFTBRACE="{"

       RIGHTBRACE="}"


        cat <<EOF > test.sh

        TEST1=¥$(ls)

        echo ¥$${!LEFTBRACE}TEST1${!RIGHTBRACE}

        EOF






コメント

このブログの人気の投稿

AWS Cloudformation ImportValue Sub 併用