首页 > 解决方案 > 如何在 AWS::CloudFormation::Init 中添加 yum 存储库

问题描述

我正在尝试使用 cloudformation 和块在 Centos 实例中安装 dockerAWS::CloudFormation::Init

安装步骤之一是通过运行将某个存储库添加到 yum:

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

如何在 cloudformation 模板中启用该存储库。理想情况下,如果可能的话,我想使用单个配置块。

这是我到目前为止得到的

Resources:
  ec2:
    Type: AWS::EC2::Instance
    Metadata:
      AWS::CloudFormation::Init:
        config:
          packages:
            yum:
              yum-utils: []
              device-mapper-persistent-data: []
              lvm2: []
    Properties:
      ...

标签: amazon-web-servicesamazon-cloudformation

解决方案


您应该可以通过添加一个commands块来做到这一点:

Resources:
  ec2:
    Type: AWS::EC2::Instance
    Metadata:
      AWS::CloudFormation::Init:
        configSets:
          config:
            - yum_config_manager
            - yum_packages
        yum_config_manager:
          commands:
            yum_config_manager:
              command: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
        yum_packages:
          packages:
            yum:
              yum-utils: []
              device-mapper-persistent-data: []
              lvm2: []

在您的身上,UserData您将拥有:

cfn-init -c config -s ${AWS::StackId} --resource ec2 --region ${AWS::Region}

进一步说明:

  • 请注意,commandspackages块都被包裹在一个configSet.

  • 另请注意,-c config告诉您要运行cfn-init哪个。configSets

启动后,您应该能够通过查看来检查成功的操作/var/log/cfn-init-cmd.log

文档中的更多信息,尤其是关于configSetscommands的部分。


推荐阅读