provisioners/ansible: Put ssh key in the inventory

Vagrant 1.7.1 creates and injects new ssh keys for each virtual machine.
When it started ansible with the "parallel provisioning trick",
it would only send the ssh key of the targeted virtual machine.
With this change, vagrant now stores the ssh key for each virtual
machines directly in the generated ansible inventory, and thus allow
ansible parallelism.

Note that this change is not sufficient, as it would break vagrant
configuration based on a custom inventory (file or script). This issue
will be addressed in a next commit.

Signed-off-by: Luis Pabón <lpabon@redhat.com>
This commit is contained in:
Luis Pabón 2014-12-20 23:44:23 -05:00 committed by Gilles Cornu
parent d29487a2bc
commit f0718d620d
1 changed files with 3 additions and 3 deletions

View File

@ -20,8 +20,8 @@ module VagrantPlugins
# Ansible provisioner options # Ansible provisioner options
# #
# Connect with Vagrant SSH identity # By default, connect with Vagrant SSH username
options = %W[--private-key=#{@ssh_info[:private_key_path][0]} --user=#{@ssh_info[:username]}] options = %W[--user=#{@ssh_info[:username]}]
# Connect with native OpenSSH client # Connect with native OpenSSH client
# Other modes (e.g. paramiko) are not officially supported, # Other modes (e.g. paramiko) are not officially supported,
@ -127,7 +127,7 @@ module VagrantPlugins
m = @machine.env.machine(*am) m = @machine.env.machine(*am)
m_ssh_info = m.ssh_info m_ssh_info = m.ssh_info
if !m_ssh_info.nil? if !m_ssh_info.nil?
inventory += "#{m.name} ansible_ssh_host=#{m_ssh_info[:host]} ansible_ssh_port=#{m_ssh_info[:port]}\n" inventory += "#{m.name} ansible_ssh_host=#{m_ssh_info[:host]} ansible_ssh_port=#{m_ssh_info[:port]} ansible_ssh_private_key_file=#{m_ssh_info[:private_key_path][0]}\n"
inventory_machines[m.name] = m inventory_machines[m.name] = m
else else
@logger.error("Auto-generated inventory: Impossible to get SSH information for machine '#{m.name} (#{m.provider_name})'. This machine should be recreated.") @logger.error("Auto-generated inventory: Impossible to get SSH information for machine '#{m.name} (#{m.provider_name})'. This machine should be recreated.")