Можно ли использовать cfn-signal без использования cfn-init в моем шаблоне облачной информации? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть стек облачной информации, который устанавливает простой экземпляр ec2 и устанавливает все мои пакеты и файлы python в разделе пользовательских данных.Я никогда не упоминаю cfn-init нигде в моем стеке, и при этом у меня нет метаданных.Можно ли по-прежнему использовать cfn-signal для предупреждения моего стека о том, что установка экземпляра ec2 еще не завершена?Или cfn-signal и cfn-init должны использоваться вместе?

Спасибо.

1 Ответ

0 голосов
/ 28 мая 2019

Нет, cfn-init и cfn-signal - это две совершенно разные механики, и они могут использоваться одна без другой.

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-signal.html

Я широко использую cfn-signal в моем Snowplowшаблон облачной информации.Подбрасывая здесь соответствующие фрагменты ...

Вот пример фрагмента того, как я вызываю cfn-signal сам по себе:

  EventCollectionGroup:
    Type: 'AWS::AutoScaling::AutoScalingGroup'
    Properties:
      LaunchConfigurationName: !Ref EventCollectionLc
    CreationPolicy:
      ResourceSignal:
        Count: 2
        Timeout: PT10M
    UpdatePolicy:
      AutoScalingRollingUpdate:
        MinInstancesInService: 1
        WaitOnResourceSignals: 'true'
        PauseTime: PT10M

  EventCollectionLc:
    Type: 'AWS::AutoScaling::LaunchConfiguration'
    Properties:
      UserData: !Base64 
        'Fn::Sub': |
          #!/bin/bash
          docker run -t --rm ${ContainerAwsUtil} cfn-signal -e $? --stack ${AWS::StackName} --resource EventCollectionGroup --region ${AWS::Region}
    UpdatePolicy:
      AutoScalingReplacingUpdate:
        WillReplace: 'true'

В приведенном выше фрагменте обрезаны дополнительные элементы.Вы можете найти шаблон здесь:

https://github.com/Bit-Clouded/Glenlivet/blob/master/analytics/snowplow.template#L368

Как видите, я фактически запускаю cfn-init в самом контейнере и даже не устанавливаю утилиту на сервере.

Здесь приведено определение контейнера докера:

FROM alpine:3.6

RUN apk add --no-cache ca-certificates python py-pip groff less jq curl &&\
    pip install awscli &&\
    pip install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz

Опять же, с обрезанными дополнениями.Полный файл находится здесь:

https://github.com/Bit-Clouded/Angostura/blob/master/utility/aws-util/Dockerfile


На самом деле, я лично вообще отошел от cfn-init и переместил все необходимые двоичные файлы для загрузки через докер.Просто bash-скрипт в разделе UserData намного чище и его легче читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...