76 lines
2.2 KiB
Ruby
76 lines
2.2 KiB
Ruby
require_relative "base"
|
|
|
|
module VagrantPlugins
|
|
module Ansible
|
|
module Config
|
|
class Host < Base
|
|
|
|
attr_accessor :ask_sudo_pass
|
|
attr_accessor :ask_vault_pass
|
|
attr_accessor :force_remote_user
|
|
attr_accessor :host_key_checking
|
|
attr_accessor :raw_ssh_args
|
|
|
|
def initialize
|
|
super
|
|
|
|
@ask_sudo_pass = false
|
|
@ask_vault_pass = false
|
|
@force_remote_user = true
|
|
@host_key_checking = false
|
|
@raw_ssh_args = UNSET_VALUE
|
|
end
|
|
|
|
def finalize!
|
|
super
|
|
|
|
@ask_sudo_pass = false if @ask_sudo_pass != true
|
|
@ask_vault_pass = false if @ask_vault_pass != true
|
|
@force_remote_user = true if @force_remote_user != false
|
|
@host_key_checking = false if @host_key_checking != true
|
|
@raw_ssh_args = nil if @raw_ssh_args == UNSET_VALUE
|
|
end
|
|
|
|
def validate(machine)
|
|
super
|
|
|
|
if raw_ssh_args
|
|
if raw_ssh_args.kind_of?(String)
|
|
@raw_ssh_args = [raw_ssh_args]
|
|
elsif !raw_ssh_args.kind_of?(Array)
|
|
@errors << I18n.t(
|
|
"vagrant.provisioners.ansible.errors.raw_ssh_args_invalid",
|
|
type: raw_ssh_args.class.to_s,
|
|
value: raw_ssh_args.to_s)
|
|
end
|
|
end
|
|
|
|
{ "ansible remote provisioner" => @errors }
|
|
end
|
|
|
|
protected
|
|
|
|
def check_path(machine, path, path_test_method, error_message_key = nil)
|
|
expanded_path = Pathname.new(path).expand_path(machine.env.root_path)
|
|
if !expanded_path.public_send(path_test_method)
|
|
if error_message_key
|
|
@errors << I18n.t(error_message_key, path: expanded_path, system: "host")
|
|
end
|
|
return false
|
|
end
|
|
true
|
|
end
|
|
|
|
def check_path_is_a_file(machine, path, error_message_key = nil)
|
|
check_path(machine, path, "file?", error_message_key)
|
|
end
|
|
|
|
def check_path_exists(machine, path, error_message_key = nil)
|
|
check_path(machine, path, "exist?", error_message_key)
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|