Skip to content

Instantly share code, notes, and snippets.

@EHLOVader
Forked from joemaller/install_vagrant_sudoers.sh
Last active March 10, 2018 01:10
Show Gist options
  • Select an option

  • Save EHLOVader/606f7c9f8717608527b8 to your computer and use it in GitHub Desktop.

Select an option

Save EHLOVader/606f7c9f8717608527b8 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Add Vagrant's hostupdater commands to sudoers, for `vagrant up` without a password
# force sudo on self.
if [ $( id -u ) -ne 0 ]; then
exec sudo -p "Login password for %p: " "$0" "$@"
exit $?
fi
# Stage updated sudoers in a temporary file for syntax checking
TMP=$(mktemp -t vagrant_sudoers)
cat /etc/sudoers > $TMP
# Remove any previous declarations
sed -i -e '/^# vagrant-hostsupdater/,/^# end vagrant-hostsupdater/d' $TMP
sed -i -e '/^# vagrant-nfs/,/^# end vagrant-nfs/d' $TMP
cat >> $TMP <<EOF
# vagrant-hostsupdater
Cmnd_Alias VAGRANT_HOSTS_ADD = /bin/sh -c echo "*" >> /etc/hosts
Cmnd_Alias VAGRANT_HOSTS_REMOVE = /usr/bin/sed -i -e /*/ d /etc/hosts
%admin ALL=(root) NOPASSWD: VAGRANT_HOSTS_ADD, VAGRANT_HOSTS_REMOVE
# end vagrant-hostsupdater
EOF
cat >> $TMP <<EOF
# vagrant-nfs
Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%admin ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE
# end vagrant-nfs
EOF
# Check syntax and overwrite sudoers if clean
visudo -c -f $TMP
if [ $? -eq 0 ]; then
echo "Adding vagrant commands to sudoers"
cat $TMP > /etc/sudoers
else
echo "sudoers syntax wasn't valid. Aborting!"
fi
rm -f $TMP
@EHLOVader
Copy link
Copy Markdown
Author

Updated with better hostsmanager update alias.

@EHLOVader
Copy link
Copy Markdown
Author

Added auto sudo and better cleanup commands.

@EHLOVader
Copy link
Copy Markdown
Author

Updated with new commands, and improved cleanup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment