Una introducción a la herramienta de línea de comandos de AWS – Parte 2

En la primera parte de esta serie de AWS, le presenté awscli, una potente interfaz de línea de comandos que se puede utilizar para administrar los servicios de AWS.

Me gustaría seguir profundizando en awscli mediante el aprovisionamiento de un volumen con Amazon Elastic Block Storeawscli example

awscli es una potente interfaz de línea de comandos que se puede utilizar para administrar los servicios de AWS.

(EBS) y la creación de una Amazon Relational Database Service (RDS) MySQL instance.

Mediante el uso de awscli a disposición de volúmenes EBS, tenemos una manera sencilla y rentable mediante la línea de comandos para ampliar nuestra capacidad de disco Ec2 sin ningún tiempo de inactividad.
 
Los volúmenes de EBS soportan copias instantáneas, proveyéndolos con un bloqueo de bajo nivel de dispositivo para copias de seguridad que pueden ser restauradas o copiados a instancias de Ec2 nuevas o ya existentes.

Instancias RDS son una manera en la que los administradores de sistemas pueden ejecutar nuestras propias bases de datos en AWS sin tener que gastar un esfuerzo extra en la optimización del rendimiento complejo, el mantenimiento de rutina y de la configuración de redundancia.

Tanto Amazon EBS como RDS están disponibles para los nuevos clientes de AWS bajo AWS Free Usage Tier. Por favor, asegúrese de comprender plenamente los precios AWS antes de proceder.

Crear y añadir un volumen con Elastic Block Store

Vamos a empezar con la creación y luego adjuntar un volumen de EBS de 1GB a nuestra instancia Ec2 creada en la 1ª parte de nuestro tutorial.

$   aws ec2 create-volume \     --size 1 \     --availability-zone ap-southeast-2a 

La salida de create-volum nos proporcionará un VolumeId que vamos a utilizar para fijar el volumen a nuestra instancia EC2. Tenga en cuenta que he elegido 

ap-southeast-2a 

como la disponibilidad zona que comparte la misma zona de disponibilidad de mi instancia de EC2 creado en la Parte 1 .

$   aws ec2 attach-volume \     --volume-id vol-5dda4d0a \     --instance-id i-0d9c2b31 \     --device /dev/xvdb 

Desde dentro de nuestra instancia EC2, ahora debemos ver el nuevo volumen de EBS como /dev/xvdb.

$   fdisk -l /dev/xvdb Disk /dev/xvdb: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders ... 

Ahora somos libres para utilizar este dispositivo de bloque como un disco normal dentro de Linux. Vamos a seguir adelante y crear particiones en el disco, se aplica un sistema de archivos y luego montarlo en /srv.

$   parted -s -a optimal /dev/xvdb mklabel msdos $   parted -s -a optimal /dev/xvdb mkpart primary ext2 0% 100% $   mkfs.ext4 /dev/xvdb1 $   mount /dev/xvdb1 /srv

Los volúmenes de EBS admiten instantáneas que son un punto en el tiempo de la copia del volumen.

Las instantáneas son ideales para copias de seguridad simples y rentables de dispositivos de bloques que contienen sistemas de archivos. Las instantáneas se pueden copiar en todas las regiones de AWS y se convierten en los volúmenes que se pueden montar en otras instancias de EC2 Linux.

$   aws ec2 create-snapshot \     --volume-id vol-5dda4d0a \     --description "My First Snapshot" 

Si quisiéramos fijar esta instantánea a cualquier otra instancia de EC2, usaríamos —snapshot-id como un argumento a  aws ec2 create-volume. Podríamos entonces adjuntar el volumen creado a partir de una instantánea a otra instancia EC2, que es una forma muy eficiente para copiar grandes bloques de datos a través de servidores.

Provisión de una base de datos MySQL con Servicio de Base de Datos Relacional

Antes de crear nuestra primera instancia RDS MySQL DB, vamos a crear otro grupo de seguridad que sólo permite el tráfico entrante en el puerto 3306/tcp.

$   aws ec2 create-security-group \     --group-name MySecurityGroupDBOnly \     --description "Inbound DB only" 

authorize-security-group-ingress permite el tráfico de origen de un grupo de seguridad al proporcionar un rango de direcciones de red de origen (por ejemplo, 172.31.0.0/20), un ID de cuenta AWS (por ejemplo, 561434394141) o un nombre de grupo de seguridad.

$   aws ec2 authorize-security-group-ingress \     --group-name MySecurityGroupDBOnly \     --source-group MySecurityGroupDBOnly \     --protocol tcp --port 3306 

La regla anterior, tal vez parezca un poco confuso al principio, permite a cualquier instancia de EC2 asociada con el Grupo de Seguridad MySecurityGroupDBOnly para acceder a cualquier otra instancia de EC2 o RDS asociada con el Grupo de Seguridad MySecurityGroupDBOnly en 3306/tcp puerto. Volveremos a este grupo de seguridad más tarde.

Vamos a pasar a la creación de nuestra primera instancia RDS, haciendo uso del servicio RDS dentro awscli.

Nuevas instancias  RDS DB se aprovisionan utilizando la opción create-db-instance. La opcióncreate-db-instance requiere una contraseña para nuestro ejemplo que vamos a depender de apg, un generador de contraseñas automatizado, para crear por nosotros. También vamos a desactivar de nuestro caparazón archivo histórico así que no guardamos las contraseñas confidenciales en el disco en texto claro.

$   apg -a0 -n10 -m16 $   unset HISTFILE $   aws rds create-db-instance \     --db-name MyDatabase \     --db-instance-identifier my-db-instance \     --allocated-storage 5 \     --db-instance-class db.t1.micro \     --engine MySQL \     --master-username dbadmin \     --master-user-password @SECURE_PASSWORD_GENERATED_WITH_APG@ \     --vpc-security-group-ids sg-c53b20a7 

Sustituya  @SECURE_PASSWORD_GENERATED_WITH_APG@ con una contraseña generada por apg.

Tenga en cuenta también el ID del grupo de Seguridad pasado por  —vpc-security-group-ids la cual es el ID de MySecurityGroupDBOnly devuelto por awscli cuando creamos el grupo con create-security-group. Usted tendrá que sustituir esto con su ID de grupo de seguridad para MySecurityGroupDBOnly.

Después de unos minutos, podemos descubrir la instancia Address RDS que está dentro de la sección Endpoint de describe-db-instances.

$   aws rds describe-db-instances 

Por defecto, todo el tráfico entrante a nuestra nueva instancia RDS DB se negó, aunque modificando los grupos de seguridad a la que nuestra instancia actual Ec2 pertenece, perfectamente podemos permitir el acceso a nuestra  instancia de DB.

$   aws ec2 modify-instance-attribute \     --instance-id i-95bd36aa \     --groups sg-8a051ee8 sg-c53b20a7 

Las instancias de EC2 pueden pertenecer hasta 5 grupos de seguridad que nos proporciona una gran flexibilidad en el diseño de nuestras políticas de tráfico interno y externo. Al utilizar el comando modify-instance-attribute anterior, hemos limitamos nuestra Instancia Ec2 a los grupos de seguridad con Ids de sg-8a051ee8 y sg-c53b20a7. El primer grupo de seguridad Id, sg-8a051ee8, es el Grupo de Seguridad MySecurityGroupSSHOnly original creado en la Parte 1 . La segunda, sg-c53b20a7, es el Grupo de Seguridad Id de MySecurityGroupDBOnly.

Una vez que se instala el cliente de MySQL en nuestra instancia EC2, ahora deberíamos ser capaces de conectarse a nuestra instancia RDS DB que tendrá nuestra base de datos MyDatabase esperándonos.

$   yum install mysql $   mysql --user=dbadmin \     --password \     --host=my-db-instance.ccyld3xbhrju.ap-southeast-2.rds.amazonaws.com mysql> SHOW DATABASES;

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *