クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

サーバーをファイルに書く

このレッスンのあとで: サーバーの構成をファイルに書く理由を説明できる。

50分のレッスンコマンドなし

同じサーバーが作れない

ある市役所では、体育館や会議室の予約をウェブサイトで受け付けています。

サイトのサーバーは、以前の担当者が管理画面をクリックして作りました。その人は4月に異動しました。

台風の後、サーバーを作り直すことになりました。手順書は古く、同じ設定がどうしても作れません。このレッスンでは、これを防ぐ考え方を学びます。

このレッスンのゴール

メモ

サーバーの構成をファイルに書く理由を説明できる。

キーワード

ことばいみ
インフラアプリを動かす土台です。サーバーやネットワークなどです。
IaCインフラの構成をファイルに書いて管理するやり方です。
宣言型手順ではなく、あるべき姿を書く書き方です。
プラン今の姿をあるべき姿にするための、変更の予定です。
構成のずれファイルの内容と、実際の姿が違うことです。

学生が入力するセルは、このプレビューでは空白です。

手作業は記録に残らない

管理画面をクリックして作ったサーバーは、何をしたかが残りません。覚えているのは、作った人だけです。

IaC では、サーバーの台数や大きさをファイルに書きます。道具がそのファイルを読んで、同じものを何度でも作ります。

ファイルは Git で管理します。誰が、いつ、何を変えたかが分かります。

手作業と IaC

手作業IaC
作り方管理画面をクリックファイルを道具に読ませる
記録人の記憶と手順書ファイルと Git の履歴
同じものをもう一つ時間がかかり、違いが出る数分で同じものができる
変更の確認本人しか分からない同僚がレビューできる

学生が入力するセルは、このプレビューでは空白です。

あるべき姿を書けば、道具が差を埋める

IaC の多くは宣言型です。「サーバーを1台足す」という手順は書きません。「Web サーバーは2台」というあるべき姿を書きます。

道具は今の姿を調べ、あるべき姿との差を計算します。この差がプランです。

次のブロックで、二つの一覧の差を出してみましょう。

あるべき姿と今の姿を比べる

コード: bash
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 のファイルを読む

コード: bash
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 の出力

コード: bash
$ 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.

よくある間違い

注意

同じファイルを二回使うと、サーバーが二倍になると思う人がいます。そうはなりません。道具は毎回、今の姿との差だけを変えます。すでにあるべき姿なら、二回目は「変更なし」で終わります。

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。