JenkinsによるLinuxサーバの設定変更管理yggdrasilの運用事例
JenkinsによるLinuxサーバの設定変更管理yggdrasilの運用事例を@tkusukawaさんが公開されていたのでメモ。
【元ネタ】
JenkinsによるLinuxサーバの設定変更管理(yggdrasil)の徹底 - Qiita [キータ]
Home ・ tkusukawa/yggdrasil Wiki ・ GitHub
ALMiniumによる yggdrasilサーバの構築: くすろぐ
【1】JenkinsによるLinuxサーバの設定変更管理(yggdrasil)の徹底 - Qiita [キータ]の記事がとてもよくまとまっているので、分かりやすい。
yggdrasilとは、Linuxサーバの設定ファイルをSVNでバージョン管理するためのコマンド(SVNのラッパー)。
Apacheの設定ファイルhttpd.confをSVN管理したい時、.svnなどの余分なファイルができてしまうので、yggdrasil サーバーに設定ファイルを同期した後に、SVNリポジトリへコミットする。
ygg check コマンドを使えば、対象サーバーとSVNリポジトリの設定ファイルのDiffを確認できる。
そのコマンドをJenkinsで定期的に動かし、差分が発生したら、メールで通知する仕組みを説明している。
本番サーバーの環境構築で嫌な問題は、設定ファイルが開発サーバーと違うために、ファイル名に日付を入れてバックアップしがちでゴミファイルが増えてしまうこと。
更には、どの設定ファイルが正しく動いていたのか分からなくなるために、サーバーのリプレース作業でゴミファイルを削除した後に必ず本番障害が発生しやすい問題もある。
yggdrasilの開発や導入は、その問題意識を持っている状況から生まれたようだ。
(引用開始)
【問題は概ね変更の中にある】
サーバの設定変更の問題が月日が経ってから発覚した、という経験はないでしょうか?
例えば、HDDの残量低下のアラートを受けてトレンドを確認したところ一ヶ月以上前に突然増加し始めていた、というような問題です。
ソフトウェア開発でバージョン管理システムを使っていると、試行錯誤した場合でも、どの部分をどう変えたのかを全て差分確認し、修正してみたけど結局は修正する必要が無かった箇所や、デバック用に入れたコードの戻し忘れをコミット前にきっちりチェックすることが出来ますよね。
サーバ設定の試行錯誤でも同様の手法が使えたら素晴らしいと思いませんか?
これを実現するのが yggdrasil になります。
全ての設定ファイルがSVNの リポジトリに反映されていれば 、設定ファイルの変更箇所を漏らさず確認することが出来ます。
意図しない設定変更は事故の元です。
明示的にコミット操作を要求することで変更に対する責任を明確にし、意図していない設定変更が混入することを回避できることになります。
(引用修了)
JenkinsによるLinuxサーバの設定変更管理(yggdrasil)の徹底 - Qiita [キータ]では、異常を見張って正常性を維持してくれる有能な執事:Jenkinsを使うことで、本番サーバーとSVNリポジトリの設定ファイルを同期するようにチェックする運用を強いる。
【2】「問題は概ね変更の中にある」という言葉はとても意味深い。
IT技術の本質は、常に変更が発生する点にある。
変更が必ず発生するという前提条件の元で、変更したがために、あるべき姿から少しずつ離れて、ある限界を超えると障害となって初めて現れる。
バージョンアップしないシステムやソフトウェアは、死んだ状態に等しい。
昨今は、ハードウェアやサーバーの性能向上、WindowsOSのバージョンアップが激しいため、3年おきにシステムリプレースないしハードウェアリプレースという無駄な作業が発生しがち。
その時に、過去に動いたシステムは変えずにハードウェアだけそのまま移行する(リホスト)はとても簡単な作業に思えるが、実際は、設定ファイルのゴミ掃除があったり、JavaやOracle、MySQLなどのミドルウェアのVerUpのために、プログラムのリコンパイルが発生したりする。
すると、システムの回帰テストの作業工数が発生し、うまく動かない機能が必ず出てくる。
例えば、昨今は、Windows7以降はIE11がデフォルトになってしまったために、クライアントアプリが正常表示しなかったり、正常動作しないケースがある。
こういう保守作業は、SIやベンダーにとってもあまりお金にならないし、ユーザも安定稼働するために無駄なお金を使うので、正直嫌なものだ。
いわゆるレガシーマイグレーションの落とし穴については以前書いた。
レガシーマイグレーションという名のシステム移行はデスマーチになりやすい: プログラマの思索
システム移行の概念として、リビルド・リライト・リホスト・ラッピングの違いは抑えておくべき。
【3】サーバーの設定ファイルもバージョン管理しようという発想は、昨今のDevOpsで叫ばれている「Infrastructure as Code」にもつながる話だろう。
下記のBlogの内容が素晴らしい。
Infrastructure as Code - naoyaのはてなダイアリー
従来は、環境構築の手順書をExcelやVisioなどで作り、有識者でレビューした後に、環境を作り、構築テストを行なっていた。
だから、実際に作った後に初めて分かる障害も多かった。
でも、Chefのようなツールを使って、環境構築の手順そのものをプログラム化してしまえば、いつでも誰でも環境を再現できるようになる。
そして、環境構築プログラムそのものをコードレビューできるし、GitHubに入れて、Pull Requestを受け付けるようにすれば、複数人でテストしたソースをマージすることもできるようになる。
さらには、テスト自動化と継続的インテグレーションも入れれば、環境構築そのものもプログラミングと同じく、アジャイルに開発できる。
サーバー構築を構成管理とTDDで作業する時代になってきた: プログラマの思索
今後、DevOpsやクラウドは環境構築で必須の概念になるにつれて、クラウドデザインパターンというインフラ方式設計のベストプラクティス集も必要な知識になるだろうと思う。
クラウドデザインパターン~インフラ方式設計のベストプラクティス集: プログラマの思索
今後も考えてみる。
| 固定リンク
「Redmine」カテゴリの記事
- Redmineは組織のナレッジ基盤として実現可能なのか~島津製作所の事例を読み解く #redmineT(2024.12.29)
- 「RedmineのUbuntu+Docker構築への移行」の感想 #redmineT(2024.11.24)
- 第27回redmine.tokyo勉強会の感想 #redmineT(2024.11.10)
- Redmineのバージョン設定でプロジェクトの設定方法が違う(2024.06.23)
- ウクライナのRedmine開発者が作ったRedmineテーマやプラグイン(2024.06.18)
「構成管理・Git」カテゴリの記事
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
「Agile」カテゴリの記事
- チームトポロジーの感想~大規模アジャイル開発でも組織構造は大きく変化する(2025.01.01)
- 「世界一流エンジニアの思考法」の感想(2024.12.08)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
「パターン言語」カテゴリの記事
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- パターンカタログよりもモンスターカタログの方が面白いね #jasstkansai(2023.06.24)
- XPエクストリームプログラミングは偉大だ~時代がその設計思想に追いついた(2022.11.16)
- 「大人の学びパターン・ランゲージ」の感想~知識と経験を行ったり来たりするタイミングを大切にする(2022.06.05)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
「Jenkins」カテゴリの記事
- 第12回東京Redmine勉強会の感想 #redmineT(2017.05.14)
- 技術的負い目の記事がすごい(2016.01.03)
- RedmineとGitLabを連携すると、RedmineをGitHub化できるか(2014.10.17)
- 「チーム開発実践入門」が発売されている(2014.04.08)
- 最近、ツールとプロセスを組合わせたソフトウェア開発手法の本が増えている(2014.04.03)
コメント