黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

構成管理ツール「Ansible」入門 (1日目)~基本的な使い方編~

先週までDockerの超基本をお勉強していましたが、予定通り今週から構成管理ツールであるAnsibleについてお勉強をしております。
詰め込んでもすぐに抜け落ちてしまう残念な頭の持ち主である私のためにも、少しずつ書いていきます。

前提

  • 使用ディストリビューション
    • CentOS6.5
  • Ansibleバージョン
    • ansible 1.6.6
  • 構成
    • 管理ホスト : node1 (192.168.10.100/24)
    • 対象ホスト : node2 (192.168.10.101/24)
    • 対象ホスト : node3 (192.168.10.102/24)

Win機のVMware PlayerにESXi5.5をインストールし、上記仮想マシンを作成しています。
(NATだと別の端末からssh接続できなかったので、ブリッジにしています…)

   

構成管理ツールとは何か

先日まで記事を書いていたDockerなどの登場や、クラウドの盛り上がりなども相まって、管理対象となるサーバの台数は増しています。
ものの数分で新規サーバを立ち上げたり、不要になったサーバをゴミ箱にinしたりする時代ですので、管理者の負担は大きくなっています。たぶん。

そんな中、新規作成したサーバに適切なソフトウェアをインストールしたり、各種設定ファイルの維持管理を行ったり、複数のサーバに任意のコマンドを実行できる素晴らしいツールが登場しました。
それが構成管理ツールです。

Ruby製のChefやPython製のAnsibleがそれらの例としてあげることができます。

他の構成管理ツールと比べた場合、Ansibleの利点としては以下のようなものがあるようです。
* 学習コストの低さ
* Pythonで作製されていながら、他言語でのモジュール開発が可能。
* 正直sshでなんとかなる。

本ブログでは、少しの間Ansibleを使って勉強した結果や成果をアウトプットしていきたいと思います。

 

Ansibleの導入

AnsibleはChefなどと異なり、対象ホスト側に導入するものはありません。
ただし、Python2.6以上?が最低限入っている必要があります。

管理ホスト側にはAnsibleを導入する必要がありますので、以下。

# yum -y install ansible

以上で、ansibleコマンドやansible-playbookコマンドが使用可能となります。

 

とりあえず使ってみる

Ansibleは管理ホストと対象ホスト間の通信にsshを使用します。
事前にssh接続ができるか確認しましょう。

ではさっそく使ってみます。
Ansibleはinventoryファイルに記載されているホストしか対象にしません。
管理ホストの/etc/ansible/hostsファイルに以下のように記述しましょう。

# vi /etc/ansible/hosts

[test]
192.168.10.101
192.168.10.102

記述できましたら、とりあえず使ってみます。

# ansible all -m command -a "uname -n"

各対象ホストのホスト名が得られるはずですが、何やら権限不足的なエラーメッセージが表示されるかもしれません。
その際は-kオプションなどをつけて、公開鍵認証を使用せずにやってみてください。
私は公開鍵の設定してなかったのでうまくいかなかったです…

 

Playbookを書いてみよう

ansibleコマンドで対象ホスト上でコマンド実行してみましたが、基本的にはplaybookを使用します。
playbookの記述はYAMLで行います。簡単な例をあげてみます。

# vi test.yml
---
 - hosts: all
   tasks:
    - ping:

上記はinventoryファイルに記載されている対象ホストに対してpingを実行するplaybookになっています。

作成できたら、実行してみます。

# ansible-playbook test.yml

ちゃんとpongと返事があると思います。

基本的なところをごちゃごちゃと書きましたが、ちゃんと使えたでしょうか。
私はなかなかうまくいかなくて大変な感じでしたが、なんとか新規サーバのssh接続環境を整えるplaybookを作成できました。
playbookのBest Practiceを見ながらディレクトリ構成とか考えてます…
次回、そのあたり書ければなーと思います。

参考にした記事

不思議の国のAnsible – 第1話 – DSS Tech Blog