Ansibleについての勉強メモ
2018年10月12日
Ansibleについての勉強メモです。
Ansibleとは
- レッドハットが開発した構成管理ツール
- サーバを立ち上げてのソフトウェアのインストールや設定をPlaybookと呼ばれる設定ファイルを作ることで、Playbookの内容に沿って自動で行える
- メリットとしては、複数のサーバを運用する場合、数が多くなればなるほど、サーバの設定を1つ1つ手動でやるのは時間がかかり、設定漏れの問題もある
- Ansibleをはじめとする構成管理ツールを使うことで、あらかじめ定められた手順に沿って一瞬でサーバ構築をすることができる。
どういうときに必要か
複数のサーバ環境を整える必要があり、手動でやると一つ一つ手間がかかって大変だし、設定漏れが出る可能性があるが、Ansibleを使うことで一瞬で設定して同じ状況を作ることができる。
設定漏れも防ぐことができる。
Chefとの違い
- ChefはRubyだがAnsibleはPython
- エージェントレス
- 記述がYAMLなので学習コストが低い(反面、複雑になると苦手)
Ansibleの利用手順の例
まず Vagrant + VirtualBox を導入
サーバを利用環境の中に立てる。
別に仮想環境でなくてもいいのだが、テストをするのに仮想サーバを使うと便利。
Vagrantの設定ファイルに仮想サーバの設定情報を記述する
Controller、targetの2つのサーバを作成
controllerのサーバにAnsibleを導入して、targetのサーバを操作する
OS情報、ネットワークIPアドレス、ポート番号などを記述
VagrantにOSテンプレートを追加
Vagrant up で設定ファイルに記述した仮想サーバを作成
controllerのサーバにyumでAnsibleをインストール
Ansibleの動作要件にはpythonが必要
Controllerのサーバからtargetへの疎通が必要なため、公開鍵を入れておく
Contorollerのサーバへログインし、inventoryファイルを設定。
これは、対象サーバのIPアドレスを記述する
Controllerから対象サーバへの疎通を確認する
Contorollerにyml形式でplaybookを作成する。
記述は独特の形式なので勉強が必要
記述例として、ホスト、ユーザ、実行するタスクを複数記述する
変数や配列は 別の group_vars/target.yml 内に記述することで記述を簡略化できる
ansible-playbookコマンドでplaybookの内容を実行
実行時に、inventoryの場所と、playbookを指定
Ansibleの便利な点
冪等性(べきとうせい)の担保
例えば同じplaybookを複数回実行した場合、実行対象のサーバに対してすでにPlaybookに記述された状態になっている場合、その状態を実行しない。
例えばcopyをplaybookに設定してある場合、上書き処理も実行しない。