はじめに
こんにちは。yunoです。
私はインフラエンジニアとして働く中で、Ansibleを使う業務に関わることになりました。
ただ、当時はAnsibleについてほとんど知識がなく、
- Inventory
- Playbook
- YAML
- 変数
- Jinja2
- 冪等性
といった言葉を一つずつ覚えるところからのスタートでした。
最初は本を読んで勉強していましたが、読んでいるだけではなかなか理解できず、
「実際にLinuxサーバを用意して、自分で動かした方が分かりやすいのでは?」
と思うようになりました。
そこで、自宅環境に複数台のLinuxサーバを作り、Ansibleで管理する検証環境を構築しました。
この記事では、
- なぜAnsibleを学び始めたのか
- どんな検証環境を作ったのか
- これから何を試していくのか
をまとめます。
Ansibleを学び始めた理由
業務でAnsibleを扱うことになったことがきっかけでした。
ただ、実際に勉強を始めてみると、
Inventory
Playbook
YAML
変数
Jinja2
冪等性
など、初めて見る言葉が多くありました。
本を読んで、
「なんとなく意味は分かる」
状態にはなりましたが、
「実際にどのように使うのか」
まではなかなかイメージできませんでした。
そこで、読むだけではなく、
自分で環境を作る
↓
実際にコマンドを実行する
↓
失敗する
↓
原因を調べる
↓
修正する
↓
もう一度実行する
という形で学ぶことにしました。
自宅に検証環境を作る
今回作ったのが、
RestaurantOps Automation Lab
という検証環境です。
想定としては、
- controller
- 東京店
- 横浜店
- 大宮店
という4台構成です。
controller
│
┌─────────┼─────────┐
│ │ │
▼ ▼ ▼
tokyo yokohama omiya
controllerから、3台のLinuxサーバをAnsibleで管理します。
まずは複数台へ接続する
最初に行うのは、3台のLinuxサーバへAnsibleから接続できる状態を作ることです。
イメージとしては、
controller
↓
Ansible
↓
tokyo
yokohama
omiya
という形です。
ここまでできれば、
- 3台へまとめて接続確認
- 3台の状態確認
- 同じ処理をまとめて実行
といったことができるようになります。
手作業だとどうなるか
例えば3台のLinuxサーバの状態を確認するとします。
Ansibleを使わない場合は、
tokyoへSSH
↓
状態確認
yokohamaへSSH
↓
状態確認
omiyaへSSH
↓
状態確認
と、同じような作業を3回行うことになります。
3台程度ならまだ対応できます。
ただ、これが10台、50台、100台となると、同じ作業を繰り返す負担が大きくなります。
そこで、
「複数台へ同じ処理をまとめて実行できないか」
というところでAnsibleを使います。
この環境で試していくこと
この検証環境では、今後次のような内容を試していきます。
接続確認
↓
状態確認
↓
日次点検
↓
nginx構築
↓
店舗ごとのWebページ生成
↓
障害検知
↓
復旧
↓
バックアップ
↓
ユーザー管理
最初からすべてを自動化するのではなく、
手作業で理解する
↓
同じ作業を繰り返す
↓
面倒な部分を自動化する
という流れで進めています。
失敗もそのまま残す
今回の検証では、成功した結果だけを記録するつもりはありません。
実際に進めていくと、
- SSH接続できない
- Inventoryの指定を間違える
- 変数が読み込まれない
- Playbookが途中で失敗する
といった問題も発生します。
そのときに、
何が起きたのか
↓
どこまで正常なのか
↓
原因は何か
↓
どう修正したか
↓
本当に直ったか
まで確認することを大切にしています。
自分自身、成功したコマンドだけを見るよりも、
「なぜ失敗したのか」
を調べたときの方が理解が深まりました。
まとめ
今回は、Ansibleを学び始めた理由と、自宅に作った検証環境についてまとめました。
これから、
Linuxサーバを複数台管理する
↓
同じ作業をまとめて実行する
↓
障害を再現する
↓
原因を調べる
↓
復旧する
という形で、少しずつ実践的な検証を進めていきます。
特に、
実際に手を動かして、失敗して、調べて、修正する
ところまで残していきたいと思っています。
関連記事
この検証の全体像や、環境構築から3台管理・日次点検までの詳しい手順はnoteにもまとめています。
また、実際の検証途中の気づきや失敗はXでも発信しています。