Archivo de configuración de despliegue
El archivo de configuración de despliegue define los artefactos que se van a descargar en la instancia y la ubicación en la que se deben copiar los artefactos. El archivo de configuración también especifica la secuencia de comandos para el despliegue.
El archivo de configuración se ha escrito en YAML. El archivo se puede definir en línea o se puede proporcionar como referencia de artefacto genérico durante el despliegue de un grupo de instancias.
Los administradores de DevOps pueden utilizar el archivo de configuración de despliegue para las siguientes acciones:
- Especifique los paquetes de aplicaciones y sus ubicaciones para almacenarlos en la instancia informática de destino.
- Especifique los pasos necesarios para desplegar una aplicación.
- Especifique las variables de entorno definidas por el usuario o incorporadas necesarias para el despliegue.
Estructura del archivo de configuración de despliegue
A continuación, se muestra la estructura básica del archivo de configuración de despliegue:
{
version:
component:
env:
variables:
timeoutInSeconds:
files:
- source:
destination:
steps:
- stepType: Command
name:
command:
runAs:
timeoutInSeconds:
- stepType: Command
}
A continuación se muestran los parámetros de configuración de despliegue y sus detalles:
Parámetro | Descripción |
---|---|
version |
Número de versión del archivo de especificación. El valor debe ser 1.0. |
component |
Valor de componente. El único valor soportado es deployment . |
shell |
Opcional. Especifica el shell que se utilizará en el nivel global de especificación de despliegue. El valor se puede sustituir en el nivel de "paso". Los valores permitidos son /bin/sh y bash . Si no se especifica, se utilizará el valor por defecto bash . |
env: variables |
Variables de entorno definidas por el usuario que están disponibles para los ejecutables o el comando bash que se ejecuta como parte del despliegue. Ejemplos: También se pueden utilizar variables incorporadas. Para evitar conflictos, las variables incorporadas tienen el prefijo Las variables incorporadas son:
|
env: vaultVariables |
Opcional. La clave debe ser una cadena compatible con una variable de entorno POSIX. El valor debe ser un identificador de Oracle Cloud (OCID) del secreto del almacén. El almacén y el pipeline de despliegue deben ser del mismo arrendamiento. El arrendamiento debe tener la política adecuada para permitir a los recursos del pipeline de despliegue acceder al secreto. El ámbito de esta variable es la ejecución del archivo de especificación de despliegue y está disponible para todos los pasos del archivo. El valor de estas variables se recupera del almacén y está disponible como variables de entorno para todos los pasos dentro del archivo de especificación de despliegue. |
files |
Especifica los artefactos definidos en el pipeline de despliegue que se deben copiar y la ubicación de la instancia informática de destino en la que se copiarán. Este parámetro es opcional. El usuario configurado, Por ejemplo, si asigna el directorio de destino en el archivo de configuración de despliegue como |
files: source |
Especifica la ubicación de origen de los artefactos. El origen puede hacer referencia a un archivo o una carpeta. Si el origen es un archivo, ese archivo se copia en la carpeta definida en el destino. Si se trata de una carpeta, todo el contenido de esa carpeta se copia en el destino. El origen utiliza la ruta relativa, cuya raíz es la carpeta raíz de uno o más artefactos. Especifique el nombre completo del artefacto, incluida la extensión de tipo de archivo. Por ejemplo, si el archivo del origen es Por ejemplo, si el artefacto general especifica un único archivo, |
files: destination |
Especifica la carpeta de destino en la que se debe copiar el archivo o la carpeta de origen. OCI DevOps recomienda considerar el destino como un directorio temporal para el código de producción, ya que el contenido del directorio de destino se sobrescribe durante cada despliegue. En el siguiente ejemplo de especificación de despliegue, se mencionan dos directorios. El directorio de destino es |
steps |
Especifica la lista de pasos que se ejecutan secuencialmente durante el despliegue. Cada paso se ejecuta como un proceso diferente en la instancia. Todas las variables de entorno incorporadas y definidas por el usuario especificadas se transfieren al proceso. |
steps: name |
Nombre definido por el usuario para el paso. |
steps: command |
Comando de shell o ejecutable de shell. Si el parámetro Están soportados tanto comandos de una sola línea como de varias líneas. Todos los comandos especificados en un paso se ejecutan en la misma sesión de shell. Según el valor steps/*/shell, los comandos pueden ser Por ejemplo, si especifica el comando |
steps: runAs |
Ejecute el paso como el usuario especificado. Por defecto, todos los pasos se ejecutan como usuario ocarun . |
steps: timeoutInSeconds |
Especifica el período de timeout para finalizar un paso. |
steps: shell |
Opcional. Especifica el tipo de shell del paso actual. Si no se especifica, el valor se hereda del parámetro global shell. Los valores permitidos son /bin/sh y shell . |
steps: onFailure |
Lista de pasos que se deben ejecutar en caso de fallo para salir correctamente de la etapa de despliegue. Los comandos de la sección onFailure se ejecutan solo si falla el paso correspondiente y, después de la ejecución, se sale de la especificación de despliegue. El manejo del fallo no afecta al estado de la etapa de despliegue. Si alguno de los pasos falla, el estado de la etapa de despliegue sigue siendo fallido. |
A continuación, se muestra un ejemplo de un archivo de configuración de despliegue:
version: 1.0
component: deployment
runAs: ocarun
env:
variables:
version: ${appVersion}
vaultVariables:
SECRET_ID: "OCID of the secret in the vault"
files:
- source: /
destination: /var/ocarun_staging/app1_staging_folder
steps:
- stepType: Command
name: Validate Variables
command: echo "Version = ${version}: Secret = ${SECRET_ID}"
timeoutInSeconds: 60
- stepType: Command
name: Stop currently-running application
command: cd /var/ocarun_prod/main_app; ./stop.sh
timeoutInSeconds: 600
- stepType: Command
name: Clean old version of source code in prod directory
command: echo "Perform suitable cleanup"
timeoutInSeconds: 600
- stepType: Command
name: Copy new version of source code from staging directory to prod directory
command: cp -R /var/ocarun_staging/app1_staging_folder/main_app /var/ocarun_prod/
timeoutInSeconds: 600
- stepType: Command
name: Install application
command: cd /var/ocarun_prod/main_app; ./install.sh
timeoutInSeconds: 600
- stepType: Command
name: Run application
command: cd /var/ocarun_prod/main_app; ./start.sh
timeoutInSeconds: 600
Ejemplo de un archivo cloud-init para configurar los dos directorios (temporal y de producción):
#cloud-config
users:
- default
- name: ocarun
sudo: ALL=(ALL) NOPASSWD:ALL
# Create two directories, one for staging and one for production.
runcmd:
- [mkdir, -p, /var/ocarun_staging]
- [mkdir, -p, /var/ocarun_prod]
- [chown, ocarun, /var/ocarun_staging]
- [chown, ocarun, /var/ocarun_prod]
Ejemplo para entender varias entradas para origen y destino:
version: 1.0
component: deployment
runAs: root
shell: bash
env:
variables:
version: ${appVersion}
vaultVariables:
docker_registry_password : <secret-ocid>
files:
# This section is to define how the files in the artifact is put on the compute instance.
# Multiple entires are supported using a separate source destination section for every entry.
- source: /
destination: /genericArtifactDemo
- source: /tmp/file1
destination: /var/applicationPath/someDir1
- source: /tmp/file2
destination: /var/applicationPath/someDir2
steps:
# This section is to define the scripts that each step runs on the instance after file copy.
- stepType: Command
name: Install Apache Web Server
command: /genericArtifactDemo/install_dependencies.sh
runAs: root
timeoutInSeconds: 600
- stepType: Command
name: Stop Web Server
command: /genericArtifactDemo/stop.sh
runAs: root
timeoutInSeconds: 60
- stepType: Command
name: Install New Version of Software
command: /genericArtifactDemo/install.sh
runAs: root
timeoutInSeconds: 60
- stepType: Command
name: Start Web Server
command: /genericArtifactDemo/start.sh
runAs: root
timeoutInSeconds: 60
- stepType: Command
name: stop and install
command: |
/scripts/stop.sh
echo "Done stop.sh.."
/scripts/install_dependencies.sh
echo "Done install_dependencies.sh.."
/scripts/install.sh
echo "Done install.sh.."
timeoutInSeconds: 1200
runAs: root
shell: /bin/sh
onFailure:
- stepType: Command
command: /scripts/recovery_steps.sh
name:"OnFailure step"
timeoutInSeconds: 1200
Ejecución del archivo de configuración de despliegue
El servicio DevOps utiliza el agente RunCommand para ejecutar los comandos especificados en el archivo de configuración en la instancia informática de destino. Para obtener más información sobre la activación del plugin RunCommand, consulte la sección "Requisitos" en Despliegue en un grupo de instancias. Si el archivo de configuración de despliegue contiene marcadores de posición, se sustituyen por los valores definidos en la lista de parámetros del despliegue. Consulte Configuración de parámetros.