技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Mac で ansible 基礎設定やってみた。

Ansible のことをちまちまやったので、その件メモ。
ネカフェでやってるんだけど、近くのネカフェは速度が遅すぎてこれ以上はちょっと厳しかった。

Install

と言ってもこれだけ。

$ brew install ansible

ちなみにバージョンは

$ ansible --version
ansible 1.9.2
  configured module search path = None

OSS でよくある話だけど、後方互換ってなくなるから…

セットアップ先環境

テストだから Vagrant で環境作った。
自分の環境は 1.7.1 で、バージョンアップしたらコマンド変わってるかもわからん。
あと、VirtualBox4.3.30 とちょっと古め。新しいやつ推奨かな。
環境もかなり適当に Cent6 を A list of base boxes for Vagrant - Vagrantbox.es から拾ってきた。

vagrant box add cent6.6 [https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box]
vagrant init centos6.6

成功したら、Vagrantfile というファイルが出来上がるので、ssh 用の設定を追加。

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # config.vm.network "forwarded_port", guest: 80, host: 8080

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # ここの設定を有効化。サンプルでは下記のIP
  config.vm.network "private_network", ip: "192.168.33.10"

最後に vagrant up で起動する。

Ansible hosts 設定

ansible は基本的に専用の hosts ファイルで接続先を設定する。
mac で、Homebrew 経由の場合、/usr/local/etc/ansible/hosts に書いてある。

なんか指定しないと怒られる雰囲気だったので、下記のように指定。

[servers]
192.168.33.10

ここまできたら、まずは vagrant up を実行し、起動後に vagrant ssh-config --host vagrant >> ~/.ssh/configssh 設定を設定ファイルに流し込んでおく。
その後、~/.ssh/config を開くと、下記のような設定ができている。

Host vagrant
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/hoge/Documents/projects/play_2.4_activerecord/ansibles/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

重要なのは「IdentityFile」で、これを元に、下記のような定義を作っておく。

Host 192.168.33.*
  IdentityFile /Users/hoge/Documents/projects/play_2.4_activerecord/ansibles/.vagrant/machines/default/virtualbox/private_key
  User vagrant
  PasswordAuthentication no

これで設定完了。
一応 ssh 192.168.33.10 が通るかだけ確認しておくと良い。

とりあえず ansible からping してみる

と言ってもコマンド打って見るだけの簡単なお仕事。

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

これで、ansible から操作を実行できるようになった。
ここから、直接操作もできるようになっている。

$ ansible all -a "ls -a"
192.168.33.10 | success | rc=0 >>
.
..
.ansible
.bash_logout
.bash_profile
.bashrc
.ssh

$ ansible all -a "yum update -y" -s
...略
  • -m : コマンド実行。今回は yum
  • -a : 直実行。
  • -s : sudo してやれ。

という流れ。