oci-cliのすゝめ

Pocket

概要

皆さん、CLI(Command Line Interface)はお好きですか?
セットアップ手順をコピペで行える、そのままスクリプトに組み込めるなどのメリットはとても魅力的だと思います。

本稿ではOCI(Oracle Cloud Infrastructure)のCLIのセットアップ手順を解説します。
大まかな流れとしては下記の通りです。

  • ociコマンドのインストール
  • 公開鍵の登録

前提

セットアップの際に以下の情報を使用しますのでご用意ください。

  • テナンシーのOCID
  • ユーザーのOCID(CLI用にユーザーを用意することが推奨されています)
  • コンパートメントのOCID(動作確認時)

また、pipコマンドを使用します。

本稿執筆時の動作環境はVirtualBox上のCentOS 7ですが、python(pip)が使えればどの環境でも差異はないと思われます。
Windows環境ではPython 3だと正しくインストールできないという現象が報告されていますのでご注意ください。

CLIのセットアップ

ociコマンドのインストール

OCIのCLIはpipのoci-cliというパッケージとして提供されています。

$ sudo pip install oci-cli
$ oci -v
2.5.14

初期設定

ociコマンドはインストールできたので、次に初期設定を行います。

$ 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.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/xxxxxxxx/.oci/config]: **<Enter>**
Enter a user OCID: **ocid1.user.oc1..aaaaaaaabbbbbbbbbccccccccddddddddeeeeeeeffffffff000000001111**
Enter a tenancy OCID: **ocid1.tenancy.oc1..aaaaaaaabbbbccccccccddddddddeeeeeeeeffffffff0000000011111111**
Enter a region (e.g. ap-seoul-1, ap-tokyo-1, ca-toronto-1, eu-frankfurt-1, uk-london-1, us-ashburn-1, us-gov-ashburn-1, us-gov-chicago-1, us-gov-phoenix-1, us-langley-1, us-luke-1, us-phoenix-1): ap-tokyo-1
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/xxxxxxxx/.oci]: **<Enter>**
Enter a name for your key [oci_api_key]: **<Enter>**
Public key written to: /home/xxxxxxxx/.oci/oci_api_key_public.pem
Enter a passphrase for your private key (empty for no passphrase): **<Enter>**
Private key written to: /home/xxxxxxxx/.oci/oci_api_key.pem
Fingerprint: 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff
Config written to /home/xxxxxxxx/.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':

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2

ここで各種OCIDを要求されますが、適宜読み替えてください。入力した情報は ~/.oci/config に出力されています。

$ cat .oci/config
[DEFAULT]
user=ocid1.user.oc1..aaaaaaaabbbbbbbbbccccccccddddddddeeeeeeeffffffff000000001111
fingerprint=00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff
key_file=/home/vagrant/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaabbbbccccccccddddddddeeeeeeeeffffffff0000000011111111
region=ap-tokyo-1

上記の例では同時にキーペアを生成していますが、既存のキーペアを使用することもできます。

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

ここで n を選択すればキーのパスを要求されます。

APIキーの登録

この後生成された公開鍵をAPIキーとしてユーザ情報に登録するのですが、これだけはコマンドラインで行うことができませんでした。

コンソールの「アイデンティティ」 > 「ユーザー」 からユーザーを選択し、下のほうにある「APIキー」のところで「公開キーの追加」ボタンから公開鍵を登録します。

ここに公開鍵を貼り付けます。

$ cat .oci/oci_api_key_public.pem

確認

これでCLIの設定は終了です。正しくセットアップできているか確認します。

$ oci compute image list -c ocid1.compartment.oc1..aaaaaaaau0000111122223333444455556666777788889999aaaabbbbcc

{
    "data": [
        {
        "agent-features": null,
        "base-image-id": null,
        "compartment-id": null,
        "create-image-allowed": true,
        "defined-tags": {},
        "display-name": "Windows-Server-2016-Standard-Edition-VM-Gen2-E2-2019.05.14-0",
        "freeform-tags": {},
        "id": "ocid1.image.oc1.ap-tokyo-1.aaaaaaaacpb5wue42hvprnjzy2m5k6c2qg42n3e3yzd45aaw6rgi24tq7sdq",
        "launch-mode": "PARAVIRTUALIZED",
        "launch-options": {
            "boot-volume-type": "PARAVIRTUALIZED",
            "firmware": "UEFI_64",
            "is-consistent-volume-naming-enabled": false,
            "is-pv-encryption-in-transit-enabled": true,
            "network-type": "PARAVIRTUALIZED",
            "remote-data-volume-type": "PARAVIRTUALIZED"
        },
        "lifecycle-state": "AVAILABLE",
        "operating-system": "Windows",
        "operating-system-version": "Server 2016 Standard",
        "size-in-mbs": 262144,
        "time-created": "2019-05-15T17:31:47.320000+00:00"
        },
    :

コンパートメントのOCIDは読み替えてください。
ステータス401が返ってきた場合はユーザーの権限が足りていないか、公開鍵の登録が正常に行われていないと思われます。

最後に

実際に環境を構築する場合はCLIではなくterraformを使うことになるとは思いますが、有効なshapeの一覧を取得するといったちょっとした作業にはCLIが有効かと思います。
効果的に活用してCoolなOCIライフをお楽しみください。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です