Форматирование диска с помощью AWS Cloud Init

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

#!/bin/bash

# Format EBS volumes
yum install -y xfsprogs
parted /dev/sdb mktable gpt
parted -a optimal /dev/sdb mkpart primary xfs 0% 100%
parted /dev/sdb name 1 p4db
mkfs -t xfs /dev/sdb1
xfs_admin -L p4db /dev/sdb1

где / dev / sdb обозначает том EBS, подключенный с помощью мастера запуска. Вот вывод журнала из /var/log/cloud-init-output.log:

Information: You may need to update /etc/fstab.

Information: You may need to update /etc/fstab.

/dev/sdb1: No such file or directory
Usage: mkfs.xfs
/* blocksize */         [-b log=n|size=num]
/* metadata */          [-m crc=0|1,finobt=0|1]
/* data subvol */       [-d agcount=n,agsize=n,file,name=xxx,size=num,
                            (sunit=value,swidth=value|su=num,sw=num|noalign),
                            sectlog=n|sectsize=num
/* force overwrite */   [-f]
/* inode size */        [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2,
                            projid32bit=0|1]
/* no discard */        [-K]
/* log subvol */        [-l agnum=n,internal,size=num,logdev=xxx,version=n
                            sunit=value|su=num,sectlog=n|sectsize=num,
                            lazy-count=0|1]
/* label */             [-L label (maximum 12 characters)]
/* naming */            [-n log=n|size=num,version=2|ci,ftype=0|1]
/* no-op info only */   [-N]
/* prototype file */    [-p fname]
/* quiet */             [-q]
/* realtime subvol */   [-r extsize=num,size=num,rtdev=xxx]
/* sectorsize */        [-s log=n|size=num]
/* version */           [-V]
                        devicename
<devicename> is required unless -d name=xxx is given.
<num> is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB),
      xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB).
<value> is xxx (512 byte blocks).

/dev/sdb1: No such file or directory

fatal error -- couldn't initialize XFS library
Sep 09 18:40:58 cloud-init[2518]: util.py[WARNING]: Failed running /var/lib/cloud/instance/scripts/part-001 [1]
Sep 09 18:40:58 cloud-init[2518]: cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts)
Sep 09 18:40:58 cloud-init[2518]: util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python2.7/dist-packages/cloudinit/config/cc_scripts_user.pyc'>) failed
Cloud-init v. 0.7.6 finished at Fri, 09 Sep 2016 18:40:58 +0000. Datasource DataSourceEc2.  Up 145.89 seconds

Так что, видимо, все призывы к parted работают просто отлично, но звонки mkfs (mkfs.xfs) а также xfs_admin не. Как parted можно без проблем отформатировать диск / dev / sdb, но программы XFS считают, что его нет? Как правильно разделить и отформатировать диск, используя формат оболочки init облака? Любые идеи очень ценятся!

1 ответ

Решение

Благодаря комментарию @Vorsprung я понял, что проблема была в звонках parted). Эта команда ожидала обратной связи с пользователем, что, конечно же, не разрешено во время cloud-init. Добавляя -s вариант моего parted звонит, все отлично работает:)

Другие вопросы по тегам