File di configurazione distribuzione
Il file di configurazione della distribuzione definisce gli artifact da scaricare nell'istanza e la posizione in cui devono essere copiati. Il file di configurazione specifica inoltre la sequenza di comandi per la distribuzione.
Il file di configurazione è scritto in YAML. Il file può essere definito in linea o fornito come riferimento artifact generico durante la distribuzione del gruppo di istanze.
Gli amministratori di DevOps possono utilizzare il file di configurazione della distribuzione per le azioni riportate di seguito.
- Specificare i package di applicazioni e le relative posizioni da memorizzare nell'istanza di computazione di destinazione.
- Specificare i passi necessari per distribuire un'applicazione.
- Specificare le variabili di ambiente definite dall'utente o incorporate necessarie per la distribuzione.
Struttura file di configurazione distribuzione
Di seguito è riportata la struttura di base del file di configurazione della distribuzione.
{
version:
component:
env:
variables:
timeoutInSeconds:
files:
- source:
destination:
steps:
- stepType: Command
name:
command:
runAs:
timeoutInSeconds:
- stepType: Command
}
Di seguito sono riportati i parametri di configurazione della distribuzione e i relativi dettagli.
Parametro | descrizione; |
---|---|
version |
Numero di versione del file di specifica. Il valore deve essere 1.0. |
component |
Valore componente. L'unico valore supportato è deployment . |
shell |
facoltativo. Specifica la shell da utilizzare a livello globale della specifica di distribuzione. Il valore può essere sostituito a livello di passo. I valori consentiti sono /bin/sh e bash . Se non è specificato, verrà utilizzato il valore predefinito bash . |
env: variables |
Variabili di ambiente definite dall'utente disponibili per gli eseguibili o per il comando bash eseguito nell'ambito della distribuzione. Esempi: È inoltre possibile utilizzare variabili incorporate. Per evitare conflitti, alle variabili incorporate viene anteposto il prefisso Di seguito sono riportate le variabili incorporate.
|
env: vaultVariables |
facoltativo. La chiave deve essere conforme a una stringa e a una variabile d'ambiente POSIX. Il valore deve essere un OCID (Oracle Cloud Identifier) del segreto del vault. Il vault e la pipeline di distribuzione devono appartenere alla stessa tenancy. La tenancy deve disporre di un criterio appropriato per consentire alle risorse della pipeline di distribuzione di accedere al segreto. L'ambito di questa variabile è l'esecuzione del file delle specifiche di distribuzione ed è disponibile per tutti i passi nel file. Il valore di queste variabili viene recuperato dal vault e reso disponibile come variabili di ambiente per tutti i passi all'interno del file di specifica della distribuzione. |
files |
Specifica gli artifact definiti nella pipeline di distribuzione da copiare e la posizione dell'istanza di computazione di destinazione in cui copiarli. Si tratta di un parametro facoltativo. L'utente configurato, Ad esempio, se si assegna la directory di destinazione nel file di configurazione della distribuzione come |
files: source |
Specifica la posizione di origine degli artifact. L'origine può fare riferimento a un file o a una cartella. Se l'origine è un file, tale file viene copiato nella cartella definita nella destinazione. Se si tratta di una cartella, tutti i contenuti della cartella vengono copiati nella destinazione. L'origine utilizza un percorso relativo, la cui radice è la cartella radice di uno o più artifact. Specificare il nome completo dell'artifact, inclusa l'estensione del tipo di file. Ad esempio, se il file nell'origine è Ad esempio, se l'artifact generale specifica un singolo file, |
files: destination |
Specifica la cartella di destinazione in cui deve essere copiato il file o la cartella di origine. OCI DevOps consiglia di considerare la destinazione come directory intermedia per il codice di produzione, poiché il contenuto della directory di destinazione viene sovrascritto durante ogni distribuzione. Nell'esempio di specifica di distribuzione riportato di seguito vengono menzionate due directory. La directory di destinazione è |
steps |
Specifica la lista dei passi eseguiti in sequenza durante la distribuzione. Ogni passo viene eseguito come un processo diverso nell'istanza. Tutte le variabili di ambiente incorporate e definite dall'utente specificate vengono passate al processo. |
steps: name |
Nome definito dall'utente per il passo. |
steps: command |
Comando shell o eseguibile shell. Se il parametro Sono supportati sia comandi a riga singola che a riga multipla. Tutti i comandi specificati in un passo vengono eseguiti nella stessa sessione della shell. In base al valore di passi/*/shell, i comandi possono essere Ad esempio, se si specifica il comando |
steps: runAs |
Eseguire il passo come l'utente specificato. Per impostazione predefinita, tutti i passi vengono eseguiti come utente ocarun . |
steps: timeoutInSeconds |
Specifica il periodo di timeout per terminare un passo. |
steps: shell |
facoltativo. Specifica il tipo di shell del passo corrente. Se non specificato, il valore viene ereditato dal parametro della shell globale. I valori consentiti sono /bin/sh e shell . |
steps: onFailure |
Lista di passi che devono essere eseguiti in caso di errore per uscire in modo normale dalla fase di distribuzione. I comandi nella sezione onFailure vengono eseguiti solo se il passo corrispondente non riesce e, dopo l'esecuzione, la specifica di distribuzione viene interrotta. La gestione dell'errore non influisce sullo stato della fase di distribuzione. Se uno dei passi non riesce, lo stato della fase di distribuzione rimane Non riuscito. |
Di seguito è riportato un esempio di file di configurazione della distribuzione.
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
Esempio di file cloud-init per impostare le due directory (staging e produzione):
#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]
Esempio per comprendere più voci per origine e destinazione:
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
Esecuzione del file di configurazione della distribuzione
Il servizio DevOps utilizza l'agente RunCommand per eseguire i comandi specificati nel file di configurazione nell'istanza di computazione di destinazione. Per ulteriori informazioni sull'abilitazione del plugin RunCommand, vedere la sezione "Prerequisiti" in Distribuzione in un gruppo di istanze. Se il file di configurazione della distribuzione contiene segnaposto, questi vengono sostituiti con i valori definiti nell'elenco di parametri della distribuzione. Vedere Configurazione dei parametri.