Edited at

Oracle Cloud : コマンド・ライン・インタフェース(CLI) をインストールしてみた

コマンド・ライン・インタフェース(CLI)は、Oracle Cloud Infrastructureオブジェクトおよびサービスを操作できるツールです。

OCI CLIは、Webコンソールとほとんど同じ機能を提供し、追加の高度なコマンドが含まれています。

ということで、OCI CLIをインストールしてみてみます


■OCI CLIのインストール

CLIは、Mac、Windows、またはLinuxで動作するPython (バージョン2.7.5または3.5以降)で構築されており、Oracle Cloud Infrastructure APIを呼び出します。

まずPythonがインストールされていない場合は次の様にインストールします。

①Pythonインストール

[root@fra-inst01 opc]# yum install python

Loaded plugins: langpacks, ulninfo
ksplice-uptrack | 951 B 00:00
ol7_UEKR4 | 1.2 kB 00:00
ol7_addons | 1.2 kB 00:00
・・・

Transaction Summary
================================================================================
Upgrade 1 Package (+1 Dependent package)

Total download size: 5.7 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/2): python-2.7.5-69.0.1.el7_5.x86_64.rpm | 93 kB 00:00
(2/2): python-libs-2.7.5-69.0.1.el7_5.x86_64.rpm | 5.6 MB 00:01
--------------------------------------------------------------------------------
Total 3.9 MB/s | 5.7 MB 00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : python-libs-2.7.5-69.0.1.el7_5.x86_64 1/4
Updating : python-2.7.5-69.0.1.el7_5.x86_64 2/4
Cleanup : python-2.7.5-68.0.1.el7.x86_64 3/4
Cleanup : python-libs-2.7.5-68.0.1.el7.x86_64 4/4
Verifying : python-2.7.5-69.0.1.el7_5.x86_64 1/4
Verifying : python-libs-2.7.5-69.0.1.el7_5.x86_64 2/4
Verifying : python-libs-2.7.5-68.0.1.el7.x86_64 3/4
Verifying : python-2.7.5-68.0.1.el7.x86_64 4/4

Updated:
python.x86_64 0:2.7.5-69.0.1.el7_5

Dependency Updated:
python-libs.x86_64 0:2.7.5-69.0.1.el7_5

Complete!

②CLIインストーラ実行

Bashを使用して任意のComputerにCLIをインストール

[opc@fra-inst01 ~]$ bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6225 100 6225 0 0 40805 0 --:--:-- --:--:-- --:--:-- 40953
Downloading Oracle Cloud Infrastructure CLI install script from https://raw.githubusercontent.com/oracle/oci-cli/5657b833bfcf16298d43fb6f0204cd66173c5ac0/scripts/install/install.py to /tmp/oci_cli_install_tmp_WAle.
######################################################################## 100.0%
Python3 not found on system PATH
Running install script.
-- Verifying Python version.
-- Python version 2.7.5 okay.
・・・
--
-- ** Run `exec -l $SHELL` to restart your shell. **
--
-- Installation successful.
-- Run the CLI with /home/opc/bin/oci --help

③SHELL再読み込み

インストール直後は変数が反映されていないため再読み込み

[opc@fra-inst01 ~]$ exec -l $SHELL

④CLIインストール確認

[opc@fra-inst01 ~]$ oci -v

  2.4.28


■CLIの設定

CLIを稼働させる OCIのAPIユーザー、Tenancy、Compartments情報を取得しておきます

●設定情報

    例)

・OCI APIユーザー情報
USer名:test
User OCID:ocid1.user.oc1..aaaaareeqodirtky5rkowworkv80ldx7ecysatmdgty67ekzpotest

・Tenancy 情報
Tenancy名:test00014419
Tenancy OCID: ocid1.tenancy.oc1..aaaaaaaa56d4ubxlkxatwvzxzjsdieknkesktx4h2epjtsbtmspamjykcljfq

・Compartments情報
Compartment名:test_compartment
Compartment OCID: ocid1.compartment.oc1..aaaaaa4ax6ieicvoyfoxo632fsbw4zsieiffrdgto2bg4dciubirdfslmybkpelt

●設定実行

CLIに稼働OCI情報を登録

[opc@fra-inst01 ~]$ oci setup config

This command provides a walkthrough of creating a valid CLI config file.

The following links explain where to find the information required by this
script:

User OCID and Tenancy OCID:

https://docs.us-phoenix-1.oraclecloud.com/Content/API/Concepts/apisigningkey.htm#Other

Region:

https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/regions.htm

General config documentation:

https://docs.us-phoenix-1.oraclecloud.com/Content/API/Concepts/sdkconfig.htm

Enter a location for your config [/home/opc/.oci/config]:
Enter a user OCID: ★OCI APIユーザーを記入
Enter a tenancy OCID: ★tenancyを記入
Enter a region (e.g. eu-frankfurt-1, uk-london-1, us-ashburn-1, us-phoenix-1): ★CLIを実行するRigionを記入
Do you want to generate a new RSA key pair? (If you decline you will be asked to supply the path to an existing key.) [Y/n]: ★Yを記入
Enter a directory for your keys to be created [/home/opc/.oci]:★デフォルトでOK
Enter a name for your key [oci_api_key]:★デフォルトでOK
Public key written to: /home/opc/.oci/oci_api_key_public.pem
Enter a passphrase for your private key (empty for no passphrase):★必要に応じてパスワードを記入
Private key written to: /home/opc/.oci/oci_api_key.pem
Fingerprint: 50:d4:3f:ba:31:91:4c:a3:a7:7c:4b:4d:e5:7c:a5:80
Config written to /home/opc/.oci/config

If you haven't already uploaded your public key through the console,
follow the instructions on the page linked below in the section 'How to
upload the public key':


■CLI鍵をOCIユーザーに登録

CLIは鍵認証でアクセスされるので作成されたPublic Kye をOCI ユーザーに登録してCLIアクセスできるようにします

①Public鍵(oci_api_key_public.pem)確認

※ocicliのVersionにより、ファイル名が異なる場合があります

[opc@fra-inst01 ~]$ cat ~/.oci/*_public.pem

-----BEGIN PUBLIC KEY-----
TESTIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+dleSpqDm0VOUmPHLi1c
zc7LQ9BAztnAZtTHvIponI14/HIHo9AlFJHu7hkKkgvGRtVVJwh8p/8fKc4eC0L
7ozZhsfN+O7/vqd62MboDlBuYcQ0KFyzaho2j7D5jUw9EBDBDcNF2mrVEFAEjXJZ
hwNw5kVHdGDZjipt879JUTF/ItYGB7cAko6heYM19odQ2clP4CIGt3a6ypUloYOt
vSPqZZjeSZgX1y2xQ+pE/nE5NUGOoq+BS5eUL+hdGXUSKNqP74qULn82Sk5cwujB
prkphOrxG6EyFgnvABAKbfGqzBGjEbdxfyIqxyQtTGffGUWxuCFAnm5JftxiiEv+
xQIDTEST
-----END PUBLIC KEY-----

②・Public鍵をOCIユーザーに登録

上記oci_api_key_public.pemの内容をOCIユーザーの API Keyに登録


■Profileの確認と設定

oci setup configコマンドでProfile情報が設定された~/.oci/config ファイルが作成されます。

初期値は、[DEFAULT]プロファイルになるので、追加で別のリージョンも追加したい場合次のように[TOKYO]項を追記します

ociコマンドに --profile=TOKYO を追加することで、TOKYOプロファイルが使用されます



[opc@fra-inst01 ~]$ cat ~/.oci/config
[DEFAULT]
user=ocid1.user.oc1..aaaaareeqodirtky5rkowworkv80ldx7ecysatmdgty67ekzpotest
fingerprint=12:89:ab:8f:f4:25:f6:99:dd
key_file=/Users/opc/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaa56d4ubxlkxatwvzxzjsdieknkesktx4h2epjtsbtmspamjykcljfq
region=us-phoenix-1

[TOKYO]
user=ocid1.user.oc1..aaaaaaaafybxlpzvkhsknfuw5qhvqxzqgpn3xnljxwahgjfdpvizgtcj4cra
fingerprint=12:89:ab:8f:f4:25:f6:99:dd
key_file=/Users/shiro/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaa3mb7wrcy2ls3u3jsy2soq5ck3lc3q4mczitpdaymbuazc5tkguca
region=ap-tokyo-1


■CLIデフォルト値の設定

oci-cli-rcを作成して設定しておくことで、コマンド・ラインに入力する必要を無くすことができます。


●oci-cli-rc作成

[opc@fra-inst01 ~]$  oci setup oci-cli-rc

Predefined queries written under section OCI_CLI_CANNED_QUERIES
Command aliases written under section OCI_CLI_COMMAND_ALIASES
Parameter aliases written under section OCI_CLI_PARAM_ALIASES

[opc@fra-inst01 ~]$ ls ~/.oci
config oci_api_key.pem oci_api_key_public.pem oci_cli_rc


●oci_cli_rcファイルへデフォルト値追加

ここでは、上記作成した[DEFAULT]と[TOKYO]プロファイルのデフォルトコンパートメント値(test_compartmentのOCID)を最下部に設定します。

使用したプロファイルに応じて設定した値が使用されます

[opc@fra-inst01 ~]$ cat oci_cli_rc

[OCI_CLI_CANNED_QUERIES]
# For list results, this gets the ID and display-name of each item in the list. Note that when the names of attirbutes have
# dashes in them they need to be surrounded with double quotes. This query knows to look for a list because of the
# [*] syntax
get_id_and_display_name_from_list=data[*].{id: id, "display-name": "display-name"}
・・・

[DEFAULT]
compartment-id = ocid1.compartment.oc1..aaaaaaaahszzd8asdjoregbssrhdh

[TOKYO]
compartment-id = ocid1.compartment.oc1..aaaaaaaahszzd8asdjoregbssrhdh


■CLI実行テスト

デフォルトでは、コマンドに対するすべてのレスポンスはJSON形式で返されます。

たとえば、リージョンのリストを取得するコマンドを発行すると、次のレスポンスが戻されます。

[opc@fra-inst01 ~]$ oci iam region list

{
"data": [
{
"key": "FRA",
"name": "eu-frankfurt-1"
},
{
"key": "IAD",
"name": "us-ashburn-1"
},
{
"key": "LHR",
"name": "uk-london-1"
},
{
"key": "PHX",
"name": "us-phoenix-1"
}
]
}

場合によっては、可読性が問題になることがあります。

これは、レスポンスを表としてフォーマットすることで簡単に解決できます。

表形式のコマンドにレスポンスするには、次のコマンドを実行します。

次のリージョンのリストは、2つの列の表として戻されます。

[opc@fra-inst01 ~]$ oci iam region list --output table

+-----+----------------+
| key | name |
+-----+----------------+
| FRA | eu-frankfurt-1 |
| IAD | us-ashburn-1 |
| LHR | uk-london-1 |
| PHX | us-phoenix-1 |
+-----+----------------+


■CLIでVCNを作成/削除してみる

●CLIでVCN作成

[opc@fra-inst01 ~]$ oci network vcn create --cidr-block 10.0.0.0/16 --display-name test-vcn --dns-label TEST

{
"data": {
"cidr-block": "10.0.0.0/16",
"compartment-id": "ocid1.compartment.oc1..aaaaaa",
"default-dhcp-options-id": "ocid1.dhcpoptions.oc1.eu-frankfurt-1.aaaaaaaarjqrkqceq",
"default-route-table-id": "ocid1.routetable.oc1.eu-frankfurt-1.aaaaaaaam6yjams",
"default-security-list-id": "ocid1.securitylist.oc1.eu-frankfurt-1.aaaaaaaa4j3nq",
"defined-tags": {},
"display-name": "test-vcn",
"dns-label": "test",
"freeform-tags": {},
"id": "ocid1.vcn.oc1.eu-frankfurt-1.aaaaaaaabkjob",
"lifecycle-state": "AVAILABLE",
"time-created": "2018-07-25T04:19:54.429000+00:00",
"vcn-domain-name": "test.oraclevcn.com"
},
"etag": "dc5eacac"
}

●CLIでVCN削除

[opc@fra-inst01 ~]$ oci network vcn delete --vcn-id ocid1.vcn.oc1.uk-london-1.aaaaaaaabkjob

Are you sure you want to delete this resource? [y/N]: y

●エラーが出力された場合

OCIユーザーに権限がないと以下エラーが出力されます

Administrators等のAPIアクセスできるGroupを追加しましょう

[opc@fra-inst01 ~]$ oci network vcn create --cidr-block 11.0.0.0/16 --display-name test-vcn --dns-label TEST

ServiceError:
{
"code": "NotAuthorizedOrNotFound",
"message": "Authorization failed or requested resource not found.",
"opc-request-id": "IDFD66B3D9B3CA403F8C8D5DE4E0519DFD/83A5F33821FF6C82FA0A1C47AB5AE160ID",
"status": 404
}


■CLIでCompute Instanceを起動/停止してみる

  Compute InstanceをCLIで起動停止するにはocidが必要になりますが、

  ocidは判別しにくいため、作成したインスタンス名(name)指定でできるようにしてみます。

  方法は、cliの--queryオプションを使用して作成したインスタンス名(name)からocidを出力してshell変数に入れてやります

●Nemeからocidを取得するcli

① ociコマンドでインスタンス(test-inst01)のocid出力コマンド作成

[opc@fra-inst01 ~]$ oci compute instance list --query 'data[?"display-name"==`test-inst01`]."id"|[0]' --raw-output --region us-phoenix-1

==> ocid1.instance.oc1.phx.abcyhqjciwurbr6vbeignbpmyn7t3uwokhpep67fetest

②インスタンス名(test-inst01)を指定した起動停止スクリプト作成

  ①のコマンドをshell変数に入れて、CLIでInstanceをStart/Stop

・変数設定確認

[opc@fra-inst01 ~]$ id=$(oci compute instance list --query 'data[?"display-name"==`test-inst01`]."id"|[0]' --raw-output --region us-phoenix-1)

[opc@fra-inst01 ~]$ echo $id
==> ocid1.instance.oc1.phx.abcyhqjciwurbr6vbeignbpmyn7t3uwokhpep67fetest

・CLIでInstanceをStopさせてStatus確認

[opc@fra-inst01 ~]$ oci compute instance action --instance-id $id --action start

[opc@fra-inst01 ~]$ oci compute instance get --instance-id $id --query 'data."lifecycle-state"' --raw-output --region us-phoenix-1
STOPPED

・CLIでInstanceをStartさせてStatus確認

[opc@fra-inst01 ~]$ oci compute instance action --instance-id $id --action start

[opc@fra-inst01 ~]$ ooci compute instance get --instance-id $id --query 'data."lifecycle-state"' --raw-output --region us-phoenix-1
RUNNING


■OCI CLI コマンドリファレンス

https://docs.cloud.oracle.com/iaas/tools/oci-cli/latest/oci_cli_docs/index.html


■参考

・マニュアル:CLIのインストール