デプロイメント構成ファイル
デプロイメント構成ファイルは、インスタンスにダウンロードするアーティファクトと、アーティファクトをコピーする必要がある場所を定義します。構成ファイルでは、デプロイメント用のコマンドの順序も指定します。
構成ファイルは、YAMLで記述されます。ファイルは、インラインで定義するか、インスタンス・グループ・デプロイメントの処理中に汎用アーティファクト参照として指定できます。
DevOps管理者は、次のアクションのためにデプロイメント構成ファイルを使用できます:
- ターゲット・コンピュート・インスタンスに格納するアプリケーション・パッケージとその場所を指定します。
- アプリケーションのデプロイに必要なステップを指定します。
- デプロイメントに必要なユーザー定義変数または組込みの環境変数を指定します。
デプロイメント構成ファイルの構造
次に、デプロイメント構成ファイルの基本構造を示します:
{
version:
component:
env:
variables:
timeoutInSeconds:
files:
- source:
destination:
steps:
- stepType: Command
name:
command:
runAs:
timeoutInSeconds:
- stepType: Command
}
次に、デプロイメント構成のパラメータとその詳細を示します:
パラメータ | 説明 |
---|---|
version |
仕様ファイルのバージョン番号。値は1.0である必要があります。 |
component |
コンポーネント値。サポートされる値はdeployment のみです。 |
shell |
オプション。デプロイメント仕様のグローバル・レベルで使用するシェルを指定します。値は、ステップ・レベルでオーバーライドできます。許可される値は/bin/sh およびbash です。指定しない場合、デフォルト値のbash が使用されます。 |
env: variables |
デプロイメントの一部として実行される実行可能ファイルまたはbashコマンドで使用可能なユーザー定義の環境変数。 例: 組込み変数も使用できます。競合を回避するために、組込み変数の先頭には 組込み変数は:
|
env: vaultVariables |
オプション。キーは文字列で、POSIX環境変数に準拠している必要があります。この値は、ボールトからのシークレットのOracle Cloud Identifier (OCID)である必要があります。ボールトとデプロイメント・パイプラインは、同じテナンシである必要があります。テナンシには、デプロイメント・パイプライン・リソースがシークレットにアクセスすることを許可する適切なポリシーが必要です。 この変数のスコープは、デプロイメント仕様ファイルの実行であり、ファイル内のすべてのステップで使用できます。これらの変数の値は、ボールトから取得され、デプロイメント仕様ファイル内のすべてのステップの環境変数として使用できます。 |
files |
コピーする必要があるデプロイメント・パイプラインで定義されたアーティファクトと、それらのコピー先のターゲット・コンピュート・インスタンスの場所を指定します。このパラメータはオプション。 構成済ユーザー(デフォルトでは たとえば、デプロイメント構成ファイルの宛先ディレクトリを |
files: source |
アーティファクトのソースの場所を指定します。ソースは、ファイルまたはフォルダを参照できます。ソースがファイルである場合、そのファイルは宛先で定義されているフォルダにコピーされます。フォルダの場合、そのフォルダのすべてのコンテンツが宛先にコピーされます。ソースは相対パスを使用します。そのルートは1つ以上のアーティファクトのルート・フォルダです。 ファイル・タイプ拡張子を含む、アーティファクトの完全な名前を指定します。たとえば、ソースのファイルが たとえば、汎用アーティファクトで単一のファイル |
files: destination |
ソース・ファイルまたはフォルダをコピーする必要があるターゲット・フォルダを指定します。OCI DevOpsでは、デプロイメントのたびに宛先ディレクトリの内容が上書きされるため、宛先を本番コードのステージング・ディレクトリとみなすことをお薦めします。 次のデプロイメント仕様の例では、2つのディレクトリが示されています。宛先ディレクトリは |
steps |
デプロイメント中に順次実行されるステップのリストを指定します。各ステップは、インスタンスで異なるプロセスとして実行されます。指定した組込み変数およびユーザー定義の環境変数は、すべてプロセスに渡されます。 |
steps: name |
ステップのユーザー定義名。 |
steps: command |
シェル・コマンドまたはシェル実行可能ファイル。
単一行と複数行の両方のコマンドがサポートされます。1つのステップで指定されているすべてのコマンドは、同じシェル・セッションで実行されます。steps/*/shellの値に基づいて、コマンドは たとえば、コマンド |
steps: runAs |
指定されたユーザーとしてステップを実行します。デフォルトでは、すべてのステップはocarun ユーザーとして実行されます。 |
steps: timeoutInSeconds |
ステップを終了するタイムアウト期間を指定します。 |
steps: shell |
オプション。現在のステップのシェル・タイプを指定します。指定しない場合、値はグローバルshellパラメータから継承されます。許可される値は/bin/sh およびshell です。 |
steps: onFailure |
デプロイメント・ステージを正常に終了するために失敗時に実行する必要があるステップのリスト。onFailure セクションのコマンドは、対応するステップが失敗し、実行後にデプロイメント仕様が終了した場合にのみ実行されます。失敗の処理は、デプロイメント・ステージのステータスに影響しません。いずれかのステップが失敗した場合、デプロイメント・ステージのステータスはfailedのままです。 |
次に、デプロイメント構成ファイルの例を示します:
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
2つのディレクトリ(ステージングおよび本番)を設定するcloud-initファイルの例:
#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]
ソースと宛先の複数のエントリを理解するための例:
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
デプロイメント構成ファイルの実行
DevOpsサービスは、RunCommandエージェントを使用して、ターゲット・コンピュート・インスタンスの構成ファイルで指定されているコマンドを実行します。RunCommandプラグインの有効化の詳細は、インスタンス・グループへのデプロイの「前提条件」を参照してください。デプロイメント構成ファイルにプレースホルダが含まれている場合は、デプロイメントのパラメータ・リストで定義された値に置き換えられます。パラメータの構成を参照してください。