OCI DevOpsは、OCI上にCI/CD環境を構築するマネージドサービスです。
ここでは、OCI DevOpsを利用するための事前準備を行います。  

前提条件

  • クラウド環境
    • Oracle Cloudのアカウント(Free Trial)を取得済みであること

事前準備の流れ

  • 1.OCI Notifications セットアップ

  • 2.動的グループ/ポリシー セットアップ

  • 3.プロジェクトの作成

1.OCI Notifications セットアップ

1-1 トピックとサブスクリプションの設定

OCI DevOpsでは、OCI Notificationsサービスの「トピック」と「サブスクリプション」の設定が必要となります。
この設定をしておくことで、登録したメールアドレスにOCI DevOpsから通知を受け取ることができます。

OCI Notificationsについて
OCI Notificationsは、安全、高信頼性、低レイテンシおよび永続的にメッセージを配信するためのサービスです。
本ハンズオンでは、電子メールアドレスに対して配信を行いますが、他にもSlack/SMS/PagerDutyなどに通知を行うことができます。 また詳細はこちらのページをご確認ください。

1-1-1 トピックの作成

左上のハンバーガーメニューをクリックして、「開発者サービス」-「通知」を選択します。

「トピックの作成」ボタンをクリックします。

トピックの名前について
トピックの名前はテナンシで一意になります。
集合ハンズオンなど複数人で同一環境を共有されている皆様は、oci-devops-handson-01handson-tnなどの名前のイニシャルを付与し、名前が重複しないようにしてください。

「名前」に「oci-devops-handson」と入力します。

「作成」ボタンをクリックします。

「アクティブ」になることを確認します。

以上でトピックの作成は完了です。

1-1-2 サブスクリプションの作成

左メニュー「サブスクリプション」を選択します。

「サブスクリプションの作成」ボタンをクリックします。

「電子メール」にご自身のメールアドレスを入力します。

「作成」ボタンをクリックします。

設定したメールアドレスに、以下の内容のメールが届きます。「Confirm subscription」をクリックして、サブスクリプションを有効にします。

以下の画面が表示されれば完了です。

アクティブになっていることを確認します。
アクティブになっていない場合は、ブラウザを更新してください。

以上で、サブスクリプションの作成は完了です。

2.動的グループ/ポリシー セットアップ

2-1 動的グループとポリシーの作成

ここでは、OCI DevOpsを利用するための動的グループとポリシーの作成を行います。

動的グループとポリシーについて
Oracle Cloud Infrastrctureには動的グループという考え方があります。
動的グループの詳細はこちらのページをご確認ください。
また、設定した動的グループは、ポリシーを利用することにより、OCI上のリソースやインスタンスを主体とした操作を実現できます。
ポリシーの詳細はこちらのページをご確認ください。

2-1-1 OCI DevOpsで利用する動的グループ

OCI DevOpsを利用する上で、必要となる動的グループを作成します。
OCI DevOpsで設定する動的グループは以下となります。

動的グループ ルール 説明
OCI_DevOps_Dynamic_Group All {resource.type = ‘devopsrepository’, resource.compartment.id = ‘コンパートメントOCID’} OCI DevOpsのコード・リポジトリを利用するために必要な動的グループ
OCI_DevOps_Dynamic_Group All {resource.type = ‘devopsbuildpipeline’, resource.compartment.id = ‘コンパートメントOCID’} ビルド・パイプラインを利用するために必要な動的グループ
OCI_DevOps_Dynamic_Group All {resource.type = ‘devopsdeploypipeline’, resource.compartment.id = ‘コンパートメントOCID’} デプロイメント・パイプラインを利用するために必要な動的グループ

コンパートメントについて
Oracle Cloud Infrastrctureにはコンパートメントという考え方があります。 コンパートメントは、クラウド・リソース(インスタンス、仮想クラウド・ネットワーク、ブロック・ボリュームなど)を分類整理する論理的な区画で、この単位でアクセス制御を行うことができます。また、OCIコンソール上に表示されるリソースのフィルタとしても機能します。 コンパートメントの詳細はこちらのページをご確認ください。

動的グループの名前について
動的グループの名前はテナンシで一意になります。
集合ハンズオンなど複数人で同一環境を共有されている皆様は、OCI_DevOps_Dynamic_Group_01OCI_DevOps_Dynamic_Group_tnなどの名前のイニシャルを付与し、名前が重複しないようにしてください。

2-1-2 OCI DevOpsで利用するポリシー

OCI DevOpsを利用する上で、必要となるポリシーを作成します。 ポリシーは以下となります。

ポリシー 説明
Allow dynamic-group OCI_DevOps_Dynamic_Group to manage devops-family in compartment id コンパートメントOCID OCI DevOpsの各機能を利用するために必要なポリシー
Allow dynamic-group OCI_DevOps_Dynamic_Group to manage all-artifacts in compartment id コンパートメントOCID OCI DevOpsがOCIRやアーティファクト・レジストリを管理するために必要なポリシー
Allow dynamic-group OCI_DevOps_Dynamic_Group to use ons-topics in compartment id コンパートメントOCID OCI DevOpsがOCI Notificationsサービスを利用するために必要なポリシー

本ハンズオンでの動的グループについて
今回は、簡易的にハンズオンを実施するために、コンパートメント内の全てのリソースやインスタンスを動的グループとして含める設定を行なっています。
本来は、各サービスのタイプを指定して動的グループを作成することになります。

2-2 動的グループとポリシーの設定

今回のハンズオンでは、スクリプトを利用して、動的グループとポリシーを設定します。
サンプルコードをダウンロードします。

上部メニューの「Cloud Shell」アイコンをクリックして、Cloud Shellを起動します。

起動画面

起動後、以下コマンドを実行します。

wget https://raw.githubusercontent.com/oracle-japan/devops-commons-script/master/common_prepare.sh

コマンド結果

--2022-04-05 00:55:37--  https://raw.githubusercontent.com/oracle-japan/devops-commons-script/master/common_prepare.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.111.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1195 (1.2K) [text/plain]
Saving to: ‘common_prepare.sh.1’

100%[==============================================================================================================================================================================================================================================>] 1,195       --.-K/s   in 0s      

2022-04-05 00:55:37 (66.7 MB/s) - ‘common_prepare.sh’ saved [1195/1195]

ダウンロードしたスクリプトを実行します。

chmod +x ./common_prepare.sh
sh ./common_prepare.sh

コマンド結果

ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "data": {
    "compartment-id": "ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "defined-tags": {
      "Oracle-Tags": {
        "CreatedBy": "oracleidentitycloudservice/xxxxxxxxxxx@xxxxx",
        "CreatedOn": "2021-11-18T07:41:49.264Z"
      }
    },
    "description": "OCI_DevOps_Dynamic_Group",
    "freeform-tags": {},
    "id": "ocid1.dynamicgroup.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "inactive-status": null,
    "lifecycle-state": "ACTIVE",
    "matching-rule": "Any {resource.id = 'ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}, {instance.id = 'ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}",
    "name": "OCI_DevOps_Dynamic_Group",
    "time-created": "2021-11-18T07:41:49.350000+00:00"
  },
  "etag": "5f604e055e624ed3f993aafb2052b775bd37da0e"
}
{
  "data": {
    "compartment-id": "ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "defined-tags": {
      "Oracle-Tags": {
        "CreatedBy": "oracleidentitycloudservice/xxxxxxxxxxx@xxxxx",
        "CreatedOn": "2021-11-18T07:41:50.746Z"
      }
    },
    "description": "OCI_DevOps_Policy",
    "freeform-tags": {},
    "id": "ocid1.policy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "inactive-status": null,
    "lifecycle-state": "ACTIVE",
    "name": "OCI_DevOps_Policy",
    "statements": [
      "Allow dynamic-group member-takuya.niita_dynamic_group to manage devops-family in compartment ocid1.policy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "Allow dynamic-group member-takuya.niita_dynamic_group to manage all-artifacts in compartment ocid1.policy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "Allow dynamic-group member-takuya.niita_dynamic_group to use ons-topics in compartment ocid1.policy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    ],
    "time-created": "2021-11-18T07:41:50.880000+00:00",
    "version-date": null
  },
  "etag": "31c9339700c6132a1b6205df041ad52fcf66be51"
}

これで、ポリシーの設定は完了です。

3.プロジェクト

ここでは、OCI DevOpsインスタンスを作成し、プロジェクトを作成します。

3-1 プロジェクトの作成

OCI DevOpsは、プロジェクト単位で管理する仕組みです。最初にプロジェクトを作成します。

左上にあるハンバーガーメニューから「開発者サービス」-「プロジェクト」を選択します。

「DevOpsプロジェクトの作成」ボタンをクリックします。

「プロジェクト名」に「oci-devops-handson」と入力して、「トピックの選択」ボタンをクリックします。

プロジェクト名について
プロジェクト名はテナンシで一意になります。
集合ハンズオンなど複数人で同一環境を共有されている皆様は、oci-devops-handson-01oci-devops-handson-tnなどの名前のイニシャルを付与し、名前が重複しないようにしてください。

「トピック」が「oci-devops-handson」であることを確認します。

「トピックの選択」ボタンをクリックします。

「DevOpsプロジェクトの作成」ボタンをクリックします。

ロギングを有効化するために、「ログの有効化」ボタンをクリックします。

赤枠の箇所をクリックして有効化します。

そのままの状態で、「ログの有効化」ボタンをクリックします。

左メニューの「ログ」を選択して、「Active」となっていることを確認します。

以上で、プロジェクトの作成は完了です。

この後はそれぞれ以下のハンズオン手順に従ってください。

初級編 - Oracle Cloud Infrastructure(OCI) DevOpsことはじめ-Compute編-

初級編 - Oracle Cloud Infrastructure(OCI) DevOpsことはじめ-OKE編-

初級編 - Oracle Cloud Infrastructure(OCI) DevOpsことはじめ-Oracle Functions編-

更新日時: