aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools/disk-image-builder/centos/scripts-remote
diff options
context:
space:
mode:
Diffstat (limited to 'resources/tools/disk-image-builder/centos/scripts-remote')
-rw-r--r--resources/tools/disk-image-builder/centos/scripts-remote/cleanup.sh37
-rw-r--r--resources/tools/disk-image-builder/centos/scripts-remote/post-install.sh104
-rw-r--r--resources/tools/disk-image-builder/centos/scripts-remote/serial-console-centos-7-1511.sh89
-rw-r--r--resources/tools/disk-image-builder/centos/scripts-remote/vagrant-guestadditions.sh22
-rw-r--r--resources/tools/disk-image-builder/centos/scripts-remote/vagrant-user.sh40
5 files changed, 292 insertions, 0 deletions
diff --git a/resources/tools/disk-image-builder/centos/scripts-remote/cleanup.sh b/resources/tools/disk-image-builder/centos/scripts-remote/cleanup.sh
new file mode 100644
index 0000000000..850c6958fb
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-remote/cleanup.sh
@@ -0,0 +1,37 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed 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.
+
+echo "********** CLEANING UP **********"
+
+# Clean up host keys only if we're using cloud-init
+# (which will generate new keys upon next boot). This
+# currently applies to Qemu build only.
+
+if dpkg -s cloud-init > /dev/null 2>&1
+then
+ rm -f /etc/ssh/ssh_host_*
+fi
+
+# Remove root's password, old resolv.conf and DHCP lease
+passwd -d root
+passwd -l root
+rm -f /etc/resolv.conf
+pkill dhclient
+rm -f /var/lib/dhcp/*leases
+
+echo "********** SCHEDULING SHUTDOWN IN 1 MINUTE **********"
+sync
+shutdown -h +1
+exit
diff --git a/resources/tools/disk-image-builder/centos/scripts-remote/post-install.sh b/resources/tools/disk-image-builder/centos/scripts-remote/post-install.sh
new file mode 100644
index 0000000000..9ae1608203
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-remote/post-install.sh
@@ -0,0 +1,104 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed 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.
+
+TEMP_PATH="/root/temp"
+
+###
+### RPMs
+###
+echo "********** INSTALLING RPMs **********"
+
+# We're doing this the hard way as we're dealing with a bunch of
+# rpm packages without using yum.
+
+# Attempt up to five cycles of unpack/configure. There may be dependency
+# problems during the first one(s).
+echo ==========================yum update==============================
+yum clean all
+yum install -y @base
+yum install -y deltarpm
+yum update -y
+yum -y install epel-release
+yum update -y
+echo ==========================end yum update==============================
+attempt=1
+MAX_ATTEMPTS=3
+try_again=1
+
+RPM_FILE=${TEMP_PATH}/rpm/rpm-packages.txt
+while [ $attempt -le $MAX_ATTEMPTS ] && [ $try_again -eq 1 ]
+do
+ try_again=0
+ while read name url
+ do
+ # use rpm command if url is present in the package file
+ if [ ! -z $url ] ; then
+ rpm -i $url$name || try_again=1
+ else
+ yum install -y $name || try_again=1
+ fi
+ done < $RPM_FILE
+ attempt=$(( $attempt + 1 ))
+done
+
+if [[ ( $try_again == 1 ) ]]
+then
+ echo "Still encountered errors after ${MAX_ATTEMPTS} attempts."
+fi
+
+##
+## PIP
+##
+echo "********** INSTALLING PIP PACKAGES **********"
+pip install --no-index --find-links ${TEMP_PATH}/pip/ -r ${TEMP_PATH}/requirements.txt
+
+
+echo "********** CREATING HISTORIC LINK FOR QEMU, COPY NESTED VM IMAGE **********"
+mkdir -p /opt/qemu/bin
+ln -s /usr/bin/qemu-system-x86_64 /opt/qemu/bin/qemu-system-x86_64
+
+mkdir -p /var/lib/vm
+
+echo "Embedding nested VM image on this image"
+mkdir /var/lib/vm/images
+cp ${TEMP_PATH}/nested-vm/* /var/lib/vm/images/
+# There should only be one file at this time
+ln -s /var/lib/vm/images/* /var/lib/vm/vhost-nested.img
+
+ls -lR /var/lib/vm
+
+# Mount hugepages directory for nested VM
+mkdir -p /mnt/huge
+echo 'hugetlbfs /mnt/huge hugetlbfs mode=1770,gid=111 0 0' >> /etc/fstab
+
+##
+## Java
+##
+echo "********** CREATING JAVA SHELL PROFILE **********"
+mkdir -p /etc/profile.d
+echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' > /etc/profile.d/java.sh
+echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/java.sh
+
+
+##
+## Changelog
+##
+echo "********** MOVING CHANGELOG AND VERSION FILES **********"
+
+mv ${TEMP_PATH}/VERSION /
+mv ${TEMP_PATH}/CHANGELOG /
+
+echo "********** CLEANING UP **********"
+rm -fr ${TEMP_PATH}
diff --git a/resources/tools/disk-image-builder/centos/scripts-remote/serial-console-centos-7-1511.sh b/resources/tools/disk-image-builder/centos/scripts-remote/serial-console-centos-7-1511.sh
new file mode 100644
index 0000000000..457e77cdee
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-remote/serial-console-centos-7-1511.sh
@@ -0,0 +1,89 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed 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.
+
+##
+## Serial console
+##
+echo "********** CONFIGURING SERIAL CONSOLE AND DISABLING IPV6 **********"
+cat - > /etc/systemd/system/serial-getty-digi@.service <<"_EOF"
+# ttyS0 - getty
+#
+# This service maintains a getty on ttyS0 from the point the system is
+# started until it is shut down again.
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+
+[Unit]
+Description=Serial Getty on %I
+Documentation=man:agetty(8) man:systemd-getty-generator(8)
+Documentation=http://0pointer.de/blog/projects/serial-console.html
+BindsTo=dev-%i.device
+After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service
+After=rc-local.service
+
+# If additional gettys are spawned during boot then we should make
+# sure that this is synchronized before getty.target, even though
+# getty.target didn't actually pull it in.
+Before=getty.target
+IgnoreOnIsolate=yes
+
+[Service]
+ExecStart=-/sbin/agetty -L %I 115200
+Type=idle
+Restart=always
+UtmpIdentifier=%I
+TTYPath=/dev/%I
+TTYReset=yes
+TTYVHangup=yes
+KillMode=process
+IgnoreSIGPIPE=no
+SendSIGHUP=yes
+
+[Install]
+WantedBy=getty.target
+_EOF
+
+cat - > /etc/default/grub <<"_EOF"
+# If you change this file, run 'update-grub' afterwards to update
+# /boot/grub/grub.cfg.
+# For full documentation of the options in this file, see:
+# info -f grub -n 'Simple configuration'
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=5
+GRUB_DISABLE_SUBMENU=true
+GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
+GRUB_CMDLINE_LINUX="rhgb quiet console=tty0 console=ttyS0,115200n8 ipv6.disable=1"
+
+GRUB_TERMINAL=serial
+GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
+
+# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+#GRUB_DISABLE_RECOVERY="true"
+
+# Uncomment to get a beep at grub start
+#GRUB_INIT_TUNE="480 440 1"
+_EOF
+
+grub2-mkconfig -o /boot/grub2/grub.cfg
+sudo systemctl enable serial-getty-digi@ttyS0.service
+sudo systemctl start serial-getty-digi@ttyS0.service
diff --git a/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-guestadditions.sh b/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-guestadditions.sh
new file mode 100644
index 0000000000..ec1c064437
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-guestadditions.sh
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed 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.
+
+echo "********** Installing VirtualBox Guest Additions (sigh) **********"
+mkdir /mnt/VBoxGuestAdditions
+mount VBoxGuestAdditions.iso /mnt/VBoxGuestAdditions/
+/mnt/VBoxGuestAdditions/VBoxLinuxAdditions.run
+umount /mnt/VBoxGuestAdditions
+rmdir /mnt/VBoxGuestAdditions/
+rm -f VBoxGuestAdditions.iso
diff --git a/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-user.sh b/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-user.sh
new file mode 100644
index 0000000000..31ef17f147
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-user.sh
@@ -0,0 +1,40 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed 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.
+
+echo "********** Adding Vagrant user ***********"
+# Remove cloud-init as this will slow down the Vagrant boot
+export DEBIAN_FRONTEND=noninteractive
+apt-get purge -y cloud-init
+
+# Add Vagrant user
+useradd -c "Vagrant User" -m -s /bin/bash vagrant
+
+mkdir /home/vagrant/.ssh
+cat - > /home/vagrant/.ssh/authorized_keys <<_EOF
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
+_EOF
+
+chown -R vagrant.vagrant /home/vagrant/.ssh
+chmod 700 /home/vagrant/.ssh
+
+mkdir -p /etc/sudoers.d
+cat - > /etc/sudoers.d/vagrant <<_EOF
+vagrant ALL=(root) NOPASSWD:ALL
+_EOF
+chmod 440 /etc/sudoers.d/vagrant
+
+echo "********** Rebooting with new kernel **********"
+reboot
+sleep 60