AWS Cloudformation - Установка пакетов с помощью cfn-init - PullRequest
0 голосов
/ 04 октября 2018

Я создал экземпляр EC2 с помощью облачной информации, и я пытаюсь заставить его установить Postgres на экземпляр напрямую с помощью облачной информации.Однако, когда я запускаю SSH в своем экземпляре и пытаюсь запустить psql через командную строку, я получаю:

bash: psql: command not found

Я попытался сделать это вручную, установив postgres с помощью приведенной ниже команды, и она работает нормально.

sudo yum install postgresql postgresql-server postgresql-devel postgresql-contrib postgresql-docs

Может быть, это потому, что я просто обновляю стек и, следовательно, экземпляр ec2, а не создаю новый?

Ниже приведенфрагмент из шаблона облачной информации.Все работает, когда я обновляю шаблон, но кажется, что postgres все еще не установлен ...

  DbWrapper:
    Type: AWS::EC2::Instance
    Metadata:
      AWS::CloudFormation::Init: 
        config: 
          packages: 
            yum:
              postgresql: []
              postgresql-server: []
              postgresql-devel: []
              postgresql-contrib: []
              postgresql-docs: []
    Properties:
      ImageId: ami-f976839e #AMI aws linux 2
      InstanceType: t2.micro
      AvailabilityZone: eu-west-2a
      SecurityGroupIds:
      - !Ref Ec2SecurityGroup
      SubnetId: !Ref SubnetA
      KeyName: !Ref KeyPairName
      UserData:
        Fn::Base64:
          !Join [ "", [
            "#!/bin/bash -xe\n",
            "sudo yum update\n",
            "sudo yum install -y aws-cfn-bootstrap\n", #download aws helper scripts
            "sudo /opt/aws/bin/cfn-init -v ", #use cfn-init to install packages in cloudformation init
            !Sub "--stack ${AWS::StackName} ",
            "--resource DbWrapper ",
            "--configsets Install ",
            !Sub "--region ${AWS::Region} ",
            "\n" ] ]

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Здесь немного поздно (я нашел это в поиске другой проблемы), но вы можете повторно запустить конфигурацию запуска CF с этим фрагментом из своего фрагмента:

      UserData:
        Fn::Base64:
          !Join [ "", [
            "#!/bin/bash -xe\n",
            "sudo yum update\n",
            "sudo yum install -y aws-cfn-bootstrap\n", #download aws helper scripts
            "sudo /opt/aws/bin/cfn-init -v ", #use cfn-init to install packages in cloudformation init
            !Sub "--stack ${AWS::StackName} ",
            "--resource DbWrapper ",
            "--configsets Install ",
            !Sub "--region ${AWS::Region} ",
            "\n" ] ]

команда /opt/aws/bin/cfn-init - вот чтозапуск конфигурации метаданных из указанной вами конфигурации запуска, в которой определяются ваши пакеты.

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

Причина удаления экземпляра и его воссоздания заключается в том, что он повторнозапускает часть UserData из секции EC2 выше.

0 голосов
/ 05 октября 2018

Если кто-то сталкивался с той же проблемой, решение действительно заключалось в том, что вам нужно удалить экземпляр и воссоздать его с нуля.Просто обновление стека не будет работать.

...