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について書こうと思います!