From e69211ab22fd734aacf0ec8054eec21809d89da0 Mon Sep 17 00:00:00 2001 From: Seth Vargo Date: Fri, 24 Jun 2016 19:07:25 -0400 Subject: [PATCH] guests/arch: Add NFS capabilities --- plugins/guests/arch/cap/nfs.rb | 35 +++++++++++++++++++++ plugins/guests/arch/plugin.rb | 15 +++++++++ plugins/synced_folders/nfs/synced_folder.rb | 12 +++++-- 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 plugins/guests/arch/cap/nfs.rb diff --git a/plugins/guests/arch/cap/nfs.rb b/plugins/guests/arch/cap/nfs.rb new file mode 100644 index 000000000..116256ed2 --- /dev/null +++ b/plugins/guests/arch/cap/nfs.rb @@ -0,0 +1,35 @@ +module VagrantPlugins + module GuestArch + module Cap + class NFS + def self.nfs_client_installed(machine) + machine.communicate.test("pacman -Q nfs-utils") + end + + def self.nfs_pre(machine) + comm = machine.communicate + + # There is a bug in NFS where the rpcbind functionality is not started + # and it's not a dependency of nfs-utils. Read more here: + # + # https://bbs.archlinux.org/viewtopic.php?id=193410 + # + comm.sudo <<-EOH.gsub(/^ {12}/, "") + set -e + systemctl enable rpcbind + systemctl start rpcbind + EOH + end + + def self.nfs_client_install(machine) + comm = machine.communicate + comm.sudo <<-EOH.gsub(/^ {12}/, "") + set -e + pacman --noconfirm -Syy + pacman --noconfirm -S nfs-utils ntp + EOH + end + end + end + end +end diff --git a/plugins/guests/arch/plugin.rb b/plugins/guests/arch/plugin.rb index 6b678d763..440917754 100644 --- a/plugins/guests/arch/plugin.rb +++ b/plugins/guests/arch/plugin.rb @@ -20,6 +20,21 @@ module VagrantPlugins require_relative "cap/configure_networks" Cap::ConfigureNetworks end + + guest_capability(:arch, :nfs_client_install) do + require_relative "cap/nfs" + Cap::NFS + end + + guest_capability(:arch, :nfs_client_installed) do + require_relative "cap/nfs" + Cap::NFS + end + + guest_capability(:arch, :nfs_pre) do + require_relative "cap/nfs" + Cap::NFS + end end end end diff --git a/plugins/synced_folders/nfs/synced_folder.rb b/plugins/synced_folders/nfs/synced_folder.rb index 8fe0f69c3..f75cc8f4a 100644 --- a/plugins/synced_folders/nfs/synced_folder.rb +++ b/plugins/synced_folders/nfs/synced_folder.rb @@ -101,8 +101,16 @@ module VagrantPlugins end # Mount them! - machine.guest.capability( - :mount_nfs_folder, nfsopts[:nfs_host_ip], mount_folders) + if machine.guest.capability?(:nfs_pre) + machine.guest.capability(:nfs_pre) + end + + machine.guest.capability(:mount_nfs_folder, + nfsopts[:nfs_host_ip], mount_folders) + + if machine.guest.capability?(:nfs_post) + machine.guest.capability(:nfs_post) + end end def cleanup(machine, opts)