1

我正在为 Auto Scaling 组创建启动配置。

WebAppLaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Properties:
      UserData: !Base64 |
        #!/bin/bash
        exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
        sudo su
        apt-get update -y
        apt-get install unzip awscli -y
        apt-get install apache2 -y
        systemctl start apache2.service
        cd /var/www/html
        aws s3 cp s3://udacity-demo-1/udacity.zip .
        unzip -o udacity.zip
        /bin/echo "Hello World" >> /tmp/testfile.txt
      IamInstanceProfile:
        Ref: "ProfileWithRolesForOurApp"
      KeyName: UdacityCFNEC2Key
      ImageId: ami-005bdb005fb00e791
      SecurityGroups:
      - Ref: WebServerSecGroup
      InstanceType: t3.medium
      BlockDeviceMappings:
      - DeviceName: "/dev/sdk"
        Ebs:
          VolumeSize: '10'

我将服务器放在公共子网中以简单地通过 ssh 进入并确认 Apache 是否启动,我可以看到它没有启动。当我尝试运行启动命令时,我收到一个错误,即 httpd.conf 文件不存在。

我在这里做错了什么?

我发现的最接近的问题是:在 Cloudformation中使用用户数据,他们正在讨论 ami 的类型,我已经能够成功地将用户数据日志导出到控制台,并且我正在使用和 ubuntu ami,所以我认为这不是一个类似的问题。

4

3 回答 3

0

我相信您的脚本中缺少此命令

-> systemctl 启用 httpd

这是 AWS 文档中的一个示例:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

于 2020-05-16T17:14:08.040 回答
0

我发现确定问题的最佳方法是启动一个具有相同配置的新主机,该主机具有面向公众的 ip 和允许 ssh 的安全组。然后 ssh 进入机器并一个一个地运行每个命令以确认哪个导致失败。

最后,我发现通过从我所在地区的启动实例列表中选择不同的建议 AMI,我能够成功地让用户数据脚本成功完成。

于 2020-05-17T05:13:40.023 回答
0

我遇到了同样的问题,但我没有使用自定义 bash 脚本来“更新/修复”问题,而是尝试使用最近构建的图像。

我的 CloudFormation 模板未在任何生产环境中使用,因此我将 Amazon 系统映像 (AMI) 切换到最近添加的模板,我假设更新的 AMI 可以带来最新的补丁,因此我不必应用任何到处都建议的rm ...or命令。kill ...

这是我正在使用的 AMI:

# Canonical, Ubuntu, 18.04 LTS, amd64 bionic image build on 2020-04-08
...
ImageId: ami-003634241a8fcdec0
...

我销毁了我的 CloudFormation 堆栈,重新创建了它,然后宾果游戏。它就像一个魅力!

于 2020-08-04T17:51:20.187 回答