cipi.yml · configurar como código

Administra Laravel aplicaciones con cipi.yml

Por · Última actualización: · lectura gratuita, sin muro de pago

El estado que una aplicación espera en el servidor (alias, PHP, trabajadores, salud, copias de seguridad) generalmente reside en un panel o en la cabeza de alguien. Desde Cipi 5.1 puede vivir en un cipi.yml en la raíz del repositorio, revisado en la misma solicitud de extracción que el código que depende de él. Esta guía es el circuito práctico: genere, planifique, aplique y luego opte por participar para que cada implementación se concilie.

En esta guía
  1. Por qué el archivo pertenece al lado del código
  2. Comience desde el servidor en vivo
  3. Los comandos que usarás
  4. Que puedes declarar
  5. un archivo completo
  6. Planifique y luego aplique
  7. Una semana de cambios reales
  8. Inscríbase después de cada implementación
  9. Lo que el archivo no tocará
  10. Es seguro aceptarlo a través de Git
  11. Preguntas frecuentes

Por qué el archivo pertenece al lado del código

Una versión que agrega un trabajo en cola sin un trabajador se envía a medias. Un retroceso que deja la semana pasada upload_max_filesizeestá medio revertido. El estado del servidor generalmente reside en otro lugar: un panel, una página wiki o la memoria de quien configuró el cuadro.

A cipi.yml commit junto a la aplicación Laravel hace que ese estado sea parte de la misma solicitud de extracción que el código que depende de él. El archivo es declarativo: describe el estado final, no los pasos. Cipi lee lo que tiene el servidor, lo compara con el archivo y te muestra la diferencia antes de tocar nada.

La pagina del producto cipi.yml: configuración que se incluye con el código es la descripción general. El esquema completo vive en Documentos → Implementar → cipi.yml. Esta guía es el bucle diario de una aplicación.

Comience desde el servidor en vivo

No es necesario escribir el archivo a mano. En un cuadro Cipi 5.1+, imprima la configuración actual de la aplicación (alias, versión PHP y configuraciones por aplicación, bases de datos adicionales, trabajadores en cola leídos de Supervisor, Horizon, Reverb, el programador y los perfiles de respaldo que posee la aplicación) como un archivo listo para confirmar:

$ cipi yml generate myapp > cipi.yml
$ cipi yml plan myapp                  # reports nothing to do

Confirme ese archivo en la raíz del repositorio. Cipi lo busca en current/cipi.yml, entonces current/cipi.yaml, entonces shared/cipi.yml — anular con --file=<path> si lo guardas en otro lugar.

¿Prefieres una plantilla en blanco y completamente comentada? cipi yml example myapp imprime uno con bases de datos de marcador de posición y perfiles que ya están dentro del espacio de nombres de esa aplicación, por lo que la plantilla se valida tal como está.

Los comandos que usarás

Comando que hace
cipi yml generate Imprime la configuración de la aplicación tal como está en el servidor, lista para confirmar
cipi yml example Una plantilla comentada en blanco, con espacio de nombres en la aplicación para que se valide tal cual
cipi yml validate Analiza el archivo y compara cada valor con el esquema. no cambia nada
cipi yml plan La diferencia: cada alias, trabajador, base de datos, configuración y perfil que se agregaría, cambiaría o eliminaría
cipi yml apply Aplica el plan. Añadir --yes para scripts y CI
cipi yml auto on / off / status — conciliar después de cada implementación exitosa
$ cipi yml generate myapp
$ cipi yml example myapp
$ cipi yml validate myapp
$ cipi yml plan myapp
$ cipi yml apply myapp [--yes]
$ cipi yml auto myapp on|off|status

Que puedes declarar

Siete áreas. No es necesario que los declare todos; solo se concilian las secciones que escriba.

un archivo completo

Esto es lo que normalmente incluye una aplicación de producción. Puedes generar la mayor parte; los comentarios son para la solicitud de extracción.

version: 1

app:
  php: "8.5"
  aliases:
    - "www.myapp.com"
    - "*.myapp.com"
  ini:
    upload_max_filesize: 50M
    post_max_size: 60M
    memory_limit: 512M

databases:
  - name: myapp_reporting
  - name: myapp_analytics
    engine: pgsql

workers:
  horizon: false
  reverb: false
  queues:
    - queue: default
      processes: 2
    - queue: emails
      processes: 1
      tries: 5
      timeout: 300

schedule: true

health:
  url: "https://myapp.com/up"
  expect: 200

backup:
  profiles:
    - name: myapp-db
      scope: db
      databases: ["myapp", "myapp_*"]
      exclude_tables: ["*.jobs", "*.telescope_*"]
      every: 30m
      keep: 48
      destinations: [local]
    - name: myapp-nightly
      scope: all
      cron: "0 2 * * *"
      keep_days: 14
      destinations: [s3]
      encrypt: true

Planifique y luego aplique

Nada cambia hasta que miras la diferencia. cipi yml plan myapp enumera todos los alias, trabajadores, bases de datos, configuraciones y perfiles que se agregarían, cambiarían o eliminarían. Léelo de la misma manera que lees una solicitud de extracción.

$ cipi yml validate myapp
$ cipi yml plan myapp
$ cipi yml apply myapp                 # asks for confirmation
$ cipi yml apply myapp --yes           # scripts and CI

Un archivo que no pasa la validación se rechaza en su totalidad y nunca aplicado parcialmente. Esa es la misma ruta cerrada por falla que usa una implementación cuando yml auto está en: correo electrónico yml_fail, no hay medio estado en la caja.

Una semana de cambios reales

Trate el archivo como código de aplicación. Cada uno de estos es un compromiso de una línea (o de un bloque), revisado y luego aplicado, o aplicado automáticamente después del lanzamiento si yml auto ya está encendido.

PHP 8.5 ya debe estar instalado (cipi php install 8.5) antes de fijar app.php lo. El archivo no instalará un tiempo de ejecución que no esté en la caja.

Inscríbase después de cada implementación

Las implementaciones ignoran el archivo hasta que usted indique lo contrario. Esto es deliberado: un primer compromiso decipi.ymlNo debería sorprender a la producción.

$ cipi yml auto myapp on       # reconcile after every successful deploy
$ cipi yml auto myapp status
$ cipi yml auto myapp off      # back to manual apply

Con la aceptación otorgada, cada exitoso implementar conciliaciones - de ambos cipi deploy y el Git webhook. Un lanzamiento que no lleva cipi.yml es una operación silenciosa y no operativa. Un archivo que no pasa la validación se informa por correo electrónico (yml_fail) y nunca se aplicó hasta la mitad. Una reconciliación exitosa enciende yml_apply.

Lo que el archivo no tocará

Es seguro aceptarlo a través de Git

El archivo llega desde un repositorio, por lo que cualquiera que pueda confirmarlo controla su contenido. El esquema está cerrado a prueba de fallos en todo momento:

una vez yml auto está activado, cualquiera que pueda acceder a ese repositorio puede cambiar los alias de la aplicación, la configuración PHP, los trabajadores, la verificación de estado y los perfiles de respaldo. Ese es el objetivo de la configuración como código: trate el acceso de escritura al repositorio en consecuencia.

Envíe el archivo con la próxima versión

Genere lo que el servidor ya tiene, confirme, lea el plan y luego active yml auto cuando confías en el bucle. La descripción general y el esquema completo están a un clic de distancia.

wget -O - https://cipi.sh/setup.sh | fiesta

Preguntas frecuentes

¿Tengo que escribir cipi.yml a mano?

No. cipi yml generate <app> imprime la configuración actual del servidor de la aplicación como un archivo listo para confirmar, y cipi yml example imprime una plantilla comentada en blanco si prefiere empezar desde cero.

¿Una implementación aplica el archivo automáticamente?

Sólo después de que usted opte por cipi yml auto <app> on. Hasta entonces, los despliegues ignoran el archivo y lo concilian manualmente con plan y apply.

¿Qué pasa con las cosas que el archivo no menciona?

Se quedan solos. Solo se concilian las secciones que usted declara, con una excepción deliberada: la lista de alias tiene autoridad, por lo que eliminar un alias del archivo lo elimina del servidor.

¿Puede una confirmación dañar mi servidor?

El esquema no incluye comandos de shell ni rutas de inclusión, una aplicación solo puede tocar sus propias bases de datos y perfiles de respaldo, y un archivo que no pasa la validación se rechaza en su totalidad en lugar de aplicarse a mitad de camino. Las implementaciones ignoran el archivo por completo hasta que gire yml auto en.

¿Funciona con Git webhook?

Sí. con cipi yml auto encendido, ambos cipi deploy y una conciliación de implementación activada por webhook después de un lanzamiento exitoso.

Sigue leyendo