json - management - cloudformation tutorial
¿Cómo cambiar el tamaño de EBS raíz predeterminado en la formación de nubes? (1)
Teniendo en cuenta que hay menos documentación y soluciones en línea para la formación de nubes, decidí abordar un problema común relacionado con el cambio del tamaño predeterminado de los volúmenes EBS lanzados a través de la plantilla de formación de nubes.
De forma predeterminada, las instancias iniciadas tienen un tamaño de 8 GB y si se pregunta cómo puede cambiar eso a algo según sus preferencias, entonces no ha llegado a la solución correcta.
Hay dos formas de evitar el problema.
Solución 1: crear un nuevo volumen con VolumeAttachment (forma incorrecta)
"EBS" : {
"Type" : "AWS::EC2::Volume",
"Properties" : {
"Size" : "100",
"AvailabilityZone" : { "Fn::GetAtt" : [ "EC2Instance", "AvailabilityZone" ] }
}
},
"MountPoint" : {
"Type" : "AWS::EC2::VolumeAttachment",
"Properties" : {
"InstanceId" : { "Ref" : "EC2Instance" },
"VolumeId" : { "Ref" : "EBS" },
"Device" : "/dev/sda1"
}
}
Aquí creé un nuevo volumen y me cansé de adjuntarlo a una instancia que no funcionó (no se pudo iniciar la plantilla de CF)
Solución 2. Bloqueo de dispositivos de mapeo (La forma correcta)
Usar BlockDeviceMappings es la forma correcta de acercarse
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"VolumeType": "io1",
"Iops": "300",
"DeleteOnTermination": "false",
"VolumeSize": "30"
}
}
],
No mantenga el nombre del dispositivo como / dev / xvda1, de lo contrario no funcionará. En su lugar, establezca la propiedad "DeviceName" de la asignación de dispositivos de bloque a "/ dev / xvda" si el sistema operativo seleccionado es Amazon Linux, de lo contrario, para Ubuntu o CentOS, establezca "/ dev / sda1"
Entonces, la solución final teniendo en cuenta que tiene varios sistemas operativos y desea aumentar el tamaño predeterminado del volumen EBS, use Fn :: If función intrínseca para establecer la propiedad " DeviceName
" de la asignación de dispositivos de bloque a " /dev/xvda
" si el seleccionado El sistema operativo es Amazon Linux, de lo contrario, se configurará en " /dev/sda1
" para el otro sistema operativo.
Fragmento se vería algo como esto:
"BlockDeviceMappings": [
{
"DeviceName": {
"Fn::If": [
"Amazon-AMI", // condition satisfying that if amazon is OS then use /dev/xvda or else /dev/sda1
"/dev/xvda",
"/dev/sda1"
]
},
"Ebs": {
"VolumeType": "io1",
"Iops": "300",
"DeleteOnTermination": "false",
"VolumeSize": "100"
}
}
]
Esto debería hacer que su formación en la nube funcione sin errores. Si todavía tiene algún error, por favor revise su plantilla y valide correctamente