Chef や Puppet で有名な設定管理ツールの中で、学習コストが少ないと評判のAnsibleについて、導入手順をまとめました。

1. インストール

Ansible ではエージェント(管理される側に導入するソフト)が不要のため、管理元となるコンピュータにインストールを行います。

ここでは、Mac OS Xを利用しています。

 * Linuxのようにyumが使えないため、brew をインストールする必要が有ります。

でインストールを行い、brew doctor で正常にインストールが完了したことを確認した上で、以下の作業を続けてください。

以下のコマンドでAnsibleのインストールを行います。

$ brew install ansible

==> Installing ansible dependency: libyaml

==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/libyaml-0.1

######################################################################## 100.0%

==> Pouring libyaml-0.1.6.mavericks.bottle.tar.gz

  /usr/local/Cellar/libyaml/0.1.6: 7 files, 348K

==> Installing ansible

==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/ansible-1.7

######################################################################## 100.0%

==> Pouring ansible-1.7.1.mavericks.bottle.tar.gz

==> Caveats

If you need Python to find the installed site-packages:

  mkdir -p ~/Library/Python/2.7/lib/python/site-packages

  echo ‘/usr/local/lib/python2.7/site-packages’ > ~/Library/Python/2.7/lib/python/site-packages/homebrew.pth

==> Summary

 /usr/local/Cellar/ansible/1.7.1: 613 files, 7.1M

2. 初期設定

目標は以下のコマンドを実行することです。

初期状態では、管理対象として登録されているサーバがないため接続できません。ansibleコマンドを実行すると以下のようなエラーが発生します。

ERROR: Unable to find an inventory file, specify one with -i ?

$ mkdir /usr/local/etc/ansible/  # 設定ファイル置き場所の作成

$ cd /usr/local/etc/ansible

$ echo ‘foo.jp’ > hosts                     # foo.jpを接続先に追加

[tip] sshpass のインストール

Mac OS利用時にここまでの状態で目標のコマンドを実行すると、以下のエラーが発生します。

FAILED => to use the ‘ssh’ connection type with passwords, you must install the sshpass program

$ curl -O -L http://downloads.sourceforge.net/project/sshpass/sshpass/1.05/sshpass-1.05.tar.gz  #

sshpassを取得

$ tar xvzf sshpass-1.05.tar.gz   # 解凍

$ cd sshpass-1.05

$ ./configure

$ make

$ sudo make install

[tip] 公開鍵認証の設定

Mac OS利用時にここまでの状態で目標のコマンドを実行すると、以下のエラーが発生します。

FAILED => Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host’s fingerprint to your known_hosts file to manage this host.

別途作成した公開鍵認証の方法を参照して設定を行ってください。

ここまでで大方必要な設定は完了です。

[tip] python パスの設定

Ansible では管理先サーバにpythonがインストールされている必要があります。

初期状態では、/usr/bin/python にpythonがインストールされていることを前提として動くため、インストール先が異なる場合は以下のようなエラーが発生します。

FAILED >> {

    “failed”: true,

    “msg”: “/usr/bin/python: not found\r\n”,

    “parsed”: false

}

対処法は公式のFAQに記載されていましたが、2. 初期設定で作成したhostsファイルの中に設定を追加するだけで解決できます。

$ cat hosts

foo.jp ansible_python_interpreter=/usr/local/bin/python

このように、hostsファイルに変数ansible_python_interpreterを追加し、pythonが存在するパスを指定します。

$ ssh-agent bash  # 公開鍵認証を利用する

$ ansible foo.jp -m ping -u myname –ask-pass # foo.jp/myname はsshで接続するホスト名/ユーザ名

SSH password:    # ssh 接続先のパスワード

sudo password [defaults to SSH password]:

foo.jp | success >> {

    “changed”: false,

    “ping”: “pong”

}

これで接続完了です。

2 thoughts on “Ansibleの導入

Leave a Reply

Your email address will not be published. Required fields are marked *