OCIにはインスタンスなどの単位でアクセスを制御することができるNetwork Security Groups(NSG) という機能があります。
こちらのリソースの作成はOCIのコンソール画面からは簡単にできますが
OCI CLIから作成するときはjsonの書き方や指定の方法でハマることもあったので
今回はその方法を紹介します。
この記事ではNSGの作成部分を紹介します。
次の記事で作成したNSGへのルールの適用までを紹介します。
前提条件
- OCI CLI が利用できること
NSG作成
まずはNSGを作成する際に必要になるjsonフォーマットを取得します。
CLIでcreateする場合のリファレンスは以下です。
今回はjsonフォーマットを取得するために以下のコマンドでjsonのフォーマットを取得します
oci network nsg create --generate-full-command-json-input > create.json
```
jsonのフォーマットがcreate.jsonに出力されたので中身を確認します。
```create.json
{
  "compartmentId": "string",
  "definedTags": {
    "tagNamespace1": {
      "tagKey1": "tagValue1",
      "tagKey2": "tagValue2"
    },
    "tagNamespace2": {
      "tagKey1": "tagValue1",
      "tagKey2": "tagValue2"
    }
  },
  "displayName": "string",
  "freeformTags": {
    "tagKey1": "tagValue1",
    "tagKey2": "tagValue2"
  },
  "maxWaitSeconds": 0,
  "vcnId": "string",
  "waitForState": [
    "PROVISIONING|AVAILABLE|TERMINATING|TERMINATED"
  ],
  "waitIntervalSeconds": 0
}
```
今回は最低限の項目でいいため、以下まで項目を削り必要な項目を入力します。
compartmentIdにはNSG作成対象のコンパートメントのOCID
vcnIdにはNSG作成対象のVCNのOCIDを記載します。
今回はOCID部分はマスクしています。
```create.json
{
  "compartmentId": "ocid1.compartment.oc1..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "displayName": "cli_create",
  "vcnId": "ocid1.vcn.oc1.ap-tokyo-1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
```
jsonファイルをinputにしてNSGを作成します。
使用するコマンドは以下です。
今回はOCI上のLinuxのデフォルトユーザのホームディレクトリで作業しているため
ファイルの場所は適宜読み読み替えてください。
```
oci network nsg create --from-json file:///home/opc/create.json
```
以下のような出力が表示されば正常にNSGの作成が開始されているはずです。
```
{
  "data": {
    "compartment-id": "ocid1.compartment.oc1..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "display-name": "cli_create",
    "freeform-tags": {},
    "id": "ocid1.networksecuritygroup.oc1.ap-tokyo-1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "lifecycle-state": "AVAILABLE",
    "time-created": "2020-07-22T17:02:10.069000+00:00",
    "vcn-id": "ocid1.vcn.oc1.ap-tokyo-1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  },
  "etag": "aa248bce"
}
```
実際にコンソール画面にアクセスして確認してみましょう。
OCIのコンソール画面で
ハンバーガーメニュー > ネットワーキング > 仮想クラウド・ネットワーク > 仮想クラウド・ネットワークの詳細 > ネットワーク・セキュリティ・グループ
と進むと今回作成したNSGが確認できるはずです。

# まとめ
まずは今回はCLIを使用してNSGを作ってみました。
次の記事ではこのNSGへのルール適用をCLIから行っていきます。
(本当は1つの記事にしようと思いましたが眠気に負けて半分に・・・)