web-dev-qa-db-ja.com

最初の起動時にcloud-initを使用してAWS EBSボリュームを構成するにはどうすればよいですか?

Cloud-initはdisk_setup、fs_setupを提供し、ボリュームを仮想マシンにパーティション化、フォーマット、およびマウントするモジュールをマウントしますが、これらのオプションは http://cloudinit.readthedocs.org とAWSの両方で文書化されていません。

AWSで単一のEBSボリュームを次のようにプロビジョニングされたインスタンスにパーティション化、フォーマット、およびマウントするcloud-init構成の機能的な例はありますか?

"Volume" : {
  "Type" : "AWS::EC2::Volume",
  "Properties" : {
    "Size" : "100",
    "VolumeType" : "gp2",
    "AvailabilityZone" : { "Fn::GetAtt" : [ "ServerInstance", "AvailabilityZone" ] }
  },
  "DeletionPolicy" : "Delete"
},
"MountVolume" : {
  "Type" : "AWS::EC2::VolumeAttachment",
  "Properties" : {
    "InstanceId" : { "Ref" : "ServerInstance" },
    "VolumeId"  : { "Ref" : "Volume" },
    "Device" : "/dev/sdh"
  }
},

私がこれまでに最も近いのは次のとおりです(構文の問題は修正されています)。

disk_setup:
  /dev/xvdh:
    layout: true
    overwrite: false
    table_type: 'mbr'
fs_setup: 
  - label: data
    device: /dev/xvdh0
    filesystem: ext4
mounts:
- [ xvdh0, /opt/data ]

Cloud-init-output.logによると、パーティション化の試行は次のように失敗します:

2015-12-08 15:23:11,534 - util.py[WARNING]: Failed partitioning operation
'list' object has no attribute 'splitlines'

(文書化されていない理由により、/ dev/sdhという名前のボリュームを作成しようとすると、/ dev/xvdhという名前のパーティションが表示されるため、名前が一致しません)

4
Graham Leggett

私はこれが古いことを知っていますが、これが私が思いついたものです:

mounts:
    - [ "LABEL=rkt", "/var/lib/rkt" ]

fs_setup:
    ## rkt
    -   device: /dev/xvdg
        partition: none
        label: rkt
        filesystem: ext4

フォーマット/dev/xvdg-パーティション化されていない-ext4として、それに応じてラベルを付けます。

追加しなければならなかったdisk-setupからcloud_init_modulesリスト/etc/cloud/cloud.cfg;デフォルトでは存在しないため、fs_setup(これはcc_disk_setup)は影響しません。

2
blalor