Ansibleとは?
Red Hat社が、サポートを行なっていて、オープンソースプロジェクトで開発されているPython製の構成管理ツール(※1)です。
YAML形式で書かれた設定ファイルに従って、サーバやネットワーク機器などの設定を自動的に実行できます。
他にも、アプリケーションのデプロイやオーケストレーション(※2)などにも利用できます。
##メリット
-
Chef等他の構成管理ツールでは、独自記述言語を採用しているため学習コストが高いが、AnsibleではYAMLを使用しているので導入が容易。
-
モジュール(※3)による拡張がしやすい。利用できるモジュールは公式サイトで確認できる
-
既存の資産(シェルスクリプト)も流用できるので、スモールスタート(※4)できる。
##デメリット
- 他の構成管理ツールと比較すると、複雑な処理を表現しにくいという面があり、「多段の条件分岐」「反復構造」を記述する場合には、複雑な表記になりやすい。
##Ansible導入手順
0.もし上手くいかない場合は公式を確認する。
1.以下のコマンドを実行します。
$ brew install ansible
2.インストール後、ansibleコマンドで動作確認します。
以下の場合、-mでモジュールを指定し、-aでモジュールのパラメータを指定しています。
※初回はインベントリファイルがないと警告が出ますが無視しても良い
$ ansible localhost -m shell -a 'hostname'
3.以下のコマンドを実行し、インベントリファイルを作成する。
$ sudo mkdir /etc/ansible/
$ cd /etc/ansible/
4.インベントリファイルを記述する。
[文字列]でグループを定義し、その下に管理対象のホストをIPアドレスかホスト名で記述し、その後ろにオプションを記述します。
$ sudo vi hosts
#=>
[localhost]
127.0.0.1 ansible_connection=local
[web]
192.168.N.N
5.playbookを作成する。
詳しくはこちらを参照してください。
※YAML形式で記述するため、インデントに注意する。
$ sudo vi playbook.yml
- hosts: <対象とするホスト/グループ>
var:
<変数名1>: <値>
<変数名2>: <値>
:
:
remote_user: <処理を実行するユーザー名>
sudo: yes
tasks:
<タスク1>
<タスク2>
:
:
handlers:
<ハンドラ1>
<ハンドラ2>
:
:
6.ansible-playbookコマンドを実行します。
-iでインベントリを記述したファイルを指定し、-uでユーザ、-kでコマンド実行時にパスワード入力プロンプトを起動します。
$ ansible-playbook -i hosts -u root -k playbook.yml
##わからない単語一覧
※1 構成管理ツール
サーバとかソフトウェアとか何らかの構成を構築したり管理するのを代わりにやってくれたり、あるいは人がやるのを補助してくれるソフトウェアのこと。
※2 オーケストレーション
コンピュータシステム、アプリケーション、およびサービスにおける、設定、管理、調整の自動化の事。
※3 モジュール
直訳は「部品」という意味で、他のものと合わせて使うもののこと。
※4 スモールスタート
新たな事業を立ち上げる際に、最初は機能やサービスを限定するなどして小規模に展開し、需要の増大などに応じて順次規模を拡大させていくこと。
##参考
Ansibleに挑戦してみた(Ansible超入門)
Ansibleでできることを中の人が教えます - インストールと実行〜EC2へのNginx投入までを学ぼう