Vagrant ガイド¶
はじめに¶
Vagrant は、仮想マシン環境を管理するためのツールであり、 これにより、さまざまな仮想化プラットフォームおよびクラウドプラットフォームで、 再現可能な作業環境を構成および使用できます。 また、この仮想マシンのプロビジョナーとして Ansible と統合されており、 2 つのツールは連携して機能します。
本ガイドでは、Vagrant 1.7 以降および Ansible を一緒に使用する方法を説明します。
Vagrant に精通していない場合は、「ドキュメント」を参照してください。
本ガイドでは、Ansible がすでにインストールされ、動作していることを前提としています。 Git ロールアウトから実行しても問題ありません。詳細は、「Ansible のインストール」 を参照してください。
Vagrant 設定¶
Vagrant をインストールしたら、最初に Vagrantfile
を作成し、
ニーズに合わせてカスタマイズします。これは、Vagrantのドキュメントで詳細に説明されていますが、
ここでは、
Ansible プロビジョナーを使用して 1 台のマシンを管理するセクションを含む簡単な例を示します。
# This guide is optimized for Vagrant 1.8 and above.
# Older versions of Vagrant put less info in the inventory they generate.
Vagrant.require_version ">= 1.8.0"
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.provision "ansible" do |ansible|
ansible.verbose = "v"
ansible.playbook = "playbook.yml"
end
end
Vagrantfile
と同じディレクトリーに、
playbook.yml
と呼ばれる Ansible Playbook を参照する config.vm.provision
セクションに注目してください。Vagrant は、
仮想マシンが起動し、SSH アクセスの準備が整ったら、
プロビジョナーを実行します。
Vagrantfile
に設定できる Ansible オプションは多数あります。
詳細は Ansible プロビジョナーのドキュメント
<https://www.vagrantup.com/docs/provisioning/ansible.html> を
参照してください。
$ vagrant up
これにより、仮想マシンが起動し、 (最初の仮想マシンの起動時に) プロビジョニングの Playbook が実行します。
既存の仮想マシンで Playbook を再実行するには、以下を実行します。
$ vagrant provision
これにより、Playbook が既存の仮想マシンに対して再実行されます。
ansible.verbose
オプションを有効にすると、次の例に示すように、
バックグラウンドで使用される完全な ansible-playbook
コマンドを
表示するように Vagrant に指示することに注意してください。
$ PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --connection=ssh --timeout=30 --limit="default" --inventory-file=/home/someone/coding-in-a-project/.vagrant/provisioners/ansible/inventory -v playbook.yml
この情報は、統合の問題をデバッグするのに非常に役立ち、 次のセクションで説明するように、 シェルから Ansible を手動で実行するのにも使用できます。
Ansible の手動実行¶
マシンに対して Ansible を手動で実行する場合があります。これは、
vagrant provision
を実行するよりも速く、かなり簡単です。
Vagrantfile
の例では、
Vagrant が .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
に Ansible インベントリーファイルを自動的に作成します。
このインベントリーは、
Vagrant が自動的に作成する SSH トンネルに従って設定されます。1 台のマシン環境用に自動的に作成される一般的なインベントリーファイルは、
次のようになります。
# Generated by Vagrant
default ansible_host=127.0.0.1 ansible_port=2222 ansible_user='vagrant' ansible_ssh_private_key_file='/home/someone/coding-in-a-project/.vagrant/machines/default/virtualbox/private_key'
Ansible を手動で実行する場合は、
少なくとも inventory に対して、ansible
コマンドまたは ansible-playbook
コマンドに、
正しい引数を渡すようにしてください。
$ ansible-playbook -i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory playbook.yml
高度な使用方法¶
Ansible Provisioner ドキュメント の「Tips and Tricks」は、以下のような Ansible の高度な機能に関する詳細情報を説明します。
- マルチマシン環境内で Playbook を並行して実行する方法
- ローカルの
ansible.cfg
設定ファイルを統合する方法
See also
- Vagrant Home
- ダウンロードを含む Vagrant ホームページ
- Vagrant Documentation
- Vagrant ドキュメント
- Ansible Provisioner
- Ansible プロビジョナーの Vagrant ドキュメント
- Vagrant Issue Tracker
- Vagrant プロジェクトでの Ansible プロビジョナーに関する未解決な問題
- Playbook の使用
- Playbook の概要