LoginSignup
30
21

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

Last updated at Posted at 2018-07-27

コマンド・ライン・インタフェース(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コンソール右上の人型アイコンからログインしているユーザー画面に遷移することができます
01.png

・左ペインにある[APIキーの追加]をクリックしPublic鍵(oci_api_key_public.pem)を登録
02.png

・登録されたことを確認
03.png

■ 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 手動およびオフライン・インストール

30
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
21