-
Notifications
You must be signed in to change notification settings - Fork 1
/
vagrant-setup
executable file
·94 lines (80 loc) · 3.62 KB
/
vagrant-setup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/sh
set -e
if [ $1 ]; then
fs=$1
elif [ $VAGRANT_BUILDER_FS ]; then
fs=$VAGRANT_BUILDER_FS
else
echo "usage: $0 ROOTFS [HOSTNAME]";
exit 1
fi
if [ $2 ]; then
hostname=$2
elif [ $VAGRANT_BUILDER_HOSTNAME ]; then
hostname=$VAGRANT_BUILDER_HOSTNAME
fi
set -x
#######################################################################
# upgrade Debian images as the LXC template does not do it.
#######################################################################
printf '#!/bin/sh\nexit 101\n' > $fs/usr/sbin/policy-rc.d
chmod +x $fs/usr/sbin/policy-rc.d
echo 'Acquire::Languages "none";' > $fs/etc/apt/apt.conf.d/99translations
chroot $fs apt-get update
chroot $fs apt-get -qy dist-upgrade
#######################################################################
# install packages from the 'important' and 'standard' sets
#######################################################################
chroot $fs apt-get install -qy dctrl-tools
chroot $fs grep-aptavail --no-field-names --show-field Package --field Priority --regex 'standard\|important' \
| chroot $fs xargs apt-get install -qy pinentry-curses
# avoid gnupg-agent pulling pinentry-gtk2 on jessie_|
chroot $fs apt-get purge -qy dctrl-tools
#######################################################################
# setup vagrant user
#######################################################################
chroot $fs id ubuntu >/dev/null 2>&1 && chroot $fs deluser ubuntu
chroot $fs id vagrant >/dev/null 2>&1 || chroot $fs useradd --uid 1000 --shell /bin/bash vagrant
mkdir -p $fs/home/vagrant
chroot $fs chown vagrant:vagrant /home/vagrant
mkdir -p $fs/home/vagrant/.ssh
chmod 700 $fs/home/vagrant/.ssh
cat > $fs/home/vagrant/.ssh/authorized_keys << EOF
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
EOF
chmod 600 $fs/home/vagrant/.ssh/authorized_keys
chroot $fs chown -R vagrant:vagrant /home/vagrant/.ssh
#######################################################################
# setup passwordless sudo for vagrant user
#######################################################################
chroot $fs apt-get install -qy sudo
cat > $fs/etc/sudoers.d/vagrant <<EOF
vagrant ALL=(ALL) NOPASSWD:ALL
EOF
chmod 0440 $fs/etc/sudoers.d/vagrant
#######################################################################
# setup hostname
#######################################################################
if [ -n "$hostname" ]; then
echo "${hostname%%.*}" > $fs/etc/hostname
fi
#######################################################################
# speed up tweaks
#######################################################################
# Prevent DNS resolution (speed up logins)
echo 'UseDNS no' >> $fs/etc/ssh/sshd_config
# Disable password logins
echo 'PasswordAuthentication no' >> $fs/etc/ssh/sshd_config
# Reduce grub timeout to 1s to speed up booting
# but only if we are not in a chroot
[ -f $fs/etc/default/grub ] && \
chroot $fs mountpoint -q /dev/ && \
sed -i s/GRUB_TIMEOUT=5/GRUB_TIMEOUT=1/ $fs/etc/default/grub
[ -x $fs/usr/sbin/update-grub ] && \
chroot $fs mountpoint -q /dev/ && \
chroot $fs /usr/sbin/update-grub
#######################################################################
# cleanup
#######################################################################
chroot $fs apt-get clean
rm -f $fs/usr/sbin/policy-rc.d