2020/11/18インフラCI/CDを学ぶ-その①
こんにちは、ライトウェルAnsibleチームの増田です。
今月から新たなテーマ「インフラCI/CD」でブログを書いていくことになりました。
引き続きよろしくお願いします。
そもそも、私は「インフラCI/CD」が何者なのかよくわかっていないのですが、
わからないなりにインフラCI/CDについて地道に調査と検証を進めていきたいと思います。
その軌跡をこのブログにまとめます。
さて、いろいろなサイトでインフラCI/CDが何者なのか調べてみたのですが、
いきなりインフラCI/CDについて語り始める前に
「Infrastructure as Code」についての話から入ったほうがいい気がしたので、
今回のブログは「Infrastructure as Code」から「インフラCI/CDとは?」という
概念的な部分についてまとめていきたいと思います。
Infrastructure as Codeとは?
Infrastructure as Codeは、その名の通りインフラをコード化することです。
インフラの管理をされているみなさん、こんなことってありませんか?
- 設定書に書かれている内容と、実機に設定されている内容が異なる
- 設定値が異なっているので、手順書通りに実行してうまくいかずその場で試行錯誤
- 設定書や手順書はそのままで更新されていない
- 設定書や手順書更新しても、作業する人がその通りにやるかどうかは別問題
- 構築した本人じゃないとわからないことが多々あり、作業は属人化
大事な大事なインフラなのにこんな感じで管理していて、いざ設定変更したら動かなくなった、業務影響発生!
なんてことを考えると、とても恐ろしいです。。。
インフラをコード化しておけば、先ほどのあるあるが解決されます。
- 設定書に書かれている内容と、実機に設定されている内容が異なる
- 設定値が異なっているので、手順書通りに実行してうまくいかずその場で試行錯誤
- 設定書や手順書はそのままで更新されていない
→ Gitなどでのソースコード管理をすれば、それが常に最新の設定書や手順書となる
- 設定書や手順書更新しても、作業する人がその通りにやるかどうかは別問題
- 構築した本人じゃないとわからないことが多々あり、作業は属人化
→ プログラムを実行するだけなので、誰が実行しても同じ環境ができあがる(属人化解消)
→ 機械実行なので時短、作業ミス減少により品質向上
というような感じで、「Infrastructure as Code」が注目・推進されてきている。というふうに私は理解しました。
そして「Infrastructure as Code」を実現するツールの1つがAnsibleということも、おさえていただければと思います!
インフラCICDとは?
まずはじめに、CI/CDとは「Continuous Integration/Continuous Delivery」の略称です。
日本語にすると、「継続的インテグレーション/継続的デリバリー」と言われます。
CI/CDはソフトウェア開発の手法の一つです。
Continuous Integration(継続的インテグレーション)
… ソースコード変更を共有リポジトリにマージすると、自動的に実行ファイル形式への変換(ビルド)及びテストが行われる
Continuous Delivery(継続的デリバリー)
… CIのフェーズ完了後、変更を自動的に本番環境に適用する
じゃあ、インフラCI/CDは何ナノ?というと、CI/CDの手法でインフラの管理を行うイメージです。
インフラをコードで管理し、構成変更等やパッチ適用などが必要になった際にする際に
CI/CDの手法で対応することとイメージしていただければいいのではないかと思います。
具体的な例でいうと
従来だと設定変更やパッチ適用が必要となった場合、事前の検証から本番環境への適用まですべて人が手作業で行っていました。
インフラCI/CDをとりいれると、そもそもインフラをコード化して管理しているので
設定変更やパッチ適用が必要になった場合は、まず元のコードを修正します。
そしてバージョン管理リポジトリにプッシュ。
そうすると、CIツールによって自動的に検証環境でテストが実行され、結果がフィードバックされます。
検証環境でのテストがOKだったら、本番環境にも適用できますね。
本番環境への適用のGOサインをだせば、本番環境への変更作業も自動で行われます。
なんとなく、インフラCI/CDの概念伝わりましたかね?
おわりに
今回のブログではインフラCI/CDの前提は、インフラがコードで管理されていることなのではないかと思い、
「Infrastructure as Code」と「インフラCI/CD」の概念についてまとめてみました。
インフラCI/CDについて具体的なイメージを掴んで理解するには、今回の説明だけだと難しいですよね…。
今後のブログではインフラCI/CDの検証環境構築や実際に触ってみての使用感等をまとめて行きたいと思います。(検証はCIの部分を主に行っていきます)
次回ブログは、インフラCI/CDの検証環境の概要についてまとめてみる予定です。
<参考サイト>
WINGSプロジェクト 阿佐 志保[著] / 山田 祥寛[監修],”コードによるインフラ構成管理はなぜ必要? 今さら聞けない「Infrastructure as Code」”,CodeZine,2014/11/28,https://codezine.jp/article/detail/8255(2020/11/12アクセス)
<参考文献>
中島 倫明・ 佐々木 健太郎・北山 晋吾・齊藤 秀喜・羽深 修(2018)『 インフラCI実践ガイド Ansible/GitLabを使ったインフラ改善サイクルの実現』株式会社 翔泳社