在创建块设备时使用!FindInMap

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在创建块设备时使用!FindInMap相关的知识,希望对你有一定的参考价值。

所以我只是在创建磁盘时尝试使用FindInMap。

我得到了结构,但我收到错误:

“属性BlockDeviceMappings的值必须是List类型”

所以我很清楚我不完全理解布局。

只是尝试我能想到的一切......不幸的是,AWS的例子主要是将它用于区域..不会太有帮助,你会看到。

 ec2Map:                         ---(my map)
    test:                         ----(outter key)
      InstanceType: t2.small
      volsize: 20                ----(inner key)
    dev:
      InstanceType: t2.small
      volsize: 40

Note: there is parameter that references 'myec2instances' so I can pick the size in a drop down.

#here is where I am lost. How to I  reference the other items needed like device name and volumetype? 

So I get rid of the error mentioned above..


 BlockDeviceMappings: !FindInMap
        - ec2Map
        - !Ref 'myec2instance'
        - volsize
           DeviceName: "/dev/sdf"
      #       Ebs:
      #         VolumeSize: 
      #         VolumeType: gpa

我基本上试图这样做,因为当配置测试ec2时,它会增加额外的20GB体积,对于dev来说它将获得40GB的体积。

答案

你需要将!FindInMap向下移动到结构中并重复它,如下所示:

BlockDeviceMappings:
  - DeviceName: '/dev/sdf' # additional volume
    Ebs:
      VolumeSize: !FindInMap [ec2Map, !Ref myec2instance, volsize]
      VolumeType: !FindInMap [ec2Map, !Ref myec2instance, voltype]
      ...    

以上是关于在创建块设备时使用!FindInMap的主要内容,如果未能解决你的问题,请参考以下文章

在 Fn::Transform 中使用 FindInMap 作为位置参数

Ceph集群块设备使用-创建和使用OSD

移动设备 DOM 块

sh 使用空块设备创建新文件系统

ceph 块设备

基于go-ceph创建CEPH块设备及快照