Ejemplo 9: Uso de instancias de Amazon EC2 - AWS OpsWorks

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejemplo 9: Uso de instancias de Amazon EC2

importante

El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los actuales. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en AWS Re:post o a través de Premium AWS Support.

Hasta este punto, has estado ejecutando instancias de forma local en. VirtualBox Aunque es fácil y rápido, acabará queriendo probar las recetas en una instancia de Amazon EC2. En particular, en el caso de la ejecución de recetas en Amazon Linux, que solo está disponible en Amazon EC2. Puede utilizar un sistema similar, como CentOS, para la implementación y la realización de pruebas preliminares, pero solo puede probar por completo las recetas en Amazon Linux con una instancia de Amazon EC2.

En este tema se muestra cómo ejecutar recetas en una instancia de Amazon EC2. Utilizará Test Kitchen y Vagrant prácticamente de la misma forma que en las secciones anteriores, con dos diferencias:

  • El controlador es kitchen-ec2 en lugar de Vagrant.

  • El archivo .kitchen.yml del libro de recetas debe configurarse con la información necesaria para lanzar la instancia de Amazon EC2.

nota

O bien puede utilizar el complemento de Vagrant vagrant-aws. Para obtener más información, consulte Proveedor de AWS Vagrant.

Necesitará las credenciales de AWS para crear una instancia de Amazon EC2. Si no tiene una cuenta de AWS, puede obtener una tal y como se indica a continuación.

Inscríbase en una Cuenta de AWS

Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.

Para suscribirte a una Cuenta de AWS
  1. Abra https://portal.aws.amazon.com/billing/signup.

  2. Siga las instrucciones que se le indiquen.

    Parte del procedimiento de registro consiste en recibir una llamada telefónica e indicar un código de verificación en el teclado del teléfono.

    Cuando te registras en una Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea una. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.

AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. Puede ver la actividad de la cuenta y administrar la cuenta en cualquier momento entrando en https://aws.amazon.com/ y seleccionando Mi cuenta.

Creación de un usuario con acceso administrativo

Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.

Proteja su Usuario raíz de la cuenta de AWS
  1. Inicie sesión AWS Management Consolecomo propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña.

    Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .

  2. Active la autenticación multifactor (MFA) para el usuario raíz.

    Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario Cuenta de AWS raíz (consola) en la Guía del usuario de IAM.

Creación de un usuario con acceso administrativo
  1. Activar IAM Identity Center.

    Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center .

  2. En IAM Identity Center, conceda acceso administrativo a un usuario.

    Para ver un tutorial sobre su uso Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.

Iniciar sesión como usuario con acceso de administrador
  • Para iniciar sesión con el usuario de IAM Identity Center, utilice la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

    Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.

Concesión de acceso a usuarios adicionales
  1. En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.

    Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center .

  2. Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.

    Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center .

Debe crear un usuario de IAM con permisos para acceder a Amazon EC2 y guardar las claves secretas y de acceso del usuario en una ubicación segura de la estación de trabajo. Test Kitchen utilizará estas credenciales para crear la instancia. La mejor manera de proporcionar credenciales para Test Kitchen consiste en asignar las claves a las variables de entorno siguientes en su estación de trabajo.

aviso

Los usuarios de IAM tienen credenciales de larga duración, lo que supone un riesgo para la seguridad. Para ayudar a mitigar este riesgo, le recomendamos que brinde a estos usuarios únicamente los permisos que necesitan para realizar la tarea y que los elimine cuando ya no los necesiten.

  • AWS_ACCESS_KEY: la clave de acceso del usuario, que será algo parecido a AKIAIOSFODNN7EXAMPLE.

  • AWS_SECRET_KEY: la clave secreta de su usuario, que tendrá un aspecto parecido a wJalRxUTNFemi/K7MDEng/ CYEXAMPLEKEY. bPxRfi

Este enfoque reduce las posibilidades de poner en peligro accidentalmente su cuenta, por ejemplo, cargando un proyecto que contenga sus credenciales en un repositorio público.

Para configurar el libro de recetas
  1. Para utilizar el controlador kitchen-ec2, debe tener el paquete ruby-dev instalado en el sistema. El siguiente comando de ejemplo muestra cómo utilizar aptitude para instalar el paquete en un sistema Ubuntu.

    sudo aptitude install ruby1.9.1-dev
  2. El controlador kitchen-ec2 es un gem, que puede instalar de la siguiente manera:

    gem install kitchen-ec2

    En función de la estación de trabajo, este comando puede necesitar sudo, o puede utilizar un administrador de entornos de Ruby, como RVM. Este procedimiento se probó con la versión 0.8.0 del controlador kitchen-ec2, pero existen versiones más actuales. Para instalar una versión específica, ejecute gem install kitchen-ec2 -v <version number>.

  3. Debe especificar un par de claves SSH de Amazon EC2 que Test Kitchen pueda utilizar para conectarse con la instancia. Si no dispone de un par de claves de Amazon EC2, consulte Pares de claves de Amazon EC2 para obtener información sobre cómo crear un par. Tenga en cuenta que el par de claves debe pertenecer a la misma región de AWS que la instancia. En el ejemplo se usa la región Oeste de EE. UU. (Norte de California).

    Una vez que haya seleccionado un par de claves, cree un subdirectorio de opsworks_cookbooks denominado ec2_keys y copie el archivo de clave privada (.pem) del par de claves en dicho subdirectorio. Tenga en cuenta que colocar la clave privada en ec2_keys es cómo ya que simplifica en parte el código; puede estar en cualquier lugar del sistema.

  4. Cree un subdirectorio de opsworks_cookbooks llamado createdir-ec2 y ábralo.

  5. Añada un archivo metadata.rb a createdir-ec2 con el contenido siguiente.

    name "createdir-ec2" version "0.1.0"
  6. Inicialice Test Kitchen, tal y como se describe en Ejemplo 1: Instalación de paquetes. En la siguiente sección se describe cómo configurar .kitchen.yml, que es bastante más complicado para las instancias de Amazon EC2.

  7. Añada un subdirectorio recipes a createdir-ec2.

Configuración de .kitchen.yml para Amazon EC2

Puede configurar .kitchen.yml con la información que el controlador kitchen-ec2 necesita para lanzar una instancia de Amazon EC2 correctamente configurada. A continuación, se muestra un ejemplo de un archivo .kitchen.yml para una instancia de Amazon Linux en la región Oeste de EE. UU. (Norte de California).

driver: name: ec2 aws_ssh_key_id: US-East1 region: us-west-1 availability_zone: us-west-1c require_chef_omnibus: true security_group_ids: sg........ subnet_id: subnet-......... associate_public_ip: true interface: dns provisioner: name: chef_solo platforms: -name: amazon driver: image_id: ami-xxxxxxxx transport: username: ec2-user ssh_key: ../ec2_keys/US-East1.pem suites: - name: default run_list: - recipe[createdir-ec2::default] attributes:

Puede utilizar la configuración predeterminada para las secciones provisioner y suites, pero debe modificar las opciones driver y platforms predeterminadas. Este ejemplo utiliza una lista mínima de valores y acepta los valores predeterminados para el resto. Para obtener una lista completa de valores de kitchen-ec2, consulte Kitchen::Ec2: Un controlador de Test Kitchen para Amazon EC2.

El ejemplo establece los siguientes atributos de driver. Se parte de la base de que ha asignado las claves secretas y de acceso de usuario a las variables de entorno estándar, tal y como se ha comentado anteriormente. De forma predeterminada, el controlador utiliza dichas claves. Si no es así, debe especificar de forma explícita las claves añadiendo aws_access_key_id y aws_secret_access_key a los atributos driver, establecidos en los valores de clave apropiados.

name

(Obligatorio) Este atributo debe establecerse en ec2.

aws_ssh_key_id

(Obligatorio) El nombre del par de claves SSH de Amazon EC2, que se llama US-East1 en este ejemplo.

transport.ssh_key

(Obligatorio) El archivo de claves privadas (.pem) de la clave que ha especificado para aws_ssh_key_id. En este ejemplo, el archivo se llama US-East1.pem y se encuentra en el directorio ../opsworks/ec2_keys.

región

(Obligatorio) La región de AWS de la instancia. En el ejemplo se utiliza Oeste de EE. UU. (Norte de California, que se representa con us-west-1).

availability_zone

(Opcional) La zona de disponibilidad de la instancia. Si omite esta opción, Test Kitchen utiliza una zona de disponibilidad predeterminada para la región especificada, que es us-west-1b para Oeste de EE. UU. (Norte de California). Sin embargo, es posible que la zona predeterminada no esté disponible para su cuenta. En dicho caso, debe especificar explícitamente una zona de disponibilidad. La cuenta utilizada para preparar los ejemplos no admite us-west-1b, por lo que el ejemplo especifica explícitamente us-west-1c.

require_chef_omnibus

Cuando esta opción está establecida en true, se garantiza el uso del instalador ómnibus para instalar chef-client en todas las instancias de la plataforma.

security_group_ids

(Opcional) Lista de ID de grupos de seguridad para aplicarla a la instancia. Esta opción aplica el grupo de seguridad default a la instancia. Asegúrese de que las reglas de entrada del grupo de seguridad permitan conexiones SSH de entrada, de lo contrario, Test Kitchen no podrá comunicarse con la instancia. Si utiliza el grupo de seguridad default, es posible que necesite editarlo para adaptarlo. Para obtener más información, consulte Grupos de seguridad de Amazon EC2.

subnet_id

El ID de la subred de destino de la instancia, si procede.

associate_public_ip

Puede hacer que Amazon EC2 asocie una dirección IP pública a la instancia si desea que se pueda obtener acceso a la instancia desde Internet.

interface

El tipo de configuración del nombre de host que utiliza para obtener acceso a la instancia. Los valores válidos son dns, public, private o private_dns. Si no especifica un valor para este atributo, kitchen-ec2 configura el nombre de host en el orden siguiente. Si omite este atributo, el tipo de configuración no se establecerá.

  1. Nombre de DNS

  2. Dirección IP pública

  3. Dirección IP privada

  4. Nombre de DNS privado

importante

En lugar de utilizar las credenciales de su cuenta para el acceso y las claves secretas, cree un usuario para proporcionar dichas credenciales a Test Kitchen. Para obtener más información, consulte Prácticas recomendadas para administrar las claves de acceso de AWS.

Ten cuidado de no colocarla en una ubicación de acceso público, como subirla a un repositorio público o de Bitbucket. .kitchen.yml GitHub Si lo hiciera, expone las credenciales y podría poner en peligro la seguridad de su cuenta.

El controlador kitchen-ec2 es compatible de forma predeterminada con las plataformas siguientes:

  • ubuntu-10.04

  • ubuntu-12.04

  • ubuntu-12.10

  • ubuntu-13.04

  • ubuntu-13.10

  • ubuntu-14.04

  • centos-6.4

  • debian-7.1.0

  • windows-2012r2

  • windows-2008r2

Si quiere utilizar una o varias plataformas, añada los nombres de plataforma pertinentes a platforms. El controlador kitchen-ec2 selecciona automáticamente una AMI adecuada y genera un nombre de usuario SSH adecuado. Puede utilizar otras plataformas (este ejemplo utiliza Amazon Linux), pero debe especificar de forma explícita los siguientes atributos platforms.

name

El nombre de la plataforma. En este ejemplo se utiliza Amazon Linux, por lo que name está establecido en amazon.

driver

Los atributos driver, que contienen la información siguiente:

  • image_id: la AMI de la plataforma, que debe pertenecer a la región especificada. El ejemplo utiliza ami-ed8e9284, una AMI de Amazon Linux de la región Oeste de EE. UU. (Norte de California).

  • transport.username: el nombre de usuario de SSH que Test Kitchen utilizará para comunicarse con la instancia.

    Utilice ec2-user para Amazon Linux. Otras AMI pueden tener nombres de usuario diferentes.

Cambie el código de .kitchen.yml por el ejemplo y asigne valores adecuados a los atributos específicos de la cuenta como aws_access_key_id.

Ejecución de la receta

En este ejemplo se utiliza la receta de Iteración.

Para ejecutar la receta
  1. Cree un archivo denominado default.rb con el siguiente código y guárdelo en la carpeta recipes del libro de recetas.

    directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end
  2. Ejecute kitchen converge para ejecutar la receta. Tenga en cuenta que este comando tardará más en ejecutarse que en los ejemplos anteriores por el tiempo que se necesita para lanzar e inicializar una instancia de Amazon EC2.

  3. Vaya a la consola de Amazon EC2, seleccione la región Oeste de EE. UU. (Norte de California) y haga clic en Instancias en el panel de navegación. Verá la instancia recién creada en la lista.

  4. Ejecuta kitchen login para iniciar sesión en la instancia, tal como lo has estado haciendo con las instancias que se están ejecutando. VirtualBox Verá los directorios recién creados en /srv. También puede utilizar su cliente de SSH preferido para conectarse a la instancia.