MacのansibleからVMを構成管理(の準備)

表題の通り。前回はVagrantで起動したCentOSにインストールしたのだが、その時は『localhostに対して実行すれば良いか』と思っていた。しかし、playbookをGitHubで管理しようと思い立ったので、やはりローカルのMacでやりたい。Vagrantの共有フォルダでも良いがログインするのも面倒と言えば面倒なのでやめておく。

■ 環境

  • Ansible 1.9.2
  • Vagrant 1.7.4
  • Mac OSX (10.9.5)

■ Ansible

これは既にHomebrewでインストール済みであった。一応下記でアップグレード等を確認。

$ brew update
$ brew outdated

必要に応じてアップグレードしておく。

■ Vagrant

Vagrantで起動するVMは構成管理の対象のもの。作成しては破棄しての繰り返しなので、一旦自身が多用するCentOS 6.6でVMを作ることにする。

$ vagrant init chef/centos-6.6

また、VMには固定IPを割り振っておく。他のVMで固定IPは使用していないので、`vagrant init`で作成されたVagrantfileのネットワーク設定の箇所をコメントインしておくだけにした。IPは”192.168.33.10″である。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = "chef/centos-6.6"
  config.vm.network "private_network", ip: "192.168.33.10"
end

VMは起動しておく。

$ vagrant up

■ SSH

ローカルのMacからVMに対してSSHでパスワード無しでログイン可能としておく。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/withsin/.ssh/id_rsa): nonpass
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in nonpass.
Your public key has been saved in nonpass.pub.
  :
$

“~/.ssh/”ディレクトリに”nonpass”と”nonpass.pub“が生成されているはず。この”nonpass.pub“をVagrantで起動したVMに追記する。

[vagrant@localhost ~]$ vi ~/.ssh/authorized_keys

また、SSHのクライアント設定ではログインユーザを指定しなければ、コマンドを実行しているユーザでアクセスされるのでSSHのクライアント設定を変えておく。

記載内容は下記のようにした。”192.168.33.XX”のホストに対するSSHでは全て”nonpass“鍵でアクセスをし、その時のユーザは指定しなければ”vagrant“になるようにしている。

$ cat ~/.ssh/config
Host 192.168.33.*
    IdentityFile    ~/.ssh/nonpass
    User    vagrant

※ 2015/08/18: SSHの設定を少し変更

■ 疎通確認

Ansibleで疎通確認を行う。InventoryFileが必要なので”192.168.33.10″とだけ記載した”hosts”ファイルを同じディレクトリに用意している。

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

$

これで検証環境の準備が整った。

以上。

■ 関連