From 58f2b0c8c70c2ed7ab244c03fc8a50577fdfc90e Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Date: Sun, 9 Oct 2016 20:48:50 +0200 Subject: [PATCH] Make ansible-playbook command configurable The ansible-playbook command is currently hardcoded for the ansible and ansible_local provisioners. This patch adds the config option playbook_command to allow the user to change the command. --- plugins/provisioners/ansible/config/base.rb | 38 ++++++++++--------- .../provisioners/ansible/provisioner/base.rb | 2 +- .../provisioners/ansible/provisioner/host.rb | 2 +- .../provisioners/ansible/config/guest_test.rb | 1 + .../provisioners/ansible/config/host_test.rb | 1 + 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/plugins/provisioners/ansible/config/base.rb b/plugins/provisioners/ansible/config/base.rb index 67642467e..6b9e73a40 100644 --- a/plugins/provisioners/ansible/config/base.rb +++ b/plugins/provisioners/ansible/config/base.rb @@ -4,6 +4,7 @@ module VagrantPlugins class Base < Vagrant.plugin("2", :config) GALAXY_COMMAND_DEFAULT = "ansible-galaxy install --role-file=%{role_file} --roles-path=%{roles_path} --force".freeze + PLAYBOOK_COMMAND_DEFAULT = "ansible-playbook".freeze attr_accessor :extra_vars attr_accessor :galaxy_role_file @@ -14,6 +15,7 @@ module VagrantPlugins attr_accessor :inventory_path attr_accessor :limit attr_accessor :playbook + attr_accessor :playbook_command attr_accessor :raw_arguments attr_accessor :skip_tags attr_accessor :start_at_task @@ -33,6 +35,7 @@ module VagrantPlugins @inventory_path = UNSET_VALUE @limit = UNSET_VALUE @playbook = UNSET_VALUE + @playbook_command = UNSET_VALUE @raw_arguments = UNSET_VALUE @skip_tags = UNSET_VALUE @start_at_task = UNSET_VALUE @@ -44,23 +47,24 @@ module VagrantPlugins end def finalize! - @extra_vars = nil if @extra_vars == UNSET_VALUE - @galaxy_role_file = nil if @galaxy_role_file == UNSET_VALUE - @galaxy_roles_path = nil if @galaxy_roles_path == UNSET_VALUE - @galaxy_command = GALAXY_COMMAND_DEFAULT if @galaxy_command == UNSET_VALUE - @host_vars = {} if @host_vars == UNSET_VALUE - @groups = {} if @groups == UNSET_VALUE - @inventory_path = nil if @inventory_path == UNSET_VALUE - @limit = nil if @limit == UNSET_VALUE - @playbook = nil if @playbook == UNSET_VALUE - @raw_arguments = nil if @raw_arguments == UNSET_VALUE - @skip_tags = nil if @skip_tags == UNSET_VALUE - @start_at_task = nil if @start_at_task == UNSET_VALUE - @sudo = false if @sudo != true - @sudo_user = nil if @sudo_user == UNSET_VALUE - @tags = nil if @tags == UNSET_VALUE - @vault_password_file = nil if @vault_password_file == UNSET_VALUE - @verbose = false if @verbose == UNSET_VALUE + @extra_vars = nil if @extra_vars == UNSET_VALUE + @galaxy_role_file = nil if @galaxy_role_file == UNSET_VALUE + @galaxy_roles_path = nil if @galaxy_roles_path == UNSET_VALUE + @galaxy_command = GALAXY_COMMAND_DEFAULT if @galaxy_command == UNSET_VALUE + @host_vars = {} if @host_vars == UNSET_VALUE + @groups = {} if @groups == UNSET_VALUE + @inventory_path = nil if @inventory_path == UNSET_VALUE + @limit = nil if @limit == UNSET_VALUE + @playbook = nil if @playbook == UNSET_VALUE + @playbook_command = PLAYBOOK_COMMAND_DEFAULT if @playbook_command == UNSET_VALUE + @raw_arguments = nil if @raw_arguments == UNSET_VALUE + @skip_tags = nil if @skip_tags == UNSET_VALUE + @start_at_task = nil if @start_at_task == UNSET_VALUE + @sudo = false if @sudo != true + @sudo_user = nil if @sudo_user == UNSET_VALUE + @tags = nil if @tags == UNSET_VALUE + @vault_password_file = nil if @vault_password_file == UNSET_VALUE + @verbose = false if @verbose == UNSET_VALUE end # Just like the normal configuration "validate" method except that diff --git a/plugins/provisioners/ansible/provisioner/base.rb b/plugins/provisioners/ansible/provisioner/base.rb index bbfaa5290..e0807ec27 100644 --- a/plugins/provisioners/ansible/provisioner/base.rb +++ b/plugins/provisioners/ansible/provisioner/base.rb @@ -44,7 +44,7 @@ module VagrantPlugins end end - shell_command << "ansible-playbook" + shell_command << config.playbook_command shell_args = [] @command_arguments.each do |arg| diff --git a/plugins/provisioners/ansible/provisioner/host.rb b/plugins/provisioners/ansible/provisioner/host.rb index 990b730dd..697ad51a8 100644 --- a/plugins/provisioners/ansible/provisioner/host.rb +++ b/plugins/provisioners/ansible/provisioner/host.rb @@ -113,7 +113,7 @@ module VagrantPlugins prepare_environment_variables # Assemble the full ansible-playbook command - command = %w(ansible-playbook) << @command_arguments + command = [config.playbook_command] << @command_arguments # Add the raw arguments at the end, to give them the highest precedence command << config.raw_arguments if config.raw_arguments diff --git a/test/unit/plugins/provisioners/ansible/config/guest_test.rb b/test/unit/plugins/provisioners/ansible/config/guest_test.rb index c1c389686..1249bd834 100644 --- a/test/unit/plugins/provisioners/ansible/config/guest_test.rb +++ b/test/unit/plugins/provisioners/ansible/config/guest_test.rb @@ -27,6 +27,7 @@ describe VagrantPlugins::Ansible::Config::Guest do inventory_path limit playbook + playbook_command provisioning_path raw_arguments skip_tags diff --git a/test/unit/plugins/provisioners/ansible/config/host_test.rb b/test/unit/plugins/provisioners/ansible/config/host_test.rb index f6871c209..fefcbfb6a 100644 --- a/test/unit/plugins/provisioners/ansible/config/host_test.rb +++ b/test/unit/plugins/provisioners/ansible/config/host_test.rb @@ -26,6 +26,7 @@ describe VagrantPlugins::Ansible::Config::Host, :skip_windows => true do inventory_path limit playbook + playbook_command raw_arguments raw_ssh_args skip_tags