config.ssh.forward_agent = true
config.vm.provision Vagrant::Provisioners::CopyMyConf do |copy_conf|
- copy_conf.ssh = false
+ copy_conf.ssh = true
copy_conf.vim = true
- copy_conf.git = false
+ copy_conf.git = true
copy_conf.user_home = "/home/vagrant"
end
require "copy_my_conf/config"
require "copy_my_conf/vim"
+require "copy_my_conf/ssh"
+require "copy_my_conf/git"
module Vagrant
module Provisioners
class CopyMyConf < Base
+ def initialize *args
+ `rm -rf /tmp/copy_my_conf`
+ super *args
+ end
def prepare
@to_be_copied = []
@to_be_copied.each do |conf|
conf.provision channel, user_home, tmp_root
end
- provision_ssh(channel) if config.ssh
- provision_vim(channel) if config.vim
- provision_git(channel) if config.git
end
def self.config_class
"/tmp/copy_my_conf"
end
- def prepare_ssh
- env[:vm].config.vm.share_folder("ssh", "#{tmp_root}/ssh", "~/.ssh")
- end
-
- def prepare_git
- `mkdir -p #{tmp_root}/git`
- `cp ~/.gitconfig #{tmp_root}/git/`
- env[:vm].config.vm.share_folder("git", "#{tmp_root}/git/", "#{tmp_root}/git")
- end
-
- def provision_git(channel)
- puts "Copying your gitconfig"
- channel.execute("cp #{tmp_root}/git/.gitconfig ~/")
- end
-
- def provision_ssh(channel)
- puts "Copying your ssh keys and config"
- channel.sudo("mkdir -p #{tmp_root}/cached && chown -R vagrant #{tmp_root}/cached")
- channel.execute("[[ -f #{user_home}/.ssh/authorized_keys ]] && mv #{user_home}/.ssh/authorized_keys #{tmp_root}/cached")
- channel.execute("cp #{tmp_root}/ssh/* #{user_home}/.ssh")
- channel.execute("cat #{tmp_root}/cached/authorized_keys >> #{user_home}/.ssh/authorized_keys") # So that `vagrant ssh` doesn't ask for password
- end
-
def user_home
config.user_home || "/home/vagrant"
end
--- /dev/null
+module Vagrant
+ module Provisioners
+ class CopyMyConf < Base
+ class Git
+ def prepare vm, tmp_root
+ `mkdir -p #{tmp_root}/git`
+ `cp ~/.gitconfig #{tmp_root}/git/`
+ vm.share_folder("git", "#{tmp_root}/git/", "#{tmp_root}/git")
+ end
+
+ def provision channel, user_home, tmp_root
+ puts "Copying your gitconfig"
+ channel.execute("cp #{tmp_root}/git/.gitconfig #{user_home}")
+ end
+ end
+ end
+ end
+end
\ No newline at end of file
--- /dev/null
+module Vagrant
+ module Provisioners
+ class CopyMyConf < Base
+ class Ssh
+ def prepare vm, tmp_root
+ vm.share_folder("ssh", "#{tmp_root}/ssh", "~/.ssh")
+ end
+
+ def provision channel, user_home, tmp_root
+ puts "Copying your ssh keys and config"
+ channel.sudo("mkdir -p #{tmp_root}/cached && chown -R vagrant #{tmp_root}/cached")
+ channel.execute("[[ -f #{user_home}/.ssh/authorized_keys ]] && mv #{user_home}/.ssh/authorized_keys #{tmp_root}/cached")
+ channel.execute("cp #{tmp_root}/ssh/* #{user_home}/.ssh")
+ channel.execute("cat #{tmp_root}/cached/authorized_keys >> #{user_home}/.ssh/authorized_keys") # So that `vagrant ssh` doesn't ask for password
+ end
+
+ end
+ end
+ end
+end