Назад | Перейти на главную страницу

Как использовать cloud-init для настройки тома AWS EBS при первой загрузке?

Cloud-init предоставляет модули disk_setup, fs_setup и монтирует для разделения, форматирования и подключения тома к виртуальной машине, однако эти параметры остаются недокументированными в обоих случаях. http://cloudinit.readthedocs.org и AWS.

Существует ли функциональный пример конфигурации cloud-init, который будет разделять, форматировать и монтировать один том EBS на AWS в экземпляр, подготовленный следующим образом:

"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, что приводит к несоответствию именования)

Я знаю, что это старое, но вот что я придумал:

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

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

Он форматирует /dev/xvdg - unpartitioned - как ext4 и соответственно помечает его.

Мне пришлось добавить disk-setup к cloud_init_modules список в /etc/cloud/cloud.cfg; его там нет по умолчанию, поэтому fs_setup (который обрабатывается cc_disk_setup) не повлияет.