#chiroito ’s blog

Java を中心とした趣味の技術について

Oracle Cloud Infrastructure CLIを設定してみた

この記事は「Oracle Cloud その2 Advent Calendar 2018」の12月3日の記事として書かれています。

Oracle Cloud Infrastructure (OCI) CLIを使うには、インストールしたあとに以下のようなちょっとした設定が必要です。

インストールがまだな場合はこちらの手順どおりにインストールしましょう。 Oracle Cloud Infrastructure CLIをインストールしてみた - #chiroito ’s blog

  1. 秘密鍵/公開鍵の作成
  2. 公開鍵の登録
  3. 設定ファイルの作成

これらの設定が終わっていないと、以下のようなエラーメッセージが出力されます。

・設定ファイルが存在しない場合のエラーメッセージ

$ oci os object list -bn ChihiroBucket
ERROR: Could not find config file at /home/opc/.oci/config

・設定ファイルはあるけど正しく設定されていない場合のエラーメッセージ

oci os object list -bn ChihiroBucket
ERROR: The config file at ~/.oci/config is invalid:

+Config Errors+---------+----------------------------------------------------------------------------------+
| Key         | Error   | Hint                                                                             |
+-------------+---------+----------------------------------------------------------------------------------+
| key_file    | missing | the full path and filename of the private PEM key file                           |
| region      | missing | for example, us-phoenix-1                                                        |
| tenancy     | missing | log into the console and find this OCID at the bottom of any page                |
| user        | missing | log into the console and go to the user's settings page to find their OCID       |
| fingerprint | missing | openssl rsa -pubout -outform DER -in <path to your private key> | openssl md5 -c |
+-------------+---------+----------------------------------------------------------------------------------+

秘密鍵/公開鍵の作成

 ociコマンドで鍵を作成すると、秘密鍵と公開鍵のファイルをOCIの設定用ディレクトリに作成してくれます。鍵ファイルにはパスフレーズを設定できます。コマンドが成功すると鍵のフィンガープリントが出力されます。これはあとで必要な情報となりますのでメモします。

 また、作成された公開鍵ファイルは次のステップでOCIのコンソールへ登録が必要なため、中身を表示してメモします。

※セキュリティ上公開できない部分は X になっていますが、これらは任意の英数字になります。

> oci setup keys
Enter a passphrase for your private key (empty for no passphrase):
Public key written to: /home/opc/.oci/oci_api_key_public.pem
Private key written to: /home/opc/.oci/oci_api_key.pem
Public key fingerprint: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX


    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':

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

> ls /home/opc/.oci/
oci_api_key.pem  oci_api_key_public.pem

> ls /home/opc/.oci/oci_api_key_public.pem
-----BEGIN PUBLIC KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX
-----END PUBLIC KEY-----

公開鍵の登録

 作成した公開鍵をOCIのコンソールへ登録します。ユーザ毎に公開鍵の登録が必要です。

 ユーザの画面でAdd Public Keyボタン(赤枠)を押して登録用のダイアログを表示します。

f:id:chiroito:20181201162602p:plain
MENU - Identity - Users - User Details

先ほど表示した公開鍵の中身をダイアログのテキストエリアへコピーします。

f:id:chiroito:20181201162043p:plain
MENU - Identity - Users - User Details - Add Public Key

登録が完了すると、登録された鍵が一覧表示され、鍵のフィンガープリントが表示されます。先ほどメモを忘れてた場合にはこちらからメモしましょう。

設定ファイルの作成

設定ファイルを作る前に、以下の情報をOracle Cloud Infrastructureの画面から取得します。

  • テナンシーのOCID
  • リージョン
  • ユーザのOCID

これらの情報は以下の2つの画面で確認できます。

  • MENU - Administration - Tenancy Details
  • MENU - Identity - Users

 画面左上のMENUからAdministration - Tenancy Detailsと遷移していきます。

 この画面ではRegionとテナンシーのOCIDを取得します。(赤枠)表示時にはOCIDは全ての桁が表示されていませんが、Copyを押すとクリップボードへコピーされます。全ての桁を表示するにはShowを押します。

f:id:chiroito:20181201160434p:plain
MENU - Administration - Tenancy Details

 画面左上のMENUからIdentity - Usersと遷移していくとユーザ一覧が表示されるため設定したいユーザを選択します。

 この画面ではユーザのOCIDを取得します。(赤枠)表示時にはOCIDは全ての桁が表示されていませんが、Copyを押すとクリップボードへコピーされます。全ての桁を表示するにはShowを押します。

f:id:chiroito:20181201160639p:plain
MENU - Identity - Users

好きなテキストエディタで $HOME/.oci/configを作成し、以下を設定します。

  • 秘密鍵ファイルの場所
  • リージョン
  • テナンシーのOCID
  • ユーザのOCID
  • 鍵のフィンガープリント

設定例は以下のとおりです。

※セキュリティ上公開できない部分は X になっていますが、これらは任意の英数字になります。

[DEFAULT]
key_file=/home/opc/.oci/oci_api_key.pem
region=us-phoenix-1
tenancy=ocid1.tenancy.oc1..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
user=ocid1.user.oc1..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
fingerprint=XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

確認

ociコマンドでなにかしてみて、先ほどのようなエラーメッセージが出なくなれば正しく設定できています。

以下の例では、オブジェクトストレージにあるChihiroBucketというバケットのファイル一覧を取得します。

$ oci os object list -bn ChihiroBucket
{
  "data": [
    {
      "md5": "VC+BNIk9Xh3T7+rf9Ss4pQ==-12",
      "name": "TestFile.txt",
      "size": 8475,
      "time-created": "2018-11-24T08:23:19.907000+00:00"
    }
  ],
  "prefixes": []
}