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 の概要