Deployment-Konfigurationsdatei
Die Deployment-Konfigurationsdatei definiert die Artefakte, die in die Instanz heruntergeladen werden sollen, sowie den Speicherort, an den die Artefakte kopiert werden müssen. Die Konfigurationsdatei gibt auch die Befehlssequenz für das Deployment an.
Die Konfigurationsdatei ist in YAML geschrieben. Die Datei kann inline definiert oder als generische Artefaktreferenz während des Instanzgruppen-Deployments angegeben werden.
DevOps-Administratoren können die Deployment-Konfigurationsdatei für die folgenden Aktionen verwenden:
- Anwendungspackages und deren Speicherorte für die Ziel-Compute-Instanz angeben
- Schritte angeben, die für das Deployment einer Anwendung erforderlich sind
- Benutzerdefinierte oder integrierte Umgebungsvariablen angeben, die für das Deployment erforderlich sind
Struktur der Deployment-Konfigurationsdatei
Die Deployment-Konfigurationsdatei ist im Allgemeinen wie folgt aufgebaut:
{
version:
component:
env:
variables:
timeoutInSeconds:
files:
- source:
destination:
steps:
- stepType: Command
name:
command:
runAs:
timeoutInSeconds:
- stepType: Command
}
Im Folgenden werden die Deployment-Konfigurationsparameter und die zugehörigen Details aufgeführt:
Parameter | Beschreibung |
---|---|
version |
Versionsnummer der Spezifikationsdatei. Der Wert muss 1.0 sein. |
component |
Komponentenwert. Der einzige unterstützte Wert ist deployment . |
shell |
Optional. Gibt die Shell an, die auf der globalen Ebene der Deployment-Spezifikation verwendet werden soll. Der Wert kann auf Schrittebene überschrieben werden. Zulässige Werte sind /bin/sh und bash . Wenn kein Wert angegeben ist, wird der Standardwert bash verwendet. |
env: variables |
Benutzerdefinierte Umgebungsvariablen, die für die ausführbaren Dateien oder bash-Befehle verfügbar sind, die beim Deployment ausgeführt werden. Beispiele: Integrierte Variablen können ebenfalls verwendet werden. Um Konflikte zu vermeiden, haben integrierte Variablen das Präfix Integrierte Variablen sind:
|
env: vaultVariables |
Optional. Der Schlüssel muss eine Zeichenfolge und mit POSIX-Umgebungsvariablen konform sein. Der Wert muss eine Oracle Cloud-ID (OCID) des Secrets aus dem Vault sein. Der Vault und die Deployment-Pipeline müssen demselben Mandanten angehören. Der Mandant muss über die entsprechende Policy verfügen, damit Deployment-Pipelineressourcen auf das Secret zugreifen können. Der Geltungsbereich dieser Variablen ist die Ausführung der Deployment-Spezifikationsdatei und steht in allen Schritten in der Datei zur Verfügung. Die Werte für diese Variablen werden aus dem Vault abgerufen und als Umgebungsvariablen für alle Schritte in der Deployment-Spezifikationsdatei zur Verfügung gestellt. |
files |
Gibt die in der Deployment-Pipeline definierten Artefakte an, die kopiert werden müssen, und den Speicherort der Ziel-Compute-Instanz, in die sie kopiert werden sollen. Dieser Parameter ist optional. Der konfigurierte Benutzer Beispiel: Wenn Sie das Zielverzeichnis in der Deployment-Konfigurationsdatei als |
files: source |
Gibt den Quellspeicherort der Artefakte an. Die Quelle kann eine Datei oder einen Ordner referenzieren. Wenn die Quelle eine Datei ist, wird diese Datei in den im Ziel definierten Ordner kopiert. Wenn es sich um einen Ordner handelt, wird der gesamte Inhalt dieses Ordners in das Ziel kopiert. Die Quelle verwendet den relativen Pfad, dessen Root der Root-Ordner eines oder mehrerer Artefakte ist. Geben Sie den vollständigen Namen des Artefakts einschließlich der Dateityperweiterung an. Beispiel: Wenn die Datei in der Quelle Beispiel: Wenn das allgemeine Artefakt eine einzelne Datei ( |
files: destination |
Gibt den Zielordner an, in den die Quelldatei oder der Quellordner kopiert werden muss. OCI DevOps empfiehlt, das Ziel als Staging-Verzeichnis für den Produktionscode zu berücksichtigen, da der Inhalt des Zielverzeichnisses bei jedem Deployment überschrieben wird. Im folgenden Beispiel für eine Deployment-Spezifikation werden zwei Verzeichnisse erwähnt. Das Zielverzeichnis ist |
steps |
Gibt die Liste der Schritte an, die während des Deployments sequenziell ausgeführt werden. Jeder Schritt wird als ein anderer Prozess auf der Instanz ausgeführt. Alle angegebenen integrierten und benutzerdefinierten Umgebungsvariablen werden an den Prozess übergeben. |
steps: name |
Benutzerdefinierter Name für den Schritt. |
steps: command |
Shell-Befehl oder ausführbare Shell-Datei. Wenn der Parameter Sowohl einzeilige als auch mehrzeilige Befehle werden unterstützt. Alle in einem Schritt angegebenen Befehle werden in derselben Shell-Session ausgeführt. Basierend auf dem Wert "steps/*/shell" kann es sich um Beispiel: Wenn Sie den Befehl |
steps: runAs |
Führen Sie den Schritt als der angegebene Benutzer aus. Standardmäßig werden alle Schritte als Benutzer ocarun ausgeführt. |
steps: timeoutInSeconds |
Gibt den Timeoutzeitraum zum Abschließen eines Schrittes an. |
steps: shell |
Optional. Gibt den Shell-Typ des aktuellen Schritts an. Ist kein Wert angegeben, wird der Wert vom globalen shell-Parameter übernommen. Zulässige Werte sind /bin/sh und shell . |
steps: onFailure |
Eine Liste der Schritte, die bei einem Fehler ausgeführt werden müssen, damit die Deployment-Phase ordnungsgemäß beendet wird. Befehle unter dem Abschnitt onFailure werden nur ausgeführt, wenn der entsprechende Schritt nicht erfolgreich verläuft. Nach der Ausführung wird die Deployment-Spezifikation beendet. Die Bearbeitung des Fehlers wirkt sich nicht auf den Status der Deployment-Phase aus. Wenn einer der Schritte nicht erfolgreich verläuft, bleibt der Status der Deployment-Phase "Nicht erfolgreich". |
Beispiel für eine Deployment-Konfigurationsdatei:
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
Beispiel für eine cloud-init-Datei zum Einrichten der beiden Verzeichnisse (Staging und Produktion):
#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]
Beispiel zum Verständnis mehrerer Einträge für Quelle und Ziel:
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
Deployment-Konfigurationsdatei ausführen
Der DevOps-Service verwendet den RunCommand-Agent, um die in der Konfigurationsdatei angegebenen Befehle auf der Ziel-Compute-Instanz auszuführen. Weitere Informationen zum Aktivieren des RunCommand-Plug-ins finden Sie unter In Instanzgruppen bereitstellen im Abschnitt "Voraussetzungen". Wenn die Deployment-Konfigurationsdatei Platzhalter enthält, werden sie durch die in der Parameterliste des Deployments definierten Werte ersetzt. Siehe Parameter konfigurieren.