同じサーバーが作れない
ある市役所では、体育館や会議室の予約をウェブサイトで受け付けています。
サイトのサーバーは、以前の担当者が管理画面をクリックして作りました。その人は4月に異動しました。
台風の後、サーバーを作り直すことになりました。手順書は古く、同じ設定がどうしても作れません。このレッスンでは、これを防ぐ考え方を学びます。
このレッスンのゴール
メモ
サーバーの構成をファイルに書く理由を説明できる。
キーワード
| ことば | いみ |
|---|---|
| インフラ | アプリを動かす土台です。サーバーやネットワークなどです。 |
| IaC | インフラの構成をファイルに書いて管理するやり方です。 |
| 宣言型 | 手順ではなく、あるべき姿を書く書き方です。 |
| プラン | 今の姿をあるべき姿にするための、変更の予定です。 |
| 構成のずれ | ファイルの内容と、実際の姿が違うことです。 |
学生が入力するセルは、このプレビューでは空白です。
手作業は記録に残らない
管理画面をクリックして作ったサーバーは、何をしたかが残りません。覚えているのは、作った人だけです。
IaC では、サーバーの台数や大きさをファイルに書きます。道具がそのファイルを読んで、同じものを何度でも作ります。
ファイルは Git で管理します。誰が、いつ、何を変えたかが分かります。
手作業と IaC
| 手作業 | IaC | |
|---|---|---|
| 作り方 | 管理画面をクリック | ファイルを道具に読ませる |
| 記録 | 人の記憶と手順書 | ファイルと Git の履歴 |
| 同じものをもう一つ | 時間がかかり、違いが出る | 数分で同じものができる |
| 変更の確認 | 本人しか分からない | 同僚がレビューできる |
学生が入力するセルは、このプレビューでは空白です。
あるべき姿を書けば、道具が差を埋める
IaC の多くは宣言型です。「サーバーを1台足す」という手順は書きません。「Web サーバーは2台」というあるべき姿を書きます。
道具は今の姿を調べ、あるべき姿との差を計算します。この差がプランです。
次のブロックで、二つの一覧の差を出してみましょう。
あるべき姿と今の姿を比べる
mkdir -p yoyaku && cd yoyaku
# あるべき姿: ファイルに書いたサーバーの一覧
printf 'db-1\nweb-1\nweb-2\n' > desired.txt
# 今の姿: 実際に動いているサーバーの一覧
printf 'db-1\nold-batch\nweb-1\n' > current.txt
echo "作るもの:"
comm -23 desired.txt current.txt
echo "消すもの:"
comm -13 desired.txt current.txt
# 次に、current.txt を desired.txt と同じ中身にして、
# もう一度実行してください。何も表示されなくなります。
Terraform はよく使われる道具
IaC の道具で特に広く使われているのが、Terraform です。ファイルには、作りたいものの種類、台数、大きさを書きます。
terraform plan でプランを見て、terraform apply で実際に変えます。この練習環境では動かせないので、ファイルを読み、実際の出力を下に載せます。
Terraform のファイルを読む
mkdir -p yoyaku && cd yoyaku
cat > main.tf <<'END'
# 予約サイトの Web サーバーを2台
resource "aws_instance" "web" {
count = 2
ami = "ami-0a1b2c3d"
instance_type = "t3.small"
tags = {
Name = "yoyaku-web"
}
}
END
# 台数と大きさの行を探します
grep -E 'count|instance_type' main.tf
plan と apply の出力
$ terraform plan
# aws_instance.web[1] will be created
+ resource "aws_instance" "web" {
+ instance_type = "t3.small"
}
Plan: 1 to add, 0 to change, 0 to destroy.
$ terraform apply
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
$ terraform plan
No changes. Your infrastructure matches the configuration.よくある間違い
注意
同じファイルを二回使うと、サーバーが二倍になると思う人がいます。そうはなりません。道具は毎回、今の姿との差だけを変えます。すでにあるべき姿なら、二回目は「変更なし」で終わります。