ansibleでWebサーバをインストール

ansibleを使ってみるのは簡単です。ローカルマシンへのインストールもYAMLファイルで記録しておけば再構築も簡単にできるようになります。

シンプルな例として、Webサーバをインストールしてみましょう。

インストール
まずは、ansibleをインストールします。CentOS7の場合は、下記のようにEPELリポジトリを追加してインストールするスクリプト install_ansible.sh をまずは用意します。

#!/bin/sh
curl http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm -O epel-release-7-5.noarch.rpm

rpm -ivh epel-release-7-5.noarch.rpm
yum install -y python-devel python-crypto python-pip python-tools sshpass gcc
pip install ansible

実行します。

$ sudo sh install_ansible.sh

ちなみに、Ubuntuなら下記のとおり。

$ sudo apt-get install python-dev
$ sudo pip install ansible

コマンドの確認
インストールしたら、動作確認をしましょう。

$ ansible --version
ansible 1.9.1
  configured module search path = None
$ ansible-playbook --version
ansible-playbook 1.9.1
  configured module search path = None

Inventoryの作成
対象となるマシンを一覧にします。 /etc/ansible/hosts へ記載するか、次のように環境変数へファイル名を指定するかします。ここでは$HOME/workspace/ansible/etc/hostsというファイルを用意したとしています。

$ export ANSBLE_HOSTS=$HOME/workspace/ansible/etc/hosts

web.ymlファイルの作成
Webサーバをインストールするためにweb.ymlファイルを作成します。次の例ではyumモジュールを使っているのでCentOS7で動作確認をしました。aptモジュールもあるので、Ubuntuではそちらを使うと良いでしょう。hosts: 127.0.0.1、connection: local と指定するとローカルホストを対象にして実行します。

- hosts: 127.0.0.1
  connection: local
  vars:
    http_port: 80
    max_clients: 100
  tasks:
  - name: ensure apache is at the latest version
    yum: pkg=httpd state=latest
  - name: ensure apache is running (and enable it at boot)
    service: name=httpd state=started enabled=yes
  handlers:
    - name: restart apache
      service: name=httpd state=restarted

実行するには次のようにします。これで、apacheがインストールされて起動されます。

$ ansible-playbook web.yml

yumコマンドでインストールするよりも面倒なので、導入をするのは少し面倒な感じもありますが、playbookの資産が増えてくると、何かと便利になりそうです。scriptモジュールやshellモジュールもあるので、インストールスクリプトがあるなら、それを実行するように指定して完了ということもできます。

簡単ですね。

同じタグの記事: Ansible
同じタグの記事: Linux
同じカテゴリの記事: Linux