Facebook Twitter
お問い合わせ
TOPICS
更新情報
ホーム > ブログ > Oracle Cloud > OracleCloudでJenkinsCI/CDデプロイ環境作成

OracleCloudでJenkinsCI/CDデプロイ環境作成

ブログ
Oracle Cloud
2021.12.03

この記事はOracle Cloud Infrastructure Advent Calendar 2021 カレンダー2の12月3日の投稿になります。

使用サービス

・OKIT

・Resource Manager

・Terraform

・Jenkins

CIとは

(Continuous Integration(継続的インテグレーション)

CIの目標はインテグレーションをより小さなサイクルで回し素早く修正することにあり
具体的な内容としては開発者がコードの変更をした時にビルドやテストを自動化することなど

テスト、ステージング環境までのデプロイ。

CDとは

(Continuous Delivery 継続的デリバリー)(Continuous Deployment(継続的デプロイ)

継続的デリバリーは開発者によるアプリケーションへの変更に対して、バグがないか自動的にテストし、リポジトリにアップロードする。

継続的デプロイメントは、開発者による変更をリポジトリから本番環境に自動的にリリースし、顧客が使用できるようにするというもの。


サーバ構成イメージ

JenkinsのCI環境作成にあたって、今回は専用のインスタンスを一台立ち上げ、CIサーバとして利用し

Githubリポジトリへプッシュされたとき、Jenkinsはリモートサーバでdockerコンテナを立ち上げテストを行うといったジョブを作成するイメージです。

Resource ManagerでOCIのリソース作成

以下の構成をResourceManagerで作成し、OCIリソースをgitリポジトリ管理出来るようにします。

Terraformコード作成

前回の記事でOKITで構成管理をご紹介しました。今回はOKITを利用してTerraformコード作成してみます。

OKITにログインする。

http://{okitip}/okit/designer

今回は既存のVCN、サブネットにインスタンスを追加していきます。

左上のメニューから「Query」を選択し、リージョンやコンパートメントを指定し、現在の環境を表示

します。

既存のネットワークが読み込まれるのでインスタンスをドラック&ドロップで追加していきます。

sub1サブネットにjnksv(jenkinsサーバ)配置する。

cloud-initでjenkinsコンテナ起動しておく。

#cloud-config
timezone: Asia/Tokyo
locale: ja_JP.utf8

runcmd:
  #docker-install
  - sudo wget -P /etc/yum.repos.d http://yum.oracle.com/public-yum-ol7.repo
  - sudo yum install -y docker-engine
  - sudo systemctl start docker
  - sudo systemctl 
  - sudo docker pull jenkins/jenkins
  - sudo docker run -d -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts-jdk11

sub2サブネットにappsv(アプリケーションサーバ)配置する。

cloud-initでdockerインストール起動までしておく。

#cloud-config
timezone: Asia/Tokyo
locale: ja_JP.utf8

runcmd:
  #docker-install
  - sudo wget -P /etc/yum.repos.d http://yum.oracle.com/public-yum-ol7.repo
  - sudo yum install -y docker-engine
  - sudo systemctl start docker

左上のメニューから「ResorceManager」を選択。

Planを選択し、Create Stackを押下する。

OCIコンソールにログインし、リソース・マネージャ>スタックを開く

Planを選択しスタック作成したので、コンピュートは構築されず、これまで指定したシステム構成に対応するスタックの作成が行われます。

Terraform構成をバージョン管理する

このままで実行することもできますが、インフラCI/CD管理を行いたいため、githubでコード管理しておきます。

terraform構成:ダウンロードをクリックすると、terraform構成がダウンロードされるので、githubにアップロードしておきます。

githubリポジトリからスタックを作成する

リソース・マネージャ>構成ソース・プロバイダ

terraformコードをアップロードしたgithubと接続する

構成ソースプロバイダ設定後、githubリポジトリコンテンツを読み取り可能になるのでブランチを選択し、スタックを作成します。

※ResourceManagerは、リポジトリコンテンツを読み取りますが、変更をリポジトリにプッシュしません。

スタックを適用する

これでterraform構成をリビジョン管理できるようになりましたが、Resource Manager上では手動で実行する為

CI/CDパイプラインで自動実行したい場合は、CLIを使用する「クラウドでのIaC:TerraformとResourceManagerのCI / CDパイプラインへの統合-OCICLIを使用した構築」を参照

Jenkinsからリモート接続

スタック実行完了したらjenkinsにログインする。初期Passはサーバにログインして確認します。

http://{jnksv_ip}:8080

aap-svにsshリモート接続する為、以下参考にJenkinsにSSH pluginを設定する。

https://plugins.jenkins.io/ssh/

ジョブを作成する。

ジョブ名:helw1

ビルド環境のリモートホストでシェルを実行をチェックし、ビルド前スクリプトに実行コマンドを入力します。

出力を確認しappsvサーバに接続できていることが確認できました。

まとめ

長くなるのでJenkinsジョブの作成は次回にしたいと思います。

今回はOKITでTerraformコード作成し、Resource Managerを用いて、一部インフラのリポジトリ管理することができました。

現状では全てのOCIリソースがOKITでコード化できるわけではないので注意してください。


この記事が気に入ったら
「いいね!」

この記事を書いた人


関連コンテンツ

CONTACT お問い合わせ

Cloudiiのサービスやプロダクトについて
興味をお持ちの方は、
お気軽にお問い合わせください。