我确定我遗漏了一些明显的东西,但我找不到设置每层默认 EBS 卷大小的方法。默认情况下,我在该层上启动的每个实例都有一个 10GB 的卷。
在层配置窗格中,我尝试添加具有所需大小的 EBS 卷,但它不允许我将其安装在“/”上。
我需要为安装在 /srv/www 的应用程序提供这个额外的大小,但文档说此时不应安装卷:
不要将 Amazon EBS 卷挂载到以下挂载点。如果实例重新启动,autofs 可能会使用它们来挂载临时设备而不是您的卷。
/srv/www
我确定我遗漏了一些明显的东西,但我找不到设置每层默认 EBS 卷大小的方法。默认情况下,我在该层上启动的每个实例都有一个 10GB 的卷。
在层配置窗格中,我尝试添加具有所需大小的 EBS 卷,但它不允许我将其安装在“/”上。
我需要为安装在 /srv/www 的应用程序提供这个额外的大小,但文档说此时不应安装卷:
不要将 Amazon EBS 卷挂载到以下挂载点。如果实例重新启动,autofs 可能会使用它们来挂载临时设备而不是您的卷。
/srv/www
在撰写本文时,您无法使用 OpsWorks 更改默认根卷大小。但是,当使用 API 的create-instance 命令时,您可以提供块储存设备映射(如在 EC2 上)并定义大小。
例如,您可以创建一个包含以下内容的文件,并为方便起见将其命名为“instance.json”:
{
"InstanceType": "c4.large",
"RootDeviceType": "ebs",
"BlockDeviceMappings": [
{
"DeviceName": "ROOT_DEVICE",
"Ebs": {
"VolumeSize": 20,
"VolumeType": "gp2",
"DeleteOnTermination": true
}
}
]
}
然后,您可以执行如下命令来创建具有所需根卷大小的实例,使用该文件并替换正确的堆栈和层 ID:
aws opsworks create-instance --cli-input-json file://./instance.json --stack-id <stack-id-number-here> --layer-ids <one-or-more-layer-id-numbers-here>
如果您更喜欢 oneliner,虽然有点笨拙:
aws opsworks create-instance --stack-id <stack-id-number-here> --layer-ids <one-or-more-layer-id-numbers-here> --instance-type <e.g. c4.large> --block-device-mappings '[{"DeviceName":"ROOT_DEVICE","Ebs":{"VolumeType":"gp2","VolumeSize":20}}]'
请注意,此过程仅在创建实例时有效,之后您无法修改,除非手动修改。
您不能在 / 处挂载卷,这是根目录。不幸的是,您无法在 OpsWorks 中设置根设备大小。但是您可以在其他地方安装一个卷,/mnt/www
并在那里进行符号链接。