CL LAB

HOME > Blog > Jenkinsによる CI/CDテンプレート: Azure版の利用方法解説

Jenkinsによる CI/CDテンプレート: Azure版の利用方法解説

 ★ 4

はじめに

今回紹介しているテンプレートは、Jenkinsのパイプラインジョブであり、Azure上でVMイメージを作成し、VMをデプロイするテンプレートです。このテンプレートを作成して公開に踏み切った切っ掛けは、あるプロジェクト体験からです。Jenkinsを司令塔とするCI/CDの導入に筆者も当事者として参加していたわけですが、正直に失敗すると思っていました。しかしながら、時間の経過とともに加速が付き、最終的には見事に成功を収めました。成功要因は、いくつか挙げる事ができますが、筆者が最も注目したのは、ちゃんと構成され、正確に動いているテンプレートの存在です。よく、Jenkinsの導入は敷居が高いという評判が付きまとっているなか、「100ページの説明よりも、1つの実戦的なテンプレートのほうが勝る」と言ったところです。その後、これは素晴らしいという気持ちでAzure版として再現してみました。それがこのテンプレートです。色んなものが凝縮されています。おそらく、ちょっと拡張すれば、そのまま実務に利用できるでしょう。このテンプレート利用においては、特に制限などありません。ただ、技術的な中身については、クリエーションライン社及び著者が保証するものではありません。自己責任の下でご利用お願いします。

Jenkinsテンプレートの基本構成

下の図は、公開しているテンプレートの基本構成です。Packer(Ansible+Serverspec)でVMイメージを作成し、TerraformでAzureにデプロイする構成になっています。実行結果は、#slackに通知されます。ここで、それぞれの実行環境の実装やジョブの管理など、司令塔の役割を果たしているのがJenkinsです。

今回のテンプレートは、次のように2つのフェーズに分けて運用する想定で構成しています。

フェーズ1:VMイメージ作成

  • Packer(Ansible+Serverspec)でコードを書きます。
  • Jenkinsfileを作成します。
  • コードをGitlabにPUSHします。
  • JenkisにGitlabのURL及び認証情報などを含むジョブを登録します。
  • JenkinsのGUIでジョブを実行すると、Gitlabから一式のファイルをJenkinsサーバにウンロードして実行します。
  • Azure上で一時的なVMを起動し、プロビジョニングを行います。
  • プロビジョニングが完了すると、Azure上にVMイメージとして登録します。
  • 一時的なVMを含むすべての作業環境を削除します。
  • 作業完了ステータスを#slackに通知します。

Jenkinsジョブの裏側では、次のように動いています。

フェーズ2:VMデプロイ

  • フェーズ1に作られたVMイメージのURIをTerraformコードに反映します。
  • Jenkinsfileを作成します。
  • コードをGitlabにPUSHします。
  • JenkisにGitlabのURL及び認証情報などを含むジョブを登録します。
  • 既に該当のVMが存在する場合は、ターミネートします。
  • JenkinsのGUIでジョブを実行すると、Gitlabから一式のファイルをJenkinsサーバにダウンロードして実行します。
  • Azure上にVMを起動します。
  • 作業完了ステータスを#slackに通知します。

Jenkinsジョブの裏側では、次のように動いています。

Jenkinsテンプレートの拡張

今回のテンプレートは、一度、Jenkinsジョブを動かすまで頑張れば、用途に応じてコード追加し、簡単に拡張できます。

Dockerコンテナーの起動

次は、コンテナーを起動する場合のイメージです。

ソースコードのチェック

次は、プログラムのソースコードをチェックしたい場合のイメージです。

スケジュールジョブの運用

バックアップなどスケジュールジョブ実行も簡単に追加できます。

モニタリングの実装

商用版のリリースが近づいてくると、VMイメージにモニタリング構成を仕掛けてVMを置き換えます。

全方位的なCD/CDの実装

究極的には、アプリケーションとインフラを区別することなく、すべてコード化して管理します。

Jenkinsテンプレートのソースコード及び利用方法解説

Jenkinsテンプレートのソースコードは、Gitlabに公開しています。

Jenkinsテンプレートのソースコード

Jenkinsテンプレートの利用方法については、こちらを参照してください。

Jenkins CI/CDテンプレート:Azure版の利用方法解説

Author

lee

データベースが大好きなサーバサイド のエンジニア。AWS、Azure、RDB、DWH、 Hadoop、Spark、MongoDB、GraphDB(Neo4j)、Jenkinsなど、インフラからビックデータ処理までマルチスキルエンジニアとして活動している。

[著書]
グラフデータベースNeo4jの他

leeの記事一覧

leeへお問い合わせ

Related post

mautic is open source marketing automation