LoginSignup
16
17

More than 5 years have passed since last update.

AnsibleでVagrantのCentOSにミドルウェアを自動インストールする方法

Posted at

Ansibleを使えば、chefよりも簡単に自動でサーバー作ったり、デプロイしたり色々出来るよ
と言われても、自分で試してみないといまいちピンとこない。

今回は事前にMacのローカルにVagrantでCentOSを用意しておき、
Ansibleを使って、Vagrantへミドルウェアをインストールする所までやってみました。

Macにansibleをインストールする

ansibleをインストールする方法は、OSによって異なりますが
Macの場合はbrewでインストールするのが一番早いです。

$ brew update
$ brew install ansible

SSHの設定をする

まずはホストOS(Mac)からゲストOS(CentOS)へ
Ansibleのコマンドを実行出来るようにSSHの設定をします

  • Mac側の作業
vi ~/.ssh/config

以下を追記

Host [vagrantのIPアドレス]
IdentityFile ~/.vagrant.d/insecure_private_key
User vagrant

hostsファイルを用意する

AnsibleではInventoryという概念があります。

一言でいえば、Ansibleで操作する対象のことですね。

Inventoryでは、以下のようにグループとホストを設定することが出来ます。

[Group名]
ホスト名

グループの中にグループを入れ子にするなんてことも出来ます。

[Group:children]
ホスト名

今回はシンプルに1つのグループと1つのホスト名を指定することにします。

デフォルトだと、/etc/ansible/hostsの中身を確認してしまうので
今回はカレントディレクトリにhostsというファイルを用意して読み込むようにします。

vi hosts
[servers]
192.168.x.x

このような内容のファイルを作成したものとします。

VagrantのCentOSにpingを送ってみる

以下のコマンドは、

hostsファイルのserversグループのホストにpingを送るというコマンドです。

ansible -i hosts servers -m ping

-i は Inventoryファイルを任意に指定するオプション

hosts は Inventoryファイルの名前

servers は グループ名

-m は 任意のモジュールを指定するオプション

Ansibleには、モジュールという概念があり、

pingやyum,commandなど色々とあります。

これらを使って、実際の操作を行っていきます。

詳しくは公式サイトを見て下さい。
All Modules — Ansible Documentation
http://docs.ansible.com/list_of_all_modules.html

VagrantにNginxをインストールしてみる

さて、ここからが本番です。

前述した通り、Ansibleではモジュールを使って、
サーバーに対して色々と操作を行っていきます。

モジュールを実行する方法には、

  • コマンドから直接実行する方法
  • プレイブックを利用する方法

の2つがあります。

本格的にAnsibleを使う場合は、2番目のプレイブックを利用する必要があります。

プレイブックとは簡単にいえば、

「自分がAnsibleで実行したいタスクをまとめたもの」です。

これを実行することで、一発で開発環境を構築する!とかが出来ます。

とはいってもそこまでやるのは大変なので、
今回はCentOSにnginxをインストールするプレイブックを作ってみました。

---
- hosts: servers
  sudo: true
  user: vagrant
  tasks:
    - name: get nginx repo
      command: rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

    - name: install nginx
      yum: name=nginx state=latest

    - name: start nginx service
      service: name=nginx state=started
  • Nginxのリポジトリを追加
  • 最新版をyumでインストール
  • インストールが完了したらNginxをスタート

この3つをhostsファイルのserversグループのホストに対して実行するというプレイブックです。

プレイブックは、**.yamlという形式で保存します。

なので今回はnginx.yamlというファイルにしました。

実行は以下のコマンドで出来ます。

ansible-playbook -i hosts nginx.yaml

無事完了すると、指定したVagrant上のCentOSにNginxがインストールされているはずです。

今回は以上です。

次回はもう一つ、非常に重要な概念であるRoleについて書こうと思います!

16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17