Estructura básica de AWS CloudFormation
En este artículo vamos a ver la estructura básica de de una plantilla de AWS CloudFormation y sus componentes. Podrás ver algunos ejemplos de plantilla con formato JSON definiendo infraestructuras de ejemplo en AWS.
Recursos para tu infraestructura en AWS CloudFormation
Los recursos son la unidad mínima de representación de infraestructura.
Ejemplos básicos pueden ser:
- Una estancia.
- Un volumen EBS.
- Un bucket.
- Un rol IAM.
- Una política IAM.
- Otros como una instancia EBS Redshift.
Aquí tenéis un ejemplo muy básico de un recurso para una instancia de tipo EC2 y todas las propiedades que necesitamos para hacer algo básico.
“MiInstancia”: {
“Type” : “AWS::EC2::Instance”,
“Properties”: {
“ImageId”: “ami-5256b825”,
“InstanceType”: “t1.small”,
“SecurityGroups”: “sg-991ab20c1”,
“KeyName” : “mi_clave”
}
}
Stacks en AWS CloudFormation
Los Stacks son colecciones de recursos, que pueden ser tan complejos como necesitemos, y que se pueden definir en plantillas en dos lenguajes JSON y YAML.
Dos ejemplos muy sencillos serían:
- Una instancia con su volumen cómo EBS.
- Una base de datos RDS con un bucket.
Aquí un sencillo ejemplo de Stack. Siendo “AWSTemplateFormatVersion”
y “Resources”
las partes que obligatorias, que son la versión del formato y los recursos.
{
“AWSTemplateFormatVersion” : “2010-09-09”,
“Description” : “Mi primer stack”,
“Parameters” : { }
“Mappings”: { }
“Resources”: { }
“Outputs”: { }
}
Además también es posible especificar parámetros de entrada para modificar el comportamiento del Stack, o salidas para recoger datos sobre el mismo y luego poder administrarlo, o manejarlo con cualquier otro programa.
Substacks
Por otro lado, los Stacks pueden relacionarse entre sí mediante estas entradas y salidas. Esto nos va a permitir:
- Dividir los recursos de forma lógica, estableciendo dependencias.
- Añadir o eliminar recursos con menor riesgo.
- Además, como un Substack es un recurso de su Stack padre, nos permitirá también depurar mucho más fácilmente cualquier problema que podamos tener.
Visión general
Ésta sería una visión general de cómo se relacionan los Stacks con sus Subtacks, con el usuario y con las entradas.
En este caso para un usuario que quiere pedir un entorno con dos máquinas, discos de sistema, discos para datos y diferentes tipos de instancia.
Simplemente se comunica con su Stack principal, indica los parámetros de entrada y automáticamente el Stack principal se encarga de todo y de proporcionarle una infraestructura en pocos minutos.