Homebrew caks でインストール (Macの場合)
$ brew cask install ansible
動作確認バージョン
下記動作確認時のバージョン
$ VBoxManage -v
5.0.6r103037
$ vagrant -v
Vagrant 1.7.4
$ ansible --version
ansible 1.9.2
vagrant で仮想端末作成
作業用のディレクトリ作成し、その配下にVagrantfileを用意する。
$ mkdir ansible_test
$ cd ansible_test
$ vagrant init centos/7
これでひな形の Vagrantfile が出来ているので、以下の状態に変更する。
Vagrant.configure(2) do |config|
config.vm.box = "centos/7"
config.vm.network "private_network", ip: "192.168.33.10"
end
ここまでの確認として vagrant up
で仮想環境が立ち上がることを確認。
仮想環境が立ち上がったら vagrant ssh
でアクセスできることを確認。
$ vagrant ssh
[vagrant@localhost ~]$ yum list installed
Ansible の準備
ホストの Vagrantfile を作成した場所に provisioning ディレクトリを作成。
その配下にAnsibleが参照するInventoryファイル(ファイル名はhosts
)を作成する。
Inventoryファイルの用意
[vagrants]
192.168.33.10
Ansible経由でping実行してみる
$ ansible -i provisioning/hosts all -m ping -u vagrant --private-key=.vagrant/machines/default/virtualbox/private_key
192.168.33.10 | success >> {
"changed": false,
"ping": "pong"
}
設定ファイルの用意
ssh接続情報を ssh.config に出力
$ vagrant ssh-config > ssh.config
Host 192.168.33.10
HostName 192.168.33.10
User vagrant
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile path/to/private_key
IdentitiesOnly yes
LogLevel FATAL
Ansible の実行オプションを ansible.cfg に記述
[defaults]
hostfile = provisioning/hosts
[ssh_connection]
ssh_args = -F ssh.config
もう一度 ping してみる
$ ansible all -m ping
192.168.33.10 | success >> {
"changed": false,
"ping": "pong"
}
サンドボックスを有効化
$ vagrant sandbox on
PlayBookの作成
---
- hosts: vagrants
sudo: yes
user: vagrant
tasks:
- name: install packages git
yum: name=git update_cache=yes
上記PlayBookをvagrant provision
で読み込むように設定
Vagrant.configure(2) do |config|
config.vm.box = "centos/7"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provision "ansible" do |ansible|
ansible.playbook = "provisioning/site.yml"
ansible.inventory_path = "provisioning/hosts"
ansible.limit = 'all'
end
end
provision実行
$ vagrant provision
==> default: Running provisioner: ansible...
PLAY [vagrants] ***************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.10]
TASK: [install packages git] **************************************************
changed: [192.168.33.10]
PLAY RECAP ********************************************************************
192.168.33.10 : ok=2 changed=1 unreachable=0 failed=0
自動的に仮想端末へgitがインストールされる。
仮想端末へsshでログインして git コマンドが使えることを確認。
playbookを個別に実行
以下のようにタグを指定して実行することも可能。
$ ansible-playbook site.yml -t hoge
参考
Vagrant関連
Ansible - Provisioning - Vagrant Documentation
Ansible関連
AnsibleとVagrantで開発環境を構築する - さくらのナレッジ
Vagrant と Ansible を組み合わせて使う | CUBE SUGAR STORAGE
Using Vagrant and Ansible — Ansible Documentation
Ansibleでよく使うファイル操作モジュール | Developers.IO
Ansible Galaxy | Find, reuse, and share the best Ansible content
実践!Ansibleベストプラクティス(前編) - さくらのナレッジ