aws创建具有装入卷的计算机

时间:2019-03-03 15:32:03

标签: amazon-web-services ubuntu amazon-ec2 aws-cli volumes

我在ubuntu机器上使用AWS EC2 我想创建一个卷,每次创建计算机时,都需要将其连接并安装到计算机上。

请注意,这是单个现有卷,并且一次只能安装到一台计算机上。我需要启动一个竞价型实例并每次以自动方式附加和挂载该卷

到目前为止,我使用aws-cli创建机器,然后使用attaching the volume using the cli,找不到将卷安装到机器的方法(我不想使用ssh来这台机器)我曾考虑过使用aws run command来尝试这样做,但在那里找不到安装命令。通过其他一些工具的cli是否有任何编程方式可以做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以为此编写一个CloudFormation脚本。这是一个基础架构即代码工具,使您能够在一个简单的yml文件中创建大多数AWS资源。

要安装磁盘,可以先将其连接,然后通过用户数据部分将其安装到所需的目录中。

我将在下面为您添加一个示例代码。

Resources:
  server1:
    Type: 'AWS::EC2::Instance'
    Properties:
      DisableApiTermination: 'true'
      AvailabilityZone: us-east-1c
      ImageId:
        Ref: AMI
      InstanceType:
        Ref: InstanceType
      KeyName:
        Ref: KeyName
      SecurityGroupIds:
        - Ref: WebSG
      IamInstanceProfile:
        Ref: InstanceProfile
      SubnetId:
        Ref: SubnetId
      BlockDeviceMappings:
        - DeviceName: /dev/sda1
          Ebs:
            VolumeSize:
              Ref: RootVolumeSize
            VolumeType: gp2
        - DeviceName: /dev/sde
          Ebs:
            VolumeSize:
              Ref: AppVolumeSize
            VolumeType: gp2
      UserData:
        'Fn::Base64': !Sub |-
          #!/bin/bash -v
          yum update -y aws-cfn-bootstrap
          exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
          date > /home/ec2-user/starttime

          #Partition new disks
          echo -e "o\nn\np\n1\n\n\nw" |fdisk /dev/xvde

          #Make Folders to mount new disks
          mkdir /APP

          #Format disks
          mkfs.ext3 /dev/xvde1

          #Mount New Disks
          mount /dev/xvde1 /APP

          #Add mounts to FSTab so it will stick in reboot
          echo "/dev/xvde1 /APP ext3 defaults 0 2" >> /etc/fstab

          date > /home/ec2-user/stoptime
          echo END

要安装现有卷,请在参数中定义卷ID,例如,将其定义为“ AppVolume”,然后使用以下代码块将其安装到实例中

MountPoint:
  Type: AWS::EC2::VolumeAttachment
  Properties:
    InstanceId: !Ref 'Ec2Instance'
    VolumeId: !Ref 'AppVolume'
    Device: /dev/sdh

您可以在AWS documentation

中了解更多信息