こんにちは!現場のインフラやデプロイの自動化に日々頭を悩ませているあなたへ。
「あのジョブ、誰がいつの間にかUIから設定変更して、動かなくなったんだけど……」
「本番用のJenkinsサーバーを新しく構築し直すことになったけど、手動で設定したプラグインやクレデンシャルを全部覚えてないよ……」
――そんな「Jenkinsおじいちゃんの暗黙知」や「UIポチポチ作業の呪縛」に絶望した夜はありませんか?
こんにちは、あなたの背中をそっと、しかし確実にお手伝いするシニアエンジニアです。今回は、そのJenkinsの属人化地獄を綺麗さっぱり解消し、すべてをGit管理下において美しくコード化する「Configuration as Code (JCasC)」の世界へご案内します。
これをマスターすれば、あなたのJenkinsは「誰が触っても一瞬で同じ状態に復元できる、最高にクールな自動化エンジン」に生まれ変わります。毎日の作業が劇的に楽になりますよ。さあ、一緒に進めていきましょう!
—
1. そもそも「JCasC」ってなんだろう?(ツールの役割)
これまで、Jenkinsの設定変更といえばこんな感じだったはずです。
1. ブラウザでJenkinsの管理画面を開く
2. 「システムの設定」や「プラグインの管理」をマウスでポチポチ
3. 「保存」ボタンを押して祈る
これでは、設定の変更履歴(誰が・いつ・なぜ変えたか)は残らないし、サーバーが吹っ飛んだら復旧に半日かかります。
そこで登場するのが JCasC (Jenkins Configuration as Code) です。
JCasCの役割はシンプル。「Jenkinsのあらゆる設定を、たった1枚(あるいは複数枚)のYAMLファイルに定義する」こと。
コード化(Infrastructure as CodeのJenkins版)する最大のメリットは、以下の3つです。
- 完全な再現性: サーバが何度壊れても、YAMLを読み込ませれば一瞬で元の環境が復活します。
- 変更の可視化 (Git管理): PR(プルリクエスト)を出してレビューしてからJenkinsの設定が変わるという、安全なワークフローが実現できます。
- 脱・属人化: 「あの人にしか分からないJenkinsの設定」が完全に消滅します。
—
2. 導入のファーストステップ:JCasCのインストール
それでは、実際に手を動かしていきましょう。
今回は最もクリーンな方法として、Docker環境、あるいは既存のJenkinsへプラグインを入れる前提で解説します。
まずは、Jenkinsのプラグイン管理画面(または初期セットアップウィザード)から、以下のプラグインをインストールしてください。
- Configuration as Code Plugin (`configuration-as-code`)
これだけです!このプラグインが、これから書くYAMLファイルを読み取る「魔法の通訳」になってくれます。
—
3. 基礎セットアップ:環境変数とセキュリティの要塞化
JCasCを導入する際、最も重要なのが「秘密情報(パスワードやAPIトークン)をYAMLに直書きしないこと」です。これをやると、Gitリポジトリにクレデンシャルが露出し、セキュリティ事故の原因になります。
JCasCは、OSの環境変数をYAML内に動的に埋め込む強力な機能を持っています。まずはその基本セットアップを見てみましょう。
管理用のYAMLファイルを書く (`jenkins.yaml`)
プロジェクトのルート、あるいはJenkinsのホームディレクトリ配下に `jenkins.yaml` という名前でファイルを作成します。これがあなたのJenkinsの「設計図」になります。
jenkins.yaml の基本形
jenkins:
# システム基本設定
systemMessage: “Welcome to our Automated CI/CD Pipeline, managed by JCasC!”
numExecutors: 4 # 同時ビルド数
mode: NORMAL
# 認証・セキュリティ設定(例:ローカルDBを使った簡易認証)
securityRealm:
local:
allowsSignup: false
users:
- id: “${ADMIN_USER}”
password: “${ADMIN_PASSWORD}”
# 権限管理(マトリクスセキュリティ)
authorizationStrategy:
globalMatrix:
permissions:
- “Overall/Admin:admin”
- “Overall/Read:authenticated”
ここから下がJCasCの真骨頂!プラグインの設定もYAMLで書けます
unclassified:
# 例:Global Build Stats などのプラグイン設定がここに書けます
location:
url: “http://localhost:8080/”
adminAddress: “admin@example.com”
環境変数の渡し方
上記の `”${ADMIN_USER}”` や `”${ADMIN_PASSWORD}”` は、Jenkinsプロセスの起動時に渡された環境変数を参照しています。Dockerを使う場合は、以下のようにコンテナ起動時に渡せば安全です。
docker run \
-p 8080:8080 \
-e ADMIN_USER=”admin” \
-e ADMIN_PASSWORD=”super-secret-password” \
-e CASC_JENKINS_CONFIG=”/var/jenkins_home/jenkins.yaml” \
jenkins/jenkins:lts
(※ `CASC_JENKINS_CONFIG` 環境変数にYAMLファイルのパスを指定するのが、JCasCを自動起動させるお約束の呪文です)
—
4. 精度高い HelloWorld 的な動作確認:プラグインの事前インストールもコード化する
「設定はできたけど、本当に動くの?」という不安を解消するために、プラグインの事前インストールと、簡単なジョブ(パイプライン)の定義までを含めた「完璧なHelloWorld構成」を作成してみましょう。
実は、JCasCと相性抜群の Configuration as Code Support for Plugins や CasC-based plugin installer を使うか、あるいはDockerビルド時にプラグインを入れておくのが実務では一般的ですが、今回はJCasCのコアのすごさを体感するために、設定の反映確認を行いましょう。
発展版:YAMLだけで「メール通知設定」と「ツール設定」まで行う
以下のYAMLを読み込ませて、Jenkinsの画面をリロードしてみてください。ポチポチしなくても設定が反映されている感動を味わえます。
jenkins:
systemMessage: “=== 完全にコード化された Jenkins サーバー ===”
numExecutors: 2
unclassified:
# メール通知(SMTP)の設定例
mailer:
smtpHost: “smtp.example.com”
smtpPort: “587”
useSsl: true
replyToAddress: “ci-no-reply@example.com”
ツール(JDKやGitなど)のパス設定もコード化可能
tool:
git:
installations:
- name: “Default”
home: “/usr/bin/git”
これを適用(Jenkinsの管理画面から「Configuration as Code」を開き、「再読み込み」ボタンを押す、またはJenkinsを再起動)し、画面のシステム設定を見てください。あなたがYAMLに書いた通りの値が、一言一句違わず入力されているはずです。
—
5. 現場で役立つ!Git管理と変更適用のベストプラクティス
さあ、Jenkinsの設定がコードになりました。ここからがプロの腕の見せ所です。このYAMLファイルを以下のようなフローで運用します。
1. 専用のGitリポジトリを作成する
`jenkins-config` などのリポジトリを作り、`jenkins.yaml` を配置します。
2. 変更は必ず Pull Request (PR) で行う
「ビルダーの数を増やしたい」「新しいプラグインの設定を追加したい」ときは、ブランチを切ってYAMLを修正し、GitHub等でPRを作成します。
3. CIでYAMLの構文チェックを行う
JCasCにはスキーマ検証機能があります。PRが作られた際に、YAMLの構文エラーがないかを自動テストさせましょう。
4. Webhookで自動リロード
メインブランチにマージされたら、JenkinsのAPI(あるいはWebhook)を叩いて、JCasCに設定をホットリロードさせます。
# 例:JenkinsのAPIを叩いてリロードを走らせるコマンド
curl -X POST -u “admin:${API_TOKEN}” http://localhost:8080/configuration-as-code/reload
このフローが回り始めた瞬間から、あなたのチームから「誰が設定変えた?」という不毛な探偵ごっこは永遠に消え去ります。
—
おわりに
お疲れ様でした!今回は Jenkins Configuration as Code (JCasC) の基本概念から、環境変数を活用したセキュアな設定、そしてGit管理による運用フローまでを駆け足で解説しました。
最初はYAMLの記法やプラグインのキー名(どこに何と書けばいいか)に戸惑うこともあるかもしれません。ですが、安心してください。Jenkinsの管理画面内にある 「Configuration as Code」->「Documentation」 というメニューを開けば、あなたのインストールしているすべてのプラグインに対応したYAMLの書き方カタログが全自動で生成されます。困ったらまずそこを覗けば、答えのすべてが載っています。
「手動設定」というレガシーな呪縛を断ち切り、コードによる美しい自動化の世界へ。
今日からあなたのJenkinsライフを、もっとスマートで快適なものに変えていきましょう!