Mac で ansible 基礎設定やってみた。
Ansible のことをちまちまやったので、その件メモ。
ネカフェでやってるんだけど、近くのネカフェは速度が遅すぎてこれ以上はちょっと厳しかった。
Install
と言ってもこれだけ。
$ brew install ansible
ちなみにバージョンは
$ ansible --version ansible 1.9.2 configured module search path = None
セットアップ先環境
テストだから 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/config
で ssh 設定を設定ファイルに流し込んでおく。
その後、~/.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
してやれ。
という流れ。