provisioners/ansible(both): Quote host_vars if needed
This patch is based on @subimage's inputs in the related GitHub issue. Thanks again! Fix #8597
This commit is contained in:
parent
6673c14916
commit
ac75e409a3
|
@ -13,6 +13,7 @@ BUG FIXES:
|
||||||
|
|
||||||
- guests/shell_expand_guest_path : Properly expand guest paths that include relative path alias [GH-8918]
|
- guests/shell_expand_guest_path : Properly expand guest paths that include relative path alias [GH-8918]
|
||||||
- hosts/linux: Remove duplicate export folders before writing /etc/exports [GH-8945]
|
- hosts/linux: Remove duplicate export folders before writing /etc/exports [GH-8945]
|
||||||
|
- provisioners/ansible(both): Add single quotes to the inventory host variables, only when necessary [GH-8597]
|
||||||
- provisioners/ansible(both): Add the "all:vars" section to the inventory when defined in `groups` option [GH-7730]
|
- provisioners/ansible(both): Add the "all:vars" section to the inventory when defined in `groups` option [GH-7730]
|
||||||
- provisioners/ansible_local: Extra variables are no longer truncated when a dollar ($) character is present [GH-7735]
|
- provisioners/ansible_local: Extra variables are no longer truncated when a dollar ($) character is present [GH-7735]
|
||||||
- provisioners/file: Align file provisioner functionality on all platforms [GH-8939]
|
- provisioners/file: Align file provisioner functionality on all platforms [GH-8939]
|
||||||
|
|
|
@ -148,7 +148,13 @@ module VagrantPlugins
|
||||||
end
|
end
|
||||||
s = nil
|
s = nil
|
||||||
if vars.is_a?(Hash)
|
if vars.is_a?(Hash)
|
||||||
s = vars.each.collect{ |k, v| "#{k}=#{v}" }.join(" ")
|
s = vars.each.collect {
|
||||||
|
|k, v|
|
||||||
|
if v.is_a?(String) && v.include?(' ') && !v.match(/^('|")[^'"]+('|")$/)
|
||||||
|
v = %Q('#{v}')
|
||||||
|
end
|
||||||
|
"#{k}=#{v}"
|
||||||
|
}.join(" ")
|
||||||
elsif vars.is_a?(Array)
|
elsif vars.is_a?(Array)
|
||||||
s = vars.join(" ")
|
s = vars.join(" ")
|
||||||
elsif vars.is_a?(String)
|
elsif vars.is_a?(String)
|
||||||
|
|
|
@ -291,11 +291,15 @@ VF
|
||||||
|
|
||||||
it "adds host variables (given in Hash format) to the generated inventory" do
|
it "adds host variables (given in Hash format) to the generated inventory" do
|
||||||
config.host_vars = {
|
config.host_vars = {
|
||||||
machine1: {"http_port" => 80, "comments" => "'some text with spaces'"}
|
machine1: {
|
||||||
|
"http_port" => 80,
|
||||||
|
"comments" => "'some text with spaces and quotes'",
|
||||||
|
"description" => "text with spaces but no quotes",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
expect(Vagrant::Util::Subprocess).to receive(:execute).with(any_args) {
|
expect(Vagrant::Util::Subprocess).to receive(:execute).with(any_args) {
|
||||||
inventory_content = File.read(generated_inventory_file)
|
inventory_content = File.read(generated_inventory_file)
|
||||||
expect(inventory_content).to match("^" + Regexp.quote(machine.name) + ".+http_port=80 comments='some text with spaces'$")
|
expect(inventory_content).to match("^" + Regexp.quote(machine.name) + ".+http_port=80 comments='some text with spaces and quotes' description='text with spaces but no quotes'")
|
||||||
}.and_return(default_execute_result)
|
}.and_return(default_execute_result)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ Some of these options are for advanced usage only and should not be used unless
|
||||||
ansible.host_vars = {
|
ansible.host_vars = {
|
||||||
"host1" => {"http_port" => 80,
|
"host1" => {"http_port" => 80,
|
||||||
"maxRequestsPerChild" => 808},
|
"maxRequestsPerChild" => 808},
|
||||||
"comments" => "'text with spaces'",
|
"comments" => "text with spaces",
|
||||||
"host2" => {"http_port" => 303,
|
"host2" => {"http_port" => 303,
|
||||||
"maxRequestsPerChild" => 909}
|
"maxRequestsPerChild" => 909}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue