エンジニアレポート

Ansibleを導入する:後編

2020年03月23日

こんにちは。データスタジアムの菅です。
前回はAnsibleの導入の具体的な手順を書きましたが、今回はその導入作業に理解しておいたほうがよい概念や用語を解説します。

Ansibleの登場人物

Playbook

AnsibleではymlベースのPlaybookというファイルに自動化させたい作業の詳細を記載します。
今回の例では、
 - tasks/main.yml
 - handlers/main.yml
 - site.yml
という3つのPlaybookが登場しています。

tasks/main.ymlには、今回の作業の肝である、sshd_configの書き換え処理
handlers/main.ymlには、sshdの再起動処理
そしてマスターPlaybookであるsite.ymlには、どのホストに対してどの処理(role)を実行するかが記載されています。

ロール

ロールはPlaybookの一覧のタスク(tasks)、ハンドラ(handlers)、その他ファイルやテンプレートをまとめたものです。
今回の例にあるように、具体的な処理をロールとしてtaskとhandlerで定義して、マスターのPlaybookから呼び出すわけです。
ディレクトリで行くと
roles/testserver/ の下がロールですから、今回はtestserverというロールを準備した、と言うことができます。

インベントリ (inventories)

前述のロールが「何を実行するか」を定義しているものとすれば、インベントリは「誰に(何に)対して実行するか」
つまり、対象のホストに関する情報を管理するものになります。

今回の例では、inventories/test/hosts というファイルに情報を記載しました。

[client_node] testserver ansible_ssh_host=10.10.11.149

が、まさに対象ホストの情報ということになります。

Playbookの実行

上記のようにPlaybookやインベントリを準備して、ansible-playbookにパラメータとして与えられ、処理が実行されます。
毎回同じ処理を新規サーバに実行する場合は、対象のインベントリの情報だけ追加、変更してplaybookを実行すればよいわけです。
サーバの初期セットアップを一元管理できれば、開発サーバの準備が一瞬で終わります。

便利ですね!

ディレクトリ構造

今回は以下のようなディレクトリ構造になりました。

ディレクトリ構造は、AnsibleのPlaybookを管理する上で、結構重要だと思います。
ベストプラクティスとしてAnsibleの公式サイトに例があるので、そちらも参考にしてみて下さい。
https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html

まとめ

今回初めてAnsibleに挑戦しましたが、なかなかに便利!
突き詰めればいろいろなことができると思いますので、第2弾、第3弾とやっていきたいと思います。

乞うご期待!

参考資料

前編はこちらから

Ansibleを導入する:前編【データスタジアム/エンジニアレポート】

エンジニア募集中!

データスタジアムでは一緒に働いていただけるエンジニアを募集しています。野球、サッカー、バスケなどスポーツが好きな方であれば、とても面白い仕事ができる会社です。興味を持たれた方はぜひこちらをご覧ください。

エンジニアトップ エンジニアインタビュー エンジニアレポート

  • 採用情報
  • おしらせ
  • 掲載事例

ページトップヘ