WindowsマシンでVagrant使ってAnsible実験環境構築

## 環境
OS : Windows 7(母艦とよぶ)
VirtualBox :  4.3.10
Vagrant : 1.5.1

## vagrantで作成する環境
|OS  |名前|備考|
|----|----|----|
|Ubuntu 13.04 i386 |server |ansible入れてclientを弄る側|
|Ubuntu 13.04 i386 |client |弄られる側|


## ansibletestフォルダの作成
C:\vagrantVMs\ansibletest  
でやる

## 今持っているboxの確認
コマンドプロンプトで `vagrant box list`

## vagrant 設定ファイルの作成
コマンドプロンプトで `vagrant init <boxname>`
例）
`vagrant init Ubuntu-13.04-i386`

## 2台立ち上げるために vagrant 設定ファイルを修正

``` Vagrantfile.
      # serverという仮想サーバを定義
      config.vm.define :server do |server|
        server.vm.box = "Ubuntu-13.04-i386"
        server.vm.network :private_network, ip:"192.168.50.1"
      end

      # clientという仮想サーバを定義
      config.vm.define :client do |client|
        client.vm.box = "Ubuntu-13.04-i386"
        client.vm.network :private_network, ip:"192.168.50.2"
      end
```

## vagrant 起動
`vagrant up`

## 起動確認
`vagrant status`
>    server                    running (virtualbox)
>    client                    running (virtualbox)
>
>    This environment represents multiple VMs. The VMs are all listed
    above with their current state. For more information about a specific
    VM, run `vagrant status NAME`.

##  server から clientにssh接続できるようにする

母艦の
C:\Users\{ユーザ名}\.vagrant.d\insecure_private_key
を server の id_rsa として配置する

1. insecure_private_key を C:\vagrantVMs\ansibletest\tmp
にコピーして、serverから見れるようにする
1. ターミナルでserver(127.0.0.1:2222)に接続
1. ローカルの秘密鍵をserverの秘密鍵に設定  
`$ cp /vagrant/tmp/insecure_private_key ~/.ssh/id_rsa`
1. chmod 600 id_rsa

## server にログインして、sshしてclientに接続できることを確認する
`$ ssh 192.168.50.2`

## server にansible インストール
### proxy越えする場合
* 環境変数 .bashrc にproxy設定

    ```~/.bashrc
    export http_proxy="http://プロキシ名:ポート/"
    export https_proxy="http://プロキシ名:ポート/"
    export ftp_proxy="ftp://プロキシ名:ポート/"
    ```

* 再読み込み 
`$ source ~/.bashrc`

#### via Apt
* apt-get をproxy経由  
80proxyファイルを作成する  
`$ sudo vi /etc/apt/apt.conf.d/80proxy`

    ```/etc/apt/apt.conf.d/80proxy
        Acquire::http::proxy "http://プロキシ名:ポート/";
    ```

* add-apt-repositoryでProxy経由  
visudoで以下を追記

    `$ sudo visudo`

    ```
        Defaults env_keep="http_proxy"
        Defaults env_keep="https_proxy"
    ```

#### via Yum
* yum をproxy経由
    `sudo vi /etc/yum.conf` して以下追記

    ```/etc/yum.conf
    proxy=http://プロキシ名:ポート/
    ```

## ansibleインストール
### via apt
1. `$ sudo apt-add-repository ppa:rquillo/ansible`

1.  `$ sudo apt-get update`

1. `$ sudo apt-get install ansible`

### via yum
1. CentOS 外部レポジトリの追加(EPEL)
$ sudo rpm --httpproxy プロキシ名 --httpport ポート -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

1. `$ sudo yum install ansible`

## バージョン確認
`$ ansible --version`
> ansible 1.4.3

## ansible作業用ディレクトリを作成して移動
`$ mkdir ~/ansible && cd ~/ansible`

## インベントリリストとなるhostsファイル作成
`$ echo 192.168.50.2 > hosts`

## ansible動作確認
* コマンドの書式
    ansible -i <インベントリリストファイル> <対象> -m <モジュール名> -a <オプション>

    例) ping
    `$ ansible -i hosts 192.168.50.2 -m ping`
>    192.168.50.2 | success >> {
>        "changed": false,
>        "ping": "pong"
>    }
    
    例) uname -r
    `$ ansible -i hosts 192.168.50.2 -a  'uname -r'`
>    192.168.50.2 | success | rc=0 >>
>    3.8.0-35-generic

疎通確認まで完了

# その他コマンド
* モジュールのドキュメント確認  
`$ ansible-doc <モジュール名>`

# 参考
[ansible本家](http://www.ansible.com/home)
************************************************************
[構成管理ツール Ansible について](http://apatheia.info/blog/2013/04/06/about-ansible/)
[入門Ansible](http://www.slideshare.net/takushimizu/ansible-26200860)
[Chefがつらい人のためのAnsibleのはなし](http://yuuki.hatenablog.com/entry/2013/08/13/220330)
[構成管理ツール Ansible を使ってみる](http://d.hatena.ne.jp/akishin999/20130814/1376432403)
[Ansible Tutorial](http://yteraoka.github.io/ansible-tutorial/)
[ansibleを使ってみる](http://tdoc.info/blog/2013/04/20/ansible.html)
[WindowsでAnsibleする](http://ginzanomama.hatenablog.com/entry/2013/08/17/113006)
[windowsでもansibleがしたいのでvagrant経由でdockerを使って二重仮想環境を構築する](http://saisa.hateblo.jp/entry/2013/12/10/153651)
[Vagrant on Macで複数VM起動 + Ansible](http://open-groove.net/vagrant/mac-ansible-practice/)