Cloudの様々なリソースに対して、タグ付けを行い管理を行うことがあるかと思います。
今回はOCIのComputeにFreeform-tagを付与した後、"--query"オプションを用いて特定のタグの値のインスタンスの情報のみをoci-cliで出力する方法を記載します。
"--query"オプションは、JMESPathのクエリを使うことで、出力結果をフィルタリングするオプションで、
下記のサイトがとてもわかりやすいです。
今回はAlways Free環境で試しました。
■参考にさせて頂いた記事
コマンドライン(CLI)でOCIを操作する - Oracle Cloud Infrastructureアドバンスド
Oracle Cloud(OCI)のcliのinput/outputで使うjsonに慣れる
##作業手順
1.Computeインスタンスにタグを付与
2.付与したタグの確認
3.動作確認
###今回使用したサービスと技術
・OCI Compute
・OCI Tagging
・oci-cli
###著者の環境
Mac OS X 10.15.7
Oracle Cloud Always Free環境
##1.Computeインスタンスにタグを付与
今回はOracle Cloud Always Free環境にて、2つのインスタンスを作成し、
各インスタンスとタグ・ネームスペース、タグ・キー、値を下表のように設定します。
インスタンス作成時に「CreatedBy」タグと「CreatedOn」タグが自動生成されますが、
今回はフリーフォーム・タグを使用して、絞り込み出力を行います。
インスタンス名 | タグ・ネームスペース | タグ・キー | 値 |
---|---|---|---|
FreeVM1 | なし(フリーフォーム・タグ) | Project | test |
FreeVM2 | なし(フリーフォーム・タグ) | Project | dev |
タグの追加方法
インスタンスの詳細画面上部にある「他のアクション」ボタンをクリックします。
「タグの追加」が表示されますので、選択します。
このリソースに1つ以上のタグを追加 ダイアログボックスが表示されます。
タグ・ネームスペースを選択し、タグ・キー、値を入力後、「タグの追加」をクリックします。
■Computeインスタンスの作成方法
今回は作成方法を割愛いたしましたが、こちらの記事がとてもわかりやすいです。
【OCI】oracle cloud -仮想マシン(Compute)作成編-【初心者向け】
##2.追加したタグの確認
インスタンスの詳細画面で、画面上部に表示される「タグ」タブを選択します。
デフォルト表示では「定義されたタグ」が表示されているため、「フリーフォーム・タグ」タブを選択します。
前項で追加したタグ・キーと値が表示されていることを確認します。
##3.動作確認
ターミナルから下記コマンドを入力します。
値はバッククォートで囲む必要があります。
シングルクォートで囲んだ場合は「Query returned empty result, no output to show.」と表示されてしまい、情報を取得することができませんのでご注意ください。
oci compute instance list --query 'data[?"freeform-tags".Project == `test`]'
2つのインスタンスのうち、Projectタグの値がtestとなっている、FreeVM1のみが出力されていることを確認します。
[
{
"agent-config": {
"is-management-disabled": false,
"is-monitoring-disabled": false
},
"availability-config": {
"recovery-action": "RESTORE_INSTANCE"
},
"availability-domain": "ToKy:US-ASHBURN-AD-1",
"compartment-id": "ocid1.tenancy.oc1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"dedicated-vm-host-id": null,
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "oracleidentitycloudservice/ipaccho@xxx.xxx",
"CreatedOn": "2020-07-30T01:03:03.890Z"
}
},
"display-name": "FreeVM1",
"extended-metadata": {},
"fault-domain": "FAULT-DOMAIN-3",
"freeform-tags": {
"Project": "test"
},
"id": "ocid1.instance.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"image-id": "ocid1.image.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"instance-options": {
"are-legacy-imds-endpoints-disabled": false
},
"ipxe-script": null,
"launch-mode": "PARAVIRTUALIZED",
"launch-options": {
"boot-volume-type": "PARAVIRTUALIZED",
"firmware": "UEFI_64",
"is-consistent-volume-naming-enabled": true,
"is-pv-encryption-in-transit-enabled": false,
"network-type": "PARAVIRTUALIZED",
"remote-data-volume-type": "PARAVIRTUALIZED"
},
"lifecycle-state": "RUNNING",
"metadata": {
"ssh_authorized_keys": "ssh-rsa xxxxxxxxxxxxxxxxxxxxx== ipaccho@MacBook-Pro.local"
},
"region": "iad",
"shape": "VM.Standard.E2.1.Micro",
"shape-config": {
"gpu-description": null,
"gpus": 0,
"local-disk-description": null,
"local-disks": 0,
"local-disks-total-size-in-gbs": null,
"max-vnic-attachments": 1,
"memory-in-gbs": 1.0,
"networking-bandwidth-in-gbps": 0.48,
"ocpus": 1.0,
"processor-description": "2.0 GHz AMD EPYC\u2122 7551 (Naples)"
},
"source-details": {
"boot-volume-size-in-gbs": null,
"image-id": "ocid1.image.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"kms-key-id": null,
"source-type": "image"
},
"system-tags": {
"orcl-cloud": {
"free-tier-retained": "true"
}
},
"time-created": "2020-07-30T01:03:04.754000+00:00",
"time-maintenance-reboot-due": null
}
]
##参考
■oci-cli公式マニュアル
OCI CLI Command Reference 2.21.1 list
■OCI公式ドキュメント
タグ付けの概要
■jmespath公式サイト
JMESPath
###再掲
■参考にさせて頂いた記事
コマンドライン(CLI)でOCIを操作する - Oracle Cloud Infrastructureアドバンスド
Oracle Cloud(OCI)のcliのinput/outputで使うjsonに慣れる
JMESPATH式
【OCI】oracle cloud -仮想マシン(Compute)作成編-【初心者向け】