Esta página ha sido traducida por una máquina.

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: key1: static-value, key2: ${PASSED_FROM_PIPELINE}

También se pueden utilizar variables incorporadas. Para evitar conflictos, las variables incorporadas tienen el prefijo OCI_DEVOPS.

Las variables incorporadas son:

  • OCI_DEVOPS_PIPELINE_ID
  • OCI_DEVOPS_STAGE_ID
  • OCI_DEVOPS_DEPLOYMENT_ID

env es un parámetro opcional.

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, ocarun, es el propietario por defecto del directorio especificado y debe tener permisos de escritura y ejecución (chmod u+wrx). Si la carpeta de destino no existe, el despliegue de DevOps la crea. Para permitirlo, ocarun (o el usuario configurado) debe tener permisos de escritura y ejecución para el directorio principal del directorio de destino especificado.

Por ejemplo, si asigna el directorio de destino en el archivo de configuración de despliegue como /var/services/accountService, debe proporcionar permisos de escritura y ejecución al usuario configurado para /var/services y el permiso de ejecución para /var.

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 test.sh, la ruta del artefacto debe ser test.sh o folder-name/test.sh si el archivo está en una carpeta.

Por ejemplo, si el artefacto general especifica un único archivo, run.sh, este archivo se descarga en la carpeta raíz (/) del origen. Si el artefacto general es un archivo, por ejemplo, app_pkg.zip, la raíz del contenido del archivo es la carpeta raíz.

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 /var/ocarun_staging/app1_staging_folder y el directorio de producción es var/ocarun_prod/main_app.

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 files se especifica en el archivo de configuración, la ruta de ubicación del ejecutable es una ruta absoluta, por ejemplo, /genericArtifactDemo/start.sh. Si no se especifica el parámetro files, se utiliza la ruta relativa para especificar la ubicación del ejecutable. La ruta relativa hace referencia a la carpeta de trabajo del despliegue. Los artefactos se descargan y extraen en la carpeta de trabajo actual del despliegue.

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 shell o bash. Error rápido no está activado. Para que el paso se realice correctamente, se tiene en cuenta la salida del último comando en un paso. Si el último código de salida del comando es 0, el paso se considera correcto. El comando de varias líneas funciona como un script bash. Si desea que el comando de varias líneas falle rápidamente, especifique el comando de varias líneas con (para el script bash) set -e \n <rest of the commands> para asegurarse de que el script se cierra en el primer comando que falle.

Por ejemplo, si especifica el comando wrongcommand \n /usr/bin/sudo -n -u root -E /home/opc/scripts/stop.sh \n echo \"Done\" como set -e \n wrongcommand \n /usr/bin/sudo -n -u root -E /home/opc/scripts/stop.sh \n echo \"Done\", el script se cerrará en wrongcommand.

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.

¿Le ha resultado útil este artículo?