Сценарии оболочки Userdata конфигурации запуска не запускаются из Cloudformation

Я пытаюсь запустить сценарии оболочки из пользовательских данных конфигурации запуска в шаблоне AWS Cloudformation. Я создал AMI с каким-то скриптом внутри.

Вот пример из шаблона Cloudformation LaunchConfiguration:

 "ProcessLC": {
        "Type" : "AWS::AutoScaling::LaunchConfiguration",
        "Properties" : {
            "ImageId": {"Ref" : "GeneralAMI"},
            "InstanceType" : "t2.medium",
            "SecurityGroups" : [{"Ref": "SecurityGroup"}],
            "KeyName" : {"Ref": "KeyPair"},
            "UserData": {"Fn::Base64": {"Fn::Join": ["", [
              {"Fn::Join": ["", ["Env=",{"Ref": "Env"}," \n"]]},
              {"Fn::Join": ["", ["DBConn=", {"Ref": "Database"}," \n"]]},
              {"Fn::Join": ["", ["DBEngine=", {"Ref": "Metabase"}," \n"]]},
              "#!/bin/bash\n",
              "cd /project/\n",
              "./stop.sh\n",
              "./vpcAssignIP.sh\n"
              ]
            ]
          }
        } 
      }
    }

Он не запускается (как я вижу в журнале "/var/log/cloud-init.log"), когда я создаю стек. Что я делаю не так?

Спасибо!


person muzafarow    schedule 01.02.2016    source источник


Ответы (1)


Поместите эту строку вверху, а не внизу: "#! / Bin / bash \ n". Эта строка указывает ему обрабатывать весь скрипт как команды bash. Это должна быть первая строка. (Таким образом, если в вашем соединении вы поместите его в "" вместо "", у вас все будет хорошо.)

Изменить: с вашими объединениями это должно работать:

"UserData": {"Fn::Base64": {"Fn::Join": ["", [
              "#!/bin/bash\n",
              {"Fn::Join": ["", ["Env=",{"Ref": "Env"}," \n"]]},
              {"Fn::Join": ["", ["DBConn=", {"Ref": "Database"}," \n"]]},
              {"Fn::Join": ["", ["DBEngine=", {"Ref": "Metabase"}," \n"]]},
              "cd /project/\n",
              "./stop.sh\n",
              "./vpcAssignIP.sh\n"
              ]
person Josh Edwards    schedule 01.02.2016
comment
Итак, если fn :: join будет после сценария bash, они не будут работать, не так ли? - person muzafarow; 01.02.2016
comment
Вы должны сделать вывод соединения #! / Bin / bash \ n в качестве первой строки. В настоящее время ваши объединения выводят эту строку как 4-ю строку. Смотрите мою правку для фрагмента кода. - person Josh Edwards; 01.02.2016