| #!/bin/bash |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| set -e |
| set -x |
| |
| function configure_misc() { |
| rm -fv /home/cloud/*.sh |
| echo "cloud:`openssl rand -base64 32`" | chpasswd |
| } |
| |
| function configure_rundisk_size() { |
| # Debian's default is 10% of total RAM. This is too low when total is 256M. |
| # See https://manpages.debian.org/stretch/initscripts/tmpfs.5.en.html |
| echo "tmpfs /run tmpfs nodev,nosuid,size=20%,mode=755 0 0" >> /etc/fstab |
| } |
| |
| function configure_sudoers() { |
| cat >/etc/sudoers <<END |
| Defaults env_reset |
| Defaults exempt_group=admin |
| Defaults mail_badpass |
| Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" |
| |
| root ALL=(ALL:ALL) ALL |
| %admin ALL=NOPASSWD:/bin/chmod, /bin/cp, /bin/mkdir, /bin/mount, /bin/umount |
| |
| #includedir /etc/sudoers.d |
| END |
| echo 'cloud ALL=NOPASSWD:/bin/chmod, /bin/cp, /bin/mkdir, /bin/mount, /bin/umount, /sbin/halt' > /etc/sudoers.d/cloud |
| } |
| |
| # clean up stuff copied in |
| function cleanup_final() { |
| # this has to be here since it is the last file to run (and we remove ourselves) |
| cd /home/cloud |
| rm -fv *.iso |
| rm -fv {apt_upgrade,authorized_keys,cleanup,install_systemvm_packages,zerodisk}.sh |
| rm -fv configure_{acpid,conntrack,grub,locale,networking,persistent_config,systemvm_services}.sh /home/cloud/install_systemvm_packages.sh |
| rm -fv .veewee_version .veewee_params .vbox_version |
| } |
| |
| # Zero out the free space to save space in the final image: |
| function zero_disk() { |
| df -h |
| fstrim -av |
| for path in / /boot /var/log /tmp |
| do |
| dd if=/dev/zero of=${path}/zero bs=1M || true |
| sync |
| rm -f ${path}/zero |
| done |
| } |
| |
| function finalize() { |
| depmod -a |
| configure_misc |
| configure_rundisk_size |
| configure_sudoers |
| cleanup_final |
| sync |
| zero_disk |
| sync |
| } |
| |
| return 2>/dev/null || finalize |