本記事は今日からIaCを始める人向け
ではなく、私が今日からIaCを学んでいくための日誌を付けていきます。
厳密で深い理解を最初からしようと思うと沼るので、初学者らしくざっくり理解で纏めていきます。
IaCとは
Infrastructure as Codeの略で、インフラをコードで管理する方法。
通常オンプレミスのサーバーとかは、ExcelでOSの種類やバージョン、IPアドレスなどなどを記録しており、何か変更があれば「第2.1版」みたいな感じで修正していく運用をしていました。
IaCではそういったものを全てコードで管理するので、最新のドキュメントの在処を探したり、デグレしまくってるドキュメントに振り回されなくて済みます。
しかも、コードといってもそんな複雑でもなく、key-value系の1つの設定項目に対して1つのパラメータで記載する、JSONやyamlっぽい記載方法なので比較的わかりやすいです。
<例>vnetを作るコードの一部抜粋
module vnetModule 'modules/vnet.bicep' = {
name: 'vnetDeployment'
params: {
location: location
vnetName: 'myVnet'
addressPrefix: '10.0.0.0/16'
}
}
IaCにするメリット
IaCで構築するメリットは色々書かれていますが、主に以下2つかと思います。
- 繰り返し同じリソースをデプロイするのを高速化できる
- コードで変更管理できるので、運用からドキュメントを省ける
コードを書く=パラメーターシートを作成する なので、構築作業を高速化できるということと、
運用保守業務において変更管理がしやすいということがメリットだと思いますが、
まだその恩恵を実感したことが無いので、私含め初学者には初期コストである学習コストが高く見えてしまいます。
IaCと合わせてよく出てくる言葉
DevOps
Development(開発)とOperations(運用)を統合して行い、効率化する手法
逆に、DevOpsじゃない状況というのは、開発チームと運用チームでメンバーが分かれており、開発したものを運用するというためのドキュメントやコミュニケーションなど、余計な作業が発生する状況。
ツールというよりも組織体制や運営プロセスの方針的な言葉だと理解しました。
CI/CD
継続的インテグレーション/継続的デリバリの略と言われてもなんのこっちゃですが、コードの変更から環境へのデプロイを自動化する手法のことらしいです。
CIはコードの変更を統合すること、CDは変更&統合したものを自動的にリリースすることを指すそうです。
Git
GitHubを使ったことがあるので、コードの変更を管理するもの(誰がいつ何を修正したかが分かるもの)だと認識していましたが、少しちがうようでした。
Gitとはファイルのバージョン管理をするもので、前のバージョンに戻したり、別のファイルを参照したりできます。
その一環で、ファイルのdiffを取って変更点が分かるのだと思います。
Gitと合わせて出てくる言葉でリポジトリというものがありますが、
これはファイルだったりプログラムだったり、何かしらを保管する場所のことらしいです。
ファイルサーバーとか?って思いましたが、どちらかというとファイルを保管する領域というより、保管している場所なのでファイルサーバーのIPアドレスとかが使われ方のイメージとして近いのかなと思ったりします。
あと、単純に保管するのではなくGitの利用に適して変更履歴とかいろんな情報を持つそうです。
IaCを実行するツール
Terraform:インフラの構成をソースコードとして管理できる
Ansible:サーバー内の操作(yumやらcpやら)をコードで管理できるツール
Bicep:Azureに特化したIaC記述ツール?言語? AWSならCloudFormationとかなのかなと思います。
今回はAzure × IaCということもあり、Bicepを中心に触っていこうと思います。
本日はここまでで、次回はBicepを使ってVM作ったりしてみます。



コメント