Можем ли мы собрать метаданные экземпляра в AWS :: CloudFormation :: Init - PullRequest
1 голос
/ 20 апреля 2020

При настройке агента AWS cloudwatch вы можете включить в {instance_id} внутри awslogs.conf

[/var/log/cfn-hup.log]
file = /var/log/cfn-hup.log
log_group_name = my-log-group
log_stream_name = {instance_id}/cfn-hup

Есть ли способ сделать это в AWS :: CloudFormation :: Init ?

В частности, я хочу добавить свой идентификатор экземпляра с файлами раздел

Resources: 
  MyLaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Metadata: 
      AWS::CloudFormation::Init: 
        config:
          files: 
            /opt/someconfig.conf: 
              content: |
                INSTANCE_ID={instance_id}
              mode: "000644"
              owner: "root"
              group: "root"

Моя работа заключалась в добавлении INSTANCE_ID в мой конфигурационный файл после команды cfn-init, выполнив:

echo "INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)" >> /opt/someconfig.conf

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 24 апреля 2020

Я пошел по методу, указанному Марцином в комментарии

Resources:
  MyLaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Metadata:
      AWS::CloudFormation::Init:
        config:
          files:
            /opt/someconfig.conf:
              content: |
                INSTANCE_ID='INSTANCE_ID_PLACEHOLDER'
              mode: "000644"
              owner: "root"
    Properties:
      # removed for brevity
      UserData:
        Fn::Base64: !Sub |
          #!/bin/bash -xe

          cfn-init -v \
            --stack ${AWS::StackName} \
            --resource MyLaunchConfig \
            --region ${AWS::Region}

          INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)

          sed -i "s/INSTANCE_ID_PLACEHOLDER/$INSTANCE_ID/g" /opt/someconfig.conf


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