コマンド・ライン・インタフェース(CLI)は、Oracle Cloud Infrastructureオブジェクトおよびサービスを操作できるツールです。
OCI CLIは、Webコンソールとほとんど同じ機能を提供し、追加の高度なコマンドが含まれています。
ということで、OCI CLIをインストールしてみてみます
■ 要件
コマンドライン・インタフェース(CLI): 要件を参考に事前設定します。
⚫︎ Pythonインストールとアップデート
CLIでは、MacOS、WindowsまたはサポートされているLinuxおよびUNIX系のオペレーティング・システムで実行されるPythonバージョン3.6以上をサポートしています。
新しいバージョンのPythonは、すぐにサポートされない場合があります。CLIは、記載されていないオペレーティング・システムで動作する可能性がありますが、互換性のテストは行っていません。
サポートされるPythonバージョンおよびオペレーティング・システムを参考に設定します。
● Pythonインストール確認
Pythonがインストールされているか確認
以下のようにVersion確認して3.6以降が表示されればOK
[opc@macbook~]$ python -V
Python 3.6.8
● Python Versionを変更する場合
1) 恒久的に Version変更したい場合
次を参考
2) CLIインストール時のみ Version変更したい場合
他に影響でないように aliasコマンドで、セッションのみ適用
[opc@macbook~]$ alias python='/usr/bin/python3'
[opc@macbook~]$ python -V
Python 3.6.8
■ OCI CLIのインストール
● 方法1. すばやくインストールする手順
OCIコマンドライン・インタフェース(CLI)をすばやくインストールして構成する方法が、OCIドキュメント: CLIのインストールに各オペレーティング・システム毎に手順があります。
ここでは、Oracle Linux 8 へインストールしてみてみます。
Oracle Linux 8 手順
Oracle Linux 8を使用している場合は、dnfを使用してCLIをインストールできます。
sudo dnf -y install oraclelinux-developer-release-el8
sudo dnf install python36-oci-cli
[opc@ol8 ~]$ sudo dnf -y install oraclelinux-developer-release-el8
This system is receiving updates from OSMS server.
Last metadata expiration check: 2:59:48 ago on Tue 26 Sep 2023 01:25:51 AM GMT.
Package oraclelinux-developer-release-el8-1.0-7.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[opc@ol8 ~]$ sudo dnf install python36-oci-cli
This system is receiving updates from OSMS server.
Last metadata expiration check: 3:00:04 ago on Tue 26 Sep 2023 01:25:51 AM GMT.
Dependencies resolved.
======================================================================================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================================================================================
Installing:
python36-oci-cli noarch 3.23.2-1.el8 ol8_addons-x86_64 15 M
Upgrading:
python36-oci-sdk x86_64 2.93.1-1.el8 ol8_addons-x86_64 26 M
Installing dependencies:
python3-arrow noarch 1.1.1-1.el8 ol8_addons-x86_64 119 k
python3-jmespath noarch 0.10.0-1.el8 ol8_addons-x86_64 48 k
python3-prompt-toolkit noarch 3.0.29-1.0.2.el8 ol8_addons-x86_64 669 k
python3-terminaltables noarch 3.1.0-1.0.1.el8 ol8_addons-x86_64 31 k
python3-typing-extensions noarch 3.7.4.2-1.el8 ol8_addons-x86_64 47 k
python3-wcwidth noarch 0.2.5-3.el8 ol8_addons-x86_64 48 k
Installing weak dependencies:
python3-pygments noarch 2.2.0-22.module+el8.5.0+20329+5c5719bc ol8_appstream-x86_64 1.9 M
Transaction Summary
======================================================================================================================================================================================
Install 8 Packages
Upgrade 1 Package
Total download size: 44 M
Is this ok [y/N]: y
Downloading Packages:
(1/9): python3-terminaltables-3.1.0-1.0.1.el8.noarch.rpm 370 kB/s | 31 kB 00:00
(2/9): python3-arrow-1.1.1-1.el8.noarch.rpm 12 MB/s | 119 kB 00:00
(3/9): python3-jmespath-0.10.0-1.el8.noarch.rpm 506 kB/s | 48 kB 00:00
(4/9): python3-pygments-2.2.0-22.module+el8.5.0+20329+5c5719bc.noarch.rpm 14 MB/s | 1.9 MB 00:00
(5/9): python3-wcwidth-0.2.5-3.el8.noarch.rpm 464 kB/s | 48 kB 00:00
(6/9): python3-typing-extensions-3.7.4.2-1.el8.noarch.rpm 348 kB/s | 47 kB 00:00
(7/9): python3-prompt-toolkit-3.0.29-1.0.2.el8.noarch.rpm 4.7 MB/s | 669 kB 00:00
(8/9): python36-oci-cli-3.23.2-1.el8.noarch.rpm 117 MB/s | 15 MB 00:00
(9/9): python36-oci-sdk-2.93.1-1.el8.x86_64.rpm 43 MB/s | 26 MB 00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 53 MB/s | 44 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Upgrading : python36-oci-sdk-2.93.1-1.el8.x86_64 1/10
Installing : python3-wcwidth-0.2.5-3.el8.noarch 2/10
Installing : python3-typing-extensions-3.7.4.2-1.el8.noarch 3/10
Installing : python3-arrow-1.1.1-1.el8.noarch 4/10
Installing : python3-jmespath-0.10.0-1.el8.noarch 5/10
Installing : python3-terminaltables-3.1.0-1.0.1.el8.noarch 6/10
Installing : python3-pygments-2.2.0-22.module+el8.5.0+20329+5c5719bc.noarch 7/10
Installing : python3-prompt-toolkit-3.0.29-1.0.2.el8.noarch 8/10
Installing : python36-oci-cli-3.23.2-1.el8.noarch 9/10
Cleanup : python36-oci-sdk-2.79.0-1.el8.x86_64 10/10
Running scriptlet: python36-oci-sdk-2.79.0-1.el8.x86_64 10/10
Verifying : python3-pygments-2.2.0-22.module+el8.5.0+20329+5c5719bc.noarch 1/10
Verifying : python3-terminaltables-3.1.0-1.0.1.el8.noarch 2/10
Verifying : python3-jmespath-0.10.0-1.el8.noarch 3/10
Verifying : python3-arrow-1.1.1-1.el8.noarch 4/10
Verifying : python3-typing-extensions-3.7.4.2-1.el8.noarch 5/10
Verifying : python3-wcwidth-0.2.5-3.el8.noarch 6/10
Verifying : python3-prompt-toolkit-3.0.29-1.0.2.el8.noarch 7/10
Verifying : python36-oci-cli-3.23.2-1.el8.noarch 8/10
Verifying : python36-oci-sdk-2.93.1-1.el8.x86_64 9/10
Verifying : python36-oci-sdk-2.79.0-1.el8.x86_64 10/10
Upgraded:
python36-oci-sdk-2.93.1-1.el8.x86_64
Installed:
python3-arrow-1.1.1-1.el8.noarch python3-jmespath-0.10.0-1.el8.noarch python3-prompt-toolkit-3.0.29-1.0.2.el8.noarch
python3-pygments-2.2.0-22.module+el8.5.0+20329+5c5719bc.noarch python3-terminaltables-3.1.0-1.0.1.el8.noarch python3-typing-extensions-3.7.4.2-1.el8.noarch
python3-wcwidth-0.2.5-3.el8.noarch python36-oci-cli-3.23.2-1.el8.noarch
Complete!
[opc@ol8 ~]$ 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 API Signing Key, OCID and Tenancy OCID:
https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#Other
Region:
https://docs.cloud.oracle.com/Content/General/Concepts/regions.htm
General config documentation:
https://docs.cloud.oracle.com/Content/API/Concepts/sdkconfig.htm
Enter a location for your config [/home/opc/.oci/config]:
Enter a user OCID: ocid1.user.oc1..aaaaaaaatkb2a32gjm4yyq6hrx4geayb77o6hr5kgcipyvinmej3rup6sz2a
Enter a tenancy OCID: ocid1.tenancy.oc1..aaaaaaaa3mb7wrcy2ls3u3jsy2soq5ck3lc3q4mczitpdaymbuazc5tkguca
Enter a region by index or name(e.g.
1: af-johannesburg-1, 2: ap-chiyoda-1, 3: ap-chuncheon-1, 4: ap-dcc-canberra-1, 5: ap-hyderabad-1,
6: ap-ibaraki-1, 7: ap-melbourne-1, 8: ap-mumbai-1, 9: ap-osaka-1, 10: ap-seoul-1,
11: ap-singapore-1, 12: ap-sydney-1, 13: ap-tokyo-1, 14: ca-montreal-1, 15: ca-toronto-1,
16: eu-amsterdam-1, 17: eu-dcc-dublin-1, 18: eu-dcc-dublin-2, 19: eu-dcc-milan-1, 20: eu-dcc-milan-2,
21: eu-dcc-rating-1, 22: eu-dcc-rating-2, 23: eu-frankfurt-1, 24: eu-madrid-1, 25: eu-marseille-1,
26: eu-milan-1, 27: eu-paris-1, 28: eu-stockholm-1, 29: eu-zurich-1, 30: il-jerusalem-1,
31: me-abudhabi-1, 32: me-dcc-muscat-1, 33: me-dubai-1, 34: me-jeddah-1, 35: mx-queretaro-1,
36: sa-santiago-1, 37: sa-saopaulo-1, 38: sa-vinhedo-1, 39: uk-cardiff-1, 40: uk-gov-cardiff-1,
41: uk-gov-london-1, 42: uk-london-1, 43: us-ashburn-1, 44: us-chicago-1, 45: us-gov-ashburn-1,
46: us-gov-chicago-1, 47: us-gov-phoenix-1, 48: us-langley-1, 49: us-luke-1, 50: us-phoenix-1,
51: us-sanjose-1): ap-tokyo-1
Do you want to generate a new API Signing 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]:
Enter a name for your key [oci_api_key]:
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: a2:f5:5f:f0:16:0f:f2:78:de:90:66:80:05:af:e1:78
Config written to /home/opc/.oci/config
If you haven't already uploaded your API Signing public key through the
console, follow the instructions on the page linked below in the section
'How to upload the public key':
https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2
・インストール確認
[opc@ol8 ~]$ oci -v
3.23.2
● 方法2. CLIインストール(Python 仮想環境)
venv Pythonモジュールは、分離したPython環境を作成できる仮想環境ビルダーです。CLIを仮想環境にインストールすることをお薦めします。
1) 仮想環境の作成および構成
[opc@macbook~]$ python3 -m venv oracle-cli
[opc@macbook~]$ source oracle-cli/bin/activate
(oracle-cli) [opc@macbook~]$
2) コマンドライン・インタフェースのインストール
PIP を使用してインストール
(oracle-cli) [opc@macbook~]$ pip install oci-cli
Collecting oci-cli
Downloading oci_cli-3.24.0-py3-none-any.whl (36.7 MB)
|████████████████████████████████| 36.7 MB 434 kB/s
Collecting pytz>=2016.10
Using cached pytz-2022.7.1-py2.py3-none-any.whl (499 kB)
Collecting python-dateutil<3.0.0,>=2.5.3
Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Collecting terminaltables==3.1.0
Downloading terminaltables-3.1.0.tar.gz (12 kB)
Collecting jmespath==0.10.0
Downloading jmespath-0.10.0-py2.py3-none-any.whl (24 kB)
Collecting six>=1.15.0
Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting cryptography<40.0.0,>=3.2.1
Downloading cryptography-39.0.2-cp36-abi3-macosx_10_12_universal2.whl (5.4 MB)
|████████████████████████████████| 5.4 MB 33.7 MB/s
Collecting pyOpenSSL<24.0.0,>=17.5.0
Downloading pyOpenSSL-23.0.0-py3-none-any.whl (57 kB)
|████████████████████████████████| 57 kB 22.5 MB/s
Collecting prompt-toolkit==3.0.29
Downloading prompt_toolkit-3.0.29-py3-none-any.whl (381 kB)
|████████████████████████████████| 381 kB 41.9 MB/s
Collecting click==8.0.4
Downloading click-8.0.4-py3-none-any.whl (97 kB)
|████████████████████████████████| 97 kB 21.4 MB/s
Collecting certifi
Downloading certifi-2022.12.7-py3-none-any.whl (155 kB)
|████████████████████████████████| 155 kB 23.5 MB/s
Collecting arrow>=1.0.0
Downloading arrow-1.2.3-py3-none-any.whl (66 kB)
|████████████████████████████████| 66 kB 25.4 MB/s
Collecting PyYAML<6,>=5.4
Downloading PyYAML-5.4.1.tar.gz (175 kB)
|████████████████████████████████| 175 kB 30.7 MB/s
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... done
Collecting oci==2.96.0
Downloading oci-2.96.0-py3-none-any.whl (20.0 MB)
|████████████████████████████████| 20.0 MB 5.1 MB/s
Collecting circuitbreaker<2.0.0,>=1.3.1
Downloading circuitbreaker-1.4.0.tar.gz (9.7 kB)
Collecting wcwidth
Downloading wcwidth-0.2.6-py2.py3-none-any.whl (29 kB)
Collecting cffi>=1.12
Downloading cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl (174 kB)
|████████████████████████████████| 174 kB 27.5 MB/s
Collecting pycparser
Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)
|████████████████████████████████| 118 kB 56.1 MB/s
Using legacy 'setup.py install' for terminaltables, since package 'wheel' is not installed.
Using legacy 'setup.py install' for circuitbreaker, since package 'wheel' is not installed.
Building wheels for collected packages: PyYAML
Building wheel for PyYAML (PEP 517) ... done
Created wheel for PyYAML: filename=PyYAML-5.4.1-cp39-cp39-macosx_10_9_universal2.whl size=45664 sha256=af9cfae14dc3aab7d69da366dd78320458a61eaa026c5e31b3c2c9980bd67dfc
Stored in directory: /Users/opc/Library/Caches/pip/wheels/b7/a5/c4/504d913c2a55bb09c607541578ec5f844d1ff33467abe93ba5
Successfully built PyYAML
Installing collected packages: pycparser, cffi, six, cryptography, wcwidth, pytz, python-dateutil, pyOpenSSL, circuitbreaker, certifi, terminaltables, PyYAML, prompt-toolkit, oci, jmespath, click, arrow, oci-cli
Running setup.py install for circuitbreaker ... done
Running setup.py install for terminaltables ... done
Successfully installed PyYAML-5.4.1 arrow-1.2.3 certifi-2022.12.7 cffi-1.15.1 circuitbreaker-1.4.0 click-8.0.4 cryptography-39.0.2 jmespath-0.10.0 oci-2.96.0 oci-cli-3.24.0 prompt-toolkit-3.0.29 pyOpenSSL-23.0.0 pycparser-2.21 python-dateutil-2.8.2 pytz-2022.7.1 six-1.16.0 terminaltables-3.1.0 wcwidth-0.2.6
WARNING: You are using pip version 21.2.4; however, version 23.0.1 is available.
You should consider upgrading via the '/Users/opc/oracle-cli/bin/python3 -m pip install --upgrade pip' command.
3) CLIインストール確認
[opc@macbook ~]$ source oracle-cli/bin/activate
(oracle-cli) [opc@macbook ~]$ oci -v
3.24.0
● 方法3. CLIインストール (GitHubから Download)
1) CLIインストーラ実行
Bashを使用して任意のComputerにCLIをインストール
ここではOCI Compute Instanceにインストールするのでopcユーザーでインストール
Macも同じ手順です。
[opc@macbook ~]$ 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
2) SHELL再読み込み
インストール直後は変数が反映されていないため再読み込み
[opc@macbook ~]$ exec -l $SHELL
3) CLIインストール確認
[opc@macbook ~]$ oci -v
3.1.2
■ 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@macbook ~]$ 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アクセスできるようにします
1) Public鍵(oci_api_key_public.pem)確認
※ocicliのVersionにより、ファイル名が異なる場合があります
[opc@macbook ~]$ 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-----
2) Public鍵をOCIユーザーに登録
上記oci_api_key_public.pemの内容をOCIユーザーの API Keyに登録
・登録するユーザー画面へ遷移
WEBコンソール右上の人型アイコンからログインしているユーザー画面に遷移することができます
・左ペインにある[APIキーの追加]をクリックしPublic鍵(oci_api_key_public.pem)を登録
■ Profileの確認と設定
oci setup configコマンドでProfile情報が設定された~/.oci/config ファイルが作成されます。
初期値は、[DEFAULT]プロファイルになるので、追加で別のリージョンも追加したい場合次のように[TOKYO]項を追記します
ociコマンドに --profile=TOKYO を追加することで、TOKYOプロファイルが使用されます
[opc@macbook ~]$ 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/opc/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaa3mb7wrcy2ls3u3jsy2soq5ck3lc3q4mczitpdaymbuazc5tkguca
region=ap-tokyo-1
■ CLIデフォルト値の設定
oci-cli-rcを作成して設定しておくことで、コマンド・ラインに入力する必要を無くすことができます。
● oci-cli-rc作成
[opc@macbook ~]$ 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@macbook ~]$ ls ~/.oci
config oci_api_key.pem oci_api_key_public.pem oci_cli_rc
● oci_cli_rcファイルへデフォルト値追加
ここでは、上記作成した[DEFAULT]と[TOKYO]プロファイルのデフォルトコンパートメント値(test_compartmentのOCID)を最下部に設定します。
使用したプロファイルに応じて設定した値が使用されます
[opc@macbook ~]$ cat ~/.oci/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@macbook ~]$ oci iam region list
{
"data": [
{
"key": "BOM",
"name": "ap-mumbai-1"
},
{
"key": "FRA",
"name": "eu-frankfurt-1"
},
{
"key": "GRU",
"name": "sa-saopaulo-1"
},
{
"key": "IAD",
"name": "us-ashburn-1"
},
{
"key": "ICN",
"name": "ap-seoul-1"
},
{
"key": "LHR",
"name": "uk-london-1"
},
{
"key": "NRT",
"name": "ap-tokyo-1"
},
{
"key": "PHX",
"name": "us-phoenix-1"
},
{
"key": "SYD",
"name": "ap-sydney-1"
},
{
"key": "YYZ",
"name": "ca-toronto-1"
},
{
"key": "ZRH",
"name": "eu-zurich-1"
}
]
}
場合によっては、可読性が問題になることがあります。
これは、レスポンスを表としてフォーマットすることで簡単に解決できます。
表形式のコマンドにレスポンスするには、次のコマンドを実行します。
次のリージョンのリストは、2つの列の表として戻されます。
[opc@macbook ~]$ oci iam region list --output table
+-----+----------------+
| key | name |
+-----+----------------+
| BOM | ap-mumbai-1 |
| FRA | eu-frankfurt-1 |
| GRU | sa-saopaulo-1 |
| IAD | us-ashburn-1 |
| ICN | ap-seoul-1 |
| LHR | uk-london-1 |
| NRT | ap-tokyo-1 |
| PHX | us-phoenix-1 |
| SYD | ap-sydney-1 |
| YYZ | ca-toronto-1 |
| ZRH | eu-zurich-1 |
+-----+----------------+
■ CLIでVCNを作成/削除してみる
● CLIでVCN作成
[opc@macbook ~]$ 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@macbook ~]$ 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@macbook ~]$ 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でルート表を追加/更新してみる
● ルート表作成
oci network route-table create --display-name "RT-Public-Subnet01" --compartment-id "<コンパートメントOCID>" --route-rules '[{"cidrBlock":"0.0.0.0/0","networkEntityId":"<Internet GatewayのOCID>"}]' --vcn-id "<VCNのOCID>"
● ルート・ルール更新
ルート・ルールを追加できないので、全部上書き更新するようにupdate文を実行
oci network route-table update --rt-id "<ルート表のOCID>" --route-rules '[{"cidrBlock":"0.0.0.0/0","networkEntityId":"<Internet GatewayのOCID>"},{"cidrBlock":"192.168.0.0/6","networkEntityId":"<DRGのOCID>"},{"cidrBlock":"10.0.0.0/16","networkEntityId":"<DRGのOCID>"}]'
■ CLIでセキュリティ・リストを追加・更新してみる
・Security-list Reference
・IngressSecurityRule Reference
・EgressSecurityRule Reference
・IcmpOptions Reference
● セキュリティ・リスト作成
oci network security-list create --display-name "<表示名>" --compartment-id "<コンパートメント OCID>" --vcn-id "<VCN OCID>"
● セキュリティ・ルール更新追加
プロトコル番号は、ICMP ("1"), TCP ("6"), UDP ("17"), and ICMPv6 ("58")
・Ingress Roure
oci network security-list update --security-list-id "<セキュリティ・リストOCID>" --ingress-security-rules '[
{"source": "0.0.0.0/0", "protocol": "6", "isStateless": false, "tcpOptions": {"sourcePortRange":null, "destinationPortRange": {"max": 22, "min": 22}}},
{"source": "0.0.0.0/0", "protocol": "1", "isStateless": false, "icmpOptions": {"type":3,"code":4}},
{"source": "10.0.0.0/16", "protocol": "1", "isStateless": false, "icmpOptions": {"type":3,"code":null}},
{"source": "10.0.0.0/16", "protocol": "6", "isStateless": false, "tcpOptions": {"sourcePortRange":null, "destinationPortRange":null}}
]'
・Egress Roure
oci network security-list update --security-list-id "<セキュリティ・リストOCID>" --ingress-security-rules '[
{"destination": "0.0.0.0/0", "protocol": "6", "isStateless": false, "tcpOptions": {"destinationPortRange": null, "sourcePortRange": null}}
]'
■ CLIでCompute Instanceを起動/停止してみる
Compute InstanceをCLIで起動停止するにはocidが必要になりますが、
ocidは判別しにくいため、作成したインスタンス名(name)指定でできるようにしてみます。
方法は、cliの--queryオプションを使用して作成したインスタンス名(name)からocidを出力してshell変数に入れてやります
● インスタンス名(name)からocidを取得するcli
1) ociコマンドでインスタンス(test-inst01)のocid出力コマンド作成
[opc@macbook ~]$ oci compute instance list --query 'data[?"display-name"==`test-inst01`]."id"|[0]' --raw-output --region us-phoenix-1
==> ocid1.instance.oc1.phx.abcyhqjciwurbr6vbeignbpmyn7t3uwokhpep67fetest
2) インスタンス名(test-inst01)を指定した起動停止スクリプト作成
1) のコマンドをshell変数に入れて、CLIでInstanceをStart/Stop
・変数設定確認
[opc@macbook ~]$ id=$(oci compute instance list --query 'data[?"display-name"==`test-inst01`]."id"|[0]' --raw-output --region us-phoenix-1)
[opc@macbook ~]$ echo $id
==> ocid1.instance.oc1.phx.abcyhqjciwurbr6vbeignbpmyn7t3uwokhpep67fetest
・CLIでInstanceをStopさせてStatus確認
[opc@macbook ~]$ oci compute instance action --instance-id $id --action start
[opc@macbook ~]$ oci compute instance get --instance-id $id --query 'data."lifecycle-state"' --raw-output --region us-phoenix-1
STOPPED
・CLIでInstanceをStartさせてStatus確認
[opc@macbook ~]$ oci compute instance action --instance-id $id --action start
[opc@macbook ~]$ oci compute instance get --instance-id $id --query 'data."lifecycle-state"' --raw-output --region us-phoenix-1
RUNNING
■ OCI CLI コマンドリファレンス
・Oracle Cloud Infrastructure CLI Command Reference
■ 参考
・ コマンドライン・インタフェース(CLI)
・ CLIのインストール
・ OCI CLI 手動およびオフライン・インストール