[OCI]OCI CLIで--wait-for-stateオプションを使用して同期処理を行う

# はじめに

スクリプト内でOCI CLIを使用してComputeインスタンスやDBシステムのDBノードの起動/停止を行う際に、起動/停止が完了してから次の処理に移りたいといったケースがよくあります。
例えば、DBノードの起動が完了してから、APサーバであるComputeインスタンスを起動するといった場合です。

単にOCI CLIで起動/停止のコマンドを実行すると、APIコールが完了するとコマンドが終了してしまいます（非同期処理）が、--wait-for-stateオプションを使用することで、対象となるComputeインスタンスやDBノードが指定した状態になるまでコマンドが終了しません（同期処理）。
これにより前述のような起動/停止が完了してから次の処理に移るといったことが可能になります。

ただし、サービス毎に--wait-for-stateの状態を表す値が異なるので注意が必要です。

# 1. Computeインスタンスの起動/停止
OCI CLIでComputeインスタンスを起動するには、以下のようなコマンドを使用します。
```
oci compute instance action --action START --instance-id インスタンスのOCID
```
インスタンスの起動が完了してからコマンドが終了するようにするには、
**--wait-for-state 'RUNNING'**
を追加します。
```
oci compute instance action --action START --instance-id インスタンスのOCID --wait-for-state 'RUNNING'
```

OCI CLIでComputeインスタンスを停止するには、以下のようなコマンドを使用します。
```
oci compute instance action --action SOFTSTOP --instance-id インスタンスのOCID
```
インスタンスの停止が完了してからコマンドが終了するようにするには、
**--wait-for-state 'STOPPED'**
を追加します。
```
oci compute instance action --action SOFTSTOP --instance-id インスタンスのOCID --wait-for-state 'STOPPED'
```
# 2. BaseDBのDBノードの起動/停止
OCI CLIでDBノードを起動するには、以下のようなコマンドを使用します。
```
oci db node start --db-node-id DBノードのOCID
```
DBノードの起動が完了してからコマンドが終了するようにするには、
**--wait-for-state 'AVAILABLE'**
を追加します。
```
oci db node start --db-node-id DBノードのOCID --wait-for-state 'AVAILABLE'
```

OCI CLIでDBノードを停止するには、以下のようなコマンドを使用します。
```
oci db node stop --db-node-id DBノードのOCID
```
DBノードの停止が完了してからコマンドが終了するようにするには、
**--wait-for-state 'STOPPED'**
を追加します。
```
oci db node stop --db-node-id DBノードのOCID --wait-for-state 'STOPPED'
```
# 3. Autonomous Databaseの起動/停止
OCI CLIでAutonomous Databaseを起動するには、以下のようなコマンドを使用します。
```
oci db autonomous-database start --autonomous-database-id Autonomous DatabaseのOCID
```
Autonomous Databaseの起動が完了してからコマンドが終了するようにするには、
**--wait-for-state 'AVAILABLE'**
を追加します。
```
oci db autonomous-database start --autonomous-database-id Autonomous DatabaseのOCID --wait-for-state 'AVAILABLE'
```
OCI CLIでAutonomous Databaseを停止するには、以下のようなコマンドを使用します。
```
oci db autonomous-database stop --autonomous-database-id Autonomous DatabaseのOCID
```
Autonomous Databaseの停止が完了してからコマンドが終了するようにするには、
**--wait-for-state 'STOPPED'**
を追加します。
```
oci db autonomous-database stop --autonomous-database-id Autonomous DatabaseのOCID --wait-for-state 'STOPPED'
```
# 4. Oracle Analytics CloudのAnalyticsインスタンスの起動/停止
OCI CLIでAnalyticsインスタンスを起動（再開）するには、以下のようなコマンドを使用します。
```
oci analytics analytics-instance start --analytics-instance-id AnalyticsインスタンスのOCID
```
Analyticsインスタンスの起動が完了してからコマンドが終了するようにするには、
**--wait-for-state 'SUCCEEDED'**
を追加します。
```
oci analytics analytics-instance start --analytics-instance-id AnalyticsインスタンスのOCID --wait-for-state 'SUCCEEDED'
```

OCI CLIでAnalyticsインスタンスを停止（一時停止）するには、以下のようなコマンドを使用します。
```
oci analytics analytics-instance stop --analytics-instance-id AnalyticsインスタンスのOCID
```
Analyticsインスタンスの停止が完了してからコマンドが終了するようにするには、
**--wait-for-state 'SUCCEEDED'**
を追加します。
```
oci analytics analytics-instance stop --analytics-instance-id AnalyticsインスタンスのOCID --wait-for-state 'SUCCEEDED'
```
# 参考情報
[OCI CLI Command Reference](https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/)
・[oci compute instance action](https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/compute/instance/action.html)
・[oci db node start](https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/node/start.html)
・[oci db node stop](https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/node/stop.html)
・[oci db autonomous-database start](https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/autonomous-database/start.html)
・[oci db autonomous-database stop](https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/db/autonomous-database/stop.html)
・[oci analytics analytics-instance start](https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/analytics/analytics-instance/start.html)
・[oci analytics analytics-instance stop](https://docs.oracle.com/en-us/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/analytics/analytics-instance/stop.html)