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.
Personalización de software en servidores Linux
En esta sección se describe el tipo de información que puede incluir en un archivo de configuración para personalizar el software en las EC2 instancias que ejecutan Linux. Para obtener información general acerca de cómo personalizar y configurar los entornos de Elastic Beanstalk, consulte Configuración de entornos de Elastic Beanstalk. Para obtener información sobre cómo personalizar el software en EC2 las instancias que ejecutan Windows, consultePersonalización de software en servidores Windows.
Tal vez desee personalizar y configurar el software del que depende la aplicación. Puede agregar comandos que se ejecutarán durante el aprovisionamiento de instancias; definir usuarios y grupos de Linux; y descargar o crear archivos directamente en las instancias de entorno. Estos archivos podrían ser dependencias necesarias para la aplicación (por ejemplo, paquetes adicionales del repositorio de yum) o archivos de configuración, por ejemplo, un archivo sustituto de un archivo de configuración del proxy que anulara ciertos valores específicos establecidos de forma predeterminada por Elastic Beanstalk).
Notas
-
En las plataformas de Amazon Linux 2, en lugar de proporcionar archivos y comandos en los archivos de configuración .ebextensions, recomendamos encarecidamente que utilice Buildfile. Procfile, y enlaces de la plataforma siempre que sea posible para configurar y ejecutar código personalizado en las instancias de entorno durante el aprovisionamiento de instancias. Para obtener más información sobre estos mecanismos, consulte Ampliación de las plataformas Linux de Elastic Beanstalk.
-
YAMLse basa en una hendidura coherente. Utilice el mismo nivel de sangría cuando sustituya el contenido en el archivo de configuración de ejemplo y asegúrese de que el editor de texto utiliza espacios para la sangría, no tabuladores.
Los archivos de configuración admiten las siguientes claves que afectan al servidor Linux en el que se ejecuta la aplicación.
Claves
Las claves se procesan en el orden en el que se muestran.
Vigile los eventos de su entorno mientras desarrolle y pruebe archivos de configuración. Elastic Beanstalk hará caso omiso de un archivo de configuración si este contiene errores de validación, como una clave no válida, por ejemplo, y no procesará ninguna de las claves contenidas en ese mismo archivo. Si esto sucede, Elastic Beanstalk agrega un evento de advertencia al registro de eventos.
Paquetes
Puede utilizar la clave packages
para descargar e instalar aplicaciones y componentes previamente empaquetados.
Sintaxis
packages:
name of package manager
:
package name
: version
...
name of package manager
:
package name
: version
...
...
Puede especificar varios paquetes con la clave de cada administrador de paquetes.
Formatos de paquetes admitidos
En la actualidad, Elastic Beanstalk es compatible con los siguientes administradores de paquetes: yum, rubygems, python y rpm. Los paquetes se procesan en el orden siguiente: rpm, yum y, después, rubygems y python. No hay ningún orden entre rubygems y python. Dentro de cada administrador de paquetes, no está garantizado el orden de instalación de paquetes. Utilice un administrador de paquetes que sea compatible con el sistema operativo.
nota
Elastic Beanstalk es compatible con dos administradores de paquetes subyacentes para Python: pip y easy_install. Sin embargo, en la sintaxis del archivo de configuración, debe especificarse el nombre del administrador de paquetes como python
. Si utiliza un archivo de configuración para especificar un administrador de paquetes de Python, Elastic Beanstalk utilizará Python 2.7. Si la aplicación se basa en una versión diferente de Python, puede especificar los paquetes que se van a instalar en un archivo requirements.txt
. Para obtener más información, consulte Especificar las dependencias mediante un archivo de requisitos en Elastic Beanstalk.
Especificación de versiones
Dentro de cada administrador de paquetes, cada paquete se especifica con un nombre de paquete y una lista de versiones. La versión puede ser una cadena, una lista de versiones o una cadena o lista vacía. Una cadena o lista vacía indica que se debe usar la versión más reciente. Para rpm manager, la versión se especifica como una ruta a un archivo en el disco o a. URL No se admiten rutas relativas.
Si especifica una versión de un paquete, Elastic Beanstalk intentará instalar esa versión incluso si ya hay una versión más reciente del paquete instalada en la instancia. Si ya hay una versión más reciente instalada, la implementación fallará. Algunos administradores de paquetes admiten varias versiones, pero puede haber otros que no. Consulte la documentación del administrador de paquetes para obtener más información. Si no se especifica ninguna versión y ya hay una versión del paquete instalada, Elastic Beanstalk no instalará una nueva versión, sino que presupondrá que se desea mantener y utilizar la versión existente.
Fragmento de código de ejemplo
El siguiente fragmento especifica una versión URL para rpm, solicita la última versión a yum y la versión 0.10.2 de chef a rubygems.
packages:
yum:
libmemcached: []
ruby-devel: []
gcc: []
rpm:
epel: http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rubygems:
chef: '0.10.2'
Grupos
Puede usar la groups
clave para crear grupos de UNIX Linux/ y para asignar grupos. IDs Para crear un grupo, añada un nuevo par clave-valor que asigne un nuevo nombre de grupo a un ID de grupo opcional. La clave “groups” puede contener uno o varios nombres de grupo. En la tabla siguiente, se muestran las claves disponibles.
Sintaxis
groups:
name of group
: {}
name of group
:
gid: "group id
"
Opciones
gid
-
Número de ID de grupo.
Si se especifica un ID de grupo y el nombre del grupo ya existe, se producirá un error al crear el grupo. Si otro grupo tuviera el ID de grupo especificado, el sistema operativo podría rechazar la creación del grupo.
Fragmento de código de ejemplo
El siguiente fragmento especifica un grupo nombrado groupOne sin asignar un identificador de grupo y un grupo denominado groupTwo que especifica un valor de identificador de grupo de 45.
groups:
groupOne: {}
groupTwo:
gid: "45
"
Usuarios
Puedes usar la users
clave para crear usuarios de Linux/ UNIX en la instancia. EC2
Sintaxis
users:
name of user
:
groups:
- name of group
uid: "id of the user
"
homeDir: "user's home directory
"
Opciones
uid
-
ID de usuario. El proceso de creación falla si existe un nombre de usuario con otro ID. Si el ID de usuario ya estuviera asignado a un usuario existente, el sistema operativo podría rechazar la solicitud de creación.
groups
-
Lista de nombres de grupos. El usuario se agrega a cada grupo de la lista.
homeDir
-
Directorio de inicio del usuario.
Los usuarios se crean como usuarios de un sistema no interactivo con el shell /sbin/nologin
. Esto es así por diseño y no se puede modificar.
Fragmento de código de ejemplo
users:
myuser:
groups:
- group1
- group2
uid: "50
"
homeDir: "/tmp
"
Orígenes
Puedes usar la sources
clave para descargar un archivo comprimido de un archivo público URL y descomprimirlo en un directorio de destino de la instancia. EC2
Sintaxis
sources:
target directory
: location of archive file
Formatos admitidos
Los formatos admitidos son: tar, tar+gzip, tar+bz2 y zip. Puede hacer referencia a ubicaciones externas, como Amazon Simple Storage Service (Amazon S3) (p. ej.)https://mybucket.s3.amazonaws.com/myobject
, siempre que sean de acceso URL público.
Fragmento de código de ejemplo
En el siguiente ejemplo, se descarga un archivo .zip público de un bucket de Amazon S3 y se desempaqueta en /etc/myapp
:
sources:
/etc/myapp: https://mybucket.s3.amazonaws.com/myobject
nota
Varias extracciones no deben reutilizar la misma ruta de destino. La extracción de otro origen en la misma ruta de destino reemplazará en lugar de añadirse al contenido.
Archivos
Puedes usar la files
clave para crear archivos en la EC2 instancia. El contenido puede estar en línea en el archivo de configuración o extraerse de unURL. Los archivos se escriben en el disco en orden lexicográfico.
Puede utilizar la clave files
para descargar archivos privados de Amazon S3 si proporciona un perfil de instancia para su autorización.
Si la ruta de archivo especificada ya existe en la instancia, el archivo existente se conserva con la extensión .bak
anexada a su nombre.
Sintaxis
files:
"target file location on disk
":
mode: "six-digit octal value
"
owner: name of owning user for file
group: name of owning group for file
source: URL
authentication: authentication name
:
"target file location on disk
":
mode: "six-digit octal value
"
owner: name of owning user for file
group: name of owning group for file
content: |
# this is my
# file content
encoding: encoding format
authentication: authentication name
:
Opciones
content
-
Contenido de la cadena que se va a agregar al archivo. Especifique
content
osource
, pero no ambos. source
-
URLde un archivo para descargar. Especifique
content
osource
, pero no ambos. encoding
-
Formato de codificación de la cadena especificada con la opción
content
.Valores válidos:
plain
|base64
group
-
Grupo de Linux al que pertenece el archivo.
owner
-
Usuario de Linux al que pertenece el archivo.
mode
-
Un valor octal de seis dígitos que representa el modo para este archivo. No es compatible con sistemas Windows. Utilice los tres primeros dígitos para symlinks y los últimos tres dígitos para la configuración de permisos. Para crear un symlink, especifique
120
, dondexxx
xxx
define los permisos del archivo de destino. Para especificar los permisos de un archivo, utilice los tres últimos dígitos, como000644
. authentication
-
Nombre del método de autenticación de AWS CloudFormation que se utilizará. Puede añadir métodos de autenticación a los metadatos del grupo de Auto Scaling con la clave Resources. Consulte a continuación un ejemplo.
Fragmento de código de ejemplo
files:
"/home/ec2-user/myfile" :
mode: "000755"
owner: root
group: root
source: http://foo.bar/myfile
"/home/ec2-user/myfile2" :
mode: "000755"
owner: root
group: root
content: |
this is my
file content
En el ejemplo se utiliza un objeto symlink. Este crea un enlace, /tmp/myfile2.txt
, que apunta al archivo existente /tmp/myfile1.txt
.
files:
"/tmp/myfile2.txt" :
mode: "120400"
content: "/tmp/myfile1.txt"
En el siguiente ejemplo, se utiliza la clave Resources para añadir un método de autenticación denominado S3Auth que se emplea para descargar un archivo privado en el bucket de Amazon S3:
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth
:
type: "s3"
buckets: ["elasticbeanstalk-us-west-2-123456789012
"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
"/tmp/data.json
" :
mode: "000755"
owner: root
group: root
authentication: "S3Auth
"
source: https://elasticbeanstalk-us-west-2-123456789012.s3-us-west-2.amazonaws.com/data.json
Comandos
Puede usar la commands
tecla para ejecutar comandos en la EC2 instancia. Los comandos se ejecutan antes de que se configuren la aplicación y el servidor web y se extraiga el archivo de versión de la aplicación.
Lo comandos especificados se ejecutan como el usuario root y se procesan en orden alfabético por nombre. De forma predeterminada, los comandos se ejecutan en el directorio raíz. Para ejecutar comandos en otro directorio, utilice la opción cwd
.
Para solucionar problemas con los comandos, puede encontrar su salida en los registros de instancia.
Sintaxis
commands:
command name
:
command: command to run
cwd: working directory
env:
variable name
: variable value
test: conditions for command
ignoreErrors: true
Opciones
command
-
Una matriz (colección de secuencias de bloques
en la YAML sintaxis) o una cadena que especifique el comando que se va a ejecutar. Notas importantes: -
Si utiliza una cadena, no es preciso que la cadena completa vaya incluida entre comillas. Si aun así utiliza comillas, deberá utilizar el carácter de escape para las comillas literales del mismo tipo que aparezcan en la cadena.
-
Si utiliza una matriz, no es preciso que utilizar el carácter de escape para los caracteres de espacio ni incluir los parámetros de comandos entre comillas. Cada elemento de la matriz es un solo argumento de comando. No utilice una matriz para especificar varios comandos.
Los siguientes ejemplos son equivalentes:
commands: command1: command: git commit -m "This is a comment." command2: command: "git commit -m \"This is a comment.\"" command3: command: 'git commit -m "This is a comment."' command4: command: - git - commit - -m - This is a comment.
Para especificar varios comandos, use un escalar de bloque literal
, tal y como se muestra en el siguiente ejemplo. commands: command block: command: | git commit -m "This is a comment." git push
-
env
-
(Opcional) Establece las variables de entorno del comando. Esta propiedad sobrescribe, en lugar de anexar, el entorno existente.
cwd
-
(Opcional) El directorio de trabajo. Si no se especifica, los comandos se ejecutan en el directorio raíz (/).
test
-
(Opcional) Comando que debe devolver el valor
true
(código de salida 0) para que Elastic Beanstalk pueda procesar el comando (por ejemplo, un script de shell) incluido en la clavecommand
. ignoreErrors
-
(Opcional) Valor booleano que determina si otros comandos deben ejecutarse en caso de que se produzca un error (se devuelva un valor distinto de cero) en el comando incluido en la clave
command
. Establezca este valor entrue
si desea continuar ejecutando comandos aunque se produzca un error. Establézcalo enfalse
si desea detener la ejecución de comandos en caso de que se produzca un error. El valor predeterminado esfalse
.
Fragmento de código de ejemplo
En el siguiente fragmento de ejemplo se ejecuta un script de Python.
commands:
python_install:
command: myscript.py
cwd: /home/ec2-user
env:
myvarname: myvarvalue
test: "[ -x /usr/bin/python ]"
Servicios
Puede utilizar la clave services
para definir qué servicios deben iniciarse o detenerse cuando se lance la instancia. La clave services
también le permite especificar dependencias en orígenes, paquetes y archivos, de manera que si es necesario reiniciar debido a los archivos que se están instalado, Elastic Beanstalk se encargará de reiniciar el servicio.
Sintaxis
services:
sysvinit:
name of service
:
enabled: "true"
ensureRunning: "true"
files:
- "file name
"
sources:
- "directory
"
packages:
name of package manager
:
"package name
[: version
]"
commands:
- "name of command
"
Opciones
ensureRunning
-
Establézcalo en
true
para asegurarse de que el servicio se está ejecutando una vez que Elastic Beanstalk finalice.Establézcalo en
false
para asegurarse de que el servicio no se está ejecutando una vez que Elastic Beanstalk finalice.Omita esta clave para no realizar ningún cambio en el estado del servicio.
enabled
-
Establézcalo en
true
para garantizar que el servicio se iniciará automáticamente al arrancar.Establézcalo en
false
para garantizar que el servicio no se iniciará automáticamente al arrancar.Omita esta clave para no realizar ningún cambio a esta propiedad.
files
-
Una lista de archivos. Si Elastic Beanstalk cambia uno directamente a través del bloque de archivos, el servicio se reinicia.
sources
-
Una lista de directorios. Si Elastic Beanstalk expande un archivo en uno de estos directorios, el servicio se reinicia.
packages
-
Una asignación del administrador de paquetes a una lista de nombres de paquetes. Si Elastic Beanstalk instala o actualiza uno de estos paquetes, el servicio se reinicia.
commands
-
Una lista de nombres de comandos. Si Elastic Beanstalk ejecuta el comando especificado, se reinicia el servicio.
Fragmento de código de ejemplo
A continuación, se muestra un fragmento de código de ejemplo:
services:
sysvinit:
myservice:
enabled: true
ensureRunning: true
Comandos de contenedor
Puede utilizar la clave container_commands
para ejecutar comandos que afecten el código abierto de la aplicación. Estos comandos se ejecutan una vez configurada la aplicación y el servidor web, y una vez que se ha extraído el archivo de versiones de la aplicación, pero antes de que se implemente la versión de la aplicación. Los comandos que no son de contenedor y otras operaciones de personalización se realizan antes de que se extraiga el código fuente de la aplicación.
Lo comandos especificados se ejecutan como el usuario root y se procesan en orden alfabético por nombre. Los comandos de contenedor se ejecutan desde el directorio de ensayo, del que se extrae el código fuente antes de implementarse en el servidor de la aplicación. Todos los cambios que realice en el código fuente en el directorio de ensayo con un comando de contenedor se incluirán cuando se implemente el código fuente en su ubicación final.
nota
Los resultados de los comandos del contenedor se registran en el registro de instancias cfn-init-cmd.log
. Para obtener más información sobre la recuperación y visualización de los registros de instancias, consulta Visualización de registros de EC2 instancias de Amazon.
Puede utilizar leader_only
para ejecutar el comando en una sola instancia o configurar un objeto test
para que el comando se ejecute exclusivamente cuando un comando "test" se evalúe como true
. Los comandos de contenedor "leader-only" solo se ejecutan durante la creación del entorno y las implementaciones, mientras que otros comandos y operaciones de personalización del servidor se ejecutan cada vez que se aprovisiona o se actualiza una instancia. Los comandos de contenedor exclusivos para líderes no se ejecutan debido a cambios en la configuración de lanzamiento, como un cambio en el AMI identificador o el tipo de instancia.
Sintaxis
container_commands:
name of container_command
:
command: "command to run
"
leader_only: true
name of container_command
:
command: "command to run
"
Opciones
command
-
Cadena o matriz de cadenas que se va a ejecutar.
env
-
(Opcional) Establezca las variables de entorno antes de ejecutar el comando para invalidar cualquier valor existente.
cwd
-
(Opcional) El directorio de trabajo. De forma predeterminada, este es el directorio de ensayo de la aplicación sin descomprimir.
leader_only
-
(Opcional) Ejecute solo el comando en una sola instancia seleccionada por Elastic Beanstalk. Los comandos de contenedor "leader-only" se ejecutan antes que otros comandos de contenedor. Un comando puede ser "leader-only" o tener un objeto
test
, pero no ambas cosas (leader_only
tiene prioridad). test
-
(Opcional) Ejecute un comando de prueba que deba devolver
true
para poder ejecutar el comando de contenedor. Un comando puede ser "leader-only" o tener un objetotest
, pero no ambas cosas (leader_only
tiene prioridad). ignoreErrors
-
(Opcional) No produce un error en las implementaciones si el comando de contenedor devuelve un valor distinto de 0 (correcto). Establézcalo en
true
para habilitarlo.
Fragmento de código de ejemplo
A continuación, se muestra un fragmento de código de ejemplo.
container_commands:
collectstatic:
command: "django-admin.py collectstatic --noinput"
01syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
02migrate:
command: "django-admin.py migrate"
leader_only: true
99customize:
command: "scripts/customize.sh"