windows7 32bit / Proxy環境下でVagrant＋Ansibleの環境を構築する。

# はじめに

* 社内勉強用の投稿です。
* 今どきwindows7 32bitでプロキシ環境下で作業している方へ送るansibleの環境構築手順です。
* Vagrantのインストール、Ansibleのインストールと動作確認を行う手順です。

# 想定する環境

* Windows7 32bit Proxy環境下

# VirtualBoxのインストール

ここからダウンロードしてインストールします。
[Oracle VirtualBox Download](http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp)

会社で利用しているマシン（Windows7 32bit)ではVagrantがうまく動きませんので
4.1.12をインストールします。
https://www.virtualbox.org/wiki/Download_Old_Builds_4_1_pre14

# Vagrantのインストール

ここからダウンロードしてインストールします。
https://www.vagrantup.com/downloads.html

## プロキシの設定

* Vagrantをプロキシ環境下で利用する場合には設定が必要です。PROXY_URLとPROXY_PORTは適宜変更してください。

```
set http_proxy=PROXY_URL:PROXY_PORT
set https_proxy=PROXY_URL:PROXY_PORT
```

## 仮想マシンのプロキシ設定

Vagrantproxyconfプラグインをインストールします。

このプラグインはVagrant管理下のOS起動時にプロキシを自動的に設定してくれるプラグインです。たとえばyum利用時にいちいちproxyの設定をする必要が無くなります。

```
vagrant plugin install vagrant-proxyconf
```

プラグインがインストールできたことを確認しましょう。

```
# vagrant plugin list
vagrant-proxyconf (1.5.0)
```

# Vagrantを使ってCentOSを2台起動します。

1.C:¥Vagrantディレクトリを作成します
2.以下の内容が記載されたVagrantfileというファイルを作成します。
   proxyを利用している環境では、PROXY_URL,PROXY_PORTは適宜変更してください。

```C:¥vagrant¥Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.define "ansible-host" do |node|
        node.vm.box = "chef/centos-6.5-i386"
        node.vm.hostname = "ansible-host"
        node.vm.network :private_network, ip: "192.168.1.10"
  end
  config.vm.define "ansible-target" do |node|
        node.vm.box = "chef/centos-6.5-i386"
        node.vm.hostname = "ansible-target"
        node.vm.network :private_network, ip: "192.168.1.20"
  end
  if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.http = "http://PROXY_URL:PROXY_PORT/"
    config.proxy.https = "http://PROXY_URL:PROXY_PORT/"
    config.proxy.no_proxy = "localhost,127.0.0.1,192.168."
  end
end
```

3.CentOSを起動します。

```
#vagrant up
```

4.しばらくするとansible-host(192.168.1.10),ansible-target(192.168.1.20)2つのhostが起動するはずです。下記の状態になっていることを確認します。

```
#vagrant status
Current machine status:

ansible-host running (virtualbox)
ansible-target running (virtual box)
```

5.ansible-hostとansible-targetにsshログインできることを確認します。

windows環境なのでteratermでログインします。

ユーザID:vagrant
パスワード:vagrant

# Ansibleをインストールします。

EPELからyumでインストールする方法とpipインストールの方法がありますが、ここではyumでインストールしてみたいと思います。

1.teratermでansible-hostにログイン
2.RH6(32bit)用のyumのepelリポジトリを追加します。
```
$ sudo yum localinstall http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
```

その他のOSの場合は下記を指定してください。

```
RedHat 6系 (32bit)
http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
RedHat 6系 (64bit)
http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
RedHat 7系 (64bit)
http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
```

3.ansibleをインストールします。

```
$ sudo yum install ansible
```

4.インストールできていることを確認します。

```
$ ansible --version
```

# ansibleを使ってansible-targetにコマンドが実行できることを確認します。

ansible-hostの秘密鍵をtargetに渡してsshログイン時にpw入力不要にします。

1.まずは鍵を作成します。何も入力せずにEnter連打で大丈夫です。

```
$ ssh-keygen -t rsa
```

2.秘密鍵をansible-targetにコピーします。

```
$ ssh-copy-id vagrant@192.168.1.20
```

3.ansible-targetにPWなしでログインできることを確認します。

```
$ ssh vagrant@192.168.1.20
```

ログインできることを確認したらログアウトして、ansible-hostに戻ります。

4.カレントディレクトリにhostsというファイルを作成します。
hostsファイルはインベントリファイルと呼ばれ、ansible対象のサーバの一覧を記載します。

```
192.168.1.20
```

5.ansible-hostからansible-targetにpingを打って結果が帰ってくれば動作確認完了です。

```
$ ansible -i hosts 192.168.1.20 -m ping
192.168.1.20 | success >> {
    "changed": false,
    "ping": "pong"
}
```