十台のパソコンを同じにする
学校のパソコン室に、新しいパソコンが十台届きました。全部に同じソフトを入れて、同じ設定にしなければなりません。
手で一台ずつやると、一台目と十台目で微妙に違ってしまいます。手順を文章に書いておき、機械に実行させれば、毎回同じになります。
このレッスンのゴール
メモ
手順書の計画を読んで、何度実行しても同じ結果になるかを判断できる。
重要な言葉
| ことば | いみ | れい |
|---|---|---|
| プレイブック | マシンをどうしたいかを書いた手順書 | |
| タスク | 手順書の中の、仕事一つ分 | パッケージを入れる |
| モジュール | 決まった仕事をする、部品になった命令 | package |
| 冪等 | 何度実行しても、結果が同じになる性質 | |
| テンプレート | 変数を後で差し込む、ひな形のファイル |
学生が入力するセルは、このプレビューでは空白です。
やり方ではなく、あるべき姿を書く
手順書には「こうしなさい」ではなく、「こうなっていてほしい」と書きます。たとえば「tree というソフトが入っている」です。
すでに入っていれば、何もしません。入っていなければ、入れます。だから、同じ手順書を何度流しても安全です。
例:手順書を表で読む
| 順番 | タスクの名前 | モジュール | あるべき姿 |
|---|---|---|---|
| 1 | 挨拶を表示する | debug | メッセージを一行出す |
| 2 | tree を入れる | package | tree が入っている |
| 3 | 案内文を作る | template | 決めた場所に、ひな形から作ったファイルがある |
学生が入力するセルは、このプレビューでは空白です。
Ansibleの版を見る
ansible --version | head -1ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
このマシンに話しかける
cd ~/ansible-lab && ansible all -m pingここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
二回目は何も変えない
手順書を流すと、最後に結果の要約が出ます。変えたタスクの数は changed、すでに目的の状態だったものは ok です。
一回目は changed が増えます。二回目で changed=0 なら、手順書は冪等です。二回目にも変わるなら、毎回何かを書き換えている印です。
例:二回流したときの要約
| 回 | ok | changed | 読み取れること |
|---|---|---|---|
| 一回目 | 1 | 2 | 二つ変えて、目的の姿になった |
| 二回目 | 3 | 0 | 何も変えていない。冪等で良い |
| 二回目(悪い例) | 2 | 1 | 毎回何かを書き換えている |
学生が入力するセルは、このプレビューでは空白です。
変えずに様子を見る
cd ~/ansible-lab && ansible-playbook site.yml --checkここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
shell で命令を並べれば、手順書と同じだと思いがちです。shell はいつも「実行した」ことにしかならず、すでに目的の状態かを確かめません。決まったモジュールを使えば、確かめてから動きます。
変数でひな形を埋める
店ごとに名前だけが違う案内文を作るときは、テンプレートを使います。ひな形の中に {{ site_name }} と書いておくと、変数の値がそこへ入ります。
変数を変えるだけで、同じ手順書から、別の店の案内文ができます。
例:同じひな形、別の店
| 変数 site_name | できる案内文 |
|---|---|
| 駅前店 | ようこそ、駅前店へ |
| みなと店 | ようこそ、みなと店へ |
学生が入力するセルは、このプレビューでは空白です。
さらに挑戦:消す手順書
「tree が入っていない」という、あるべき姿も書けます。この手順書を流すと、入っていれば消し、入っていなければ何もしません。
この手順書は冪等ですか。理由を一文で書きましょう。