| #!/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. |
| # |
| # This scripts before ssh.service but after cloud-early-config |
| |
| # Eject cdrom if any |
| eject || true |
| |
| # set cache back pressure based on amount of physical memory 100 is default |
| physmem=$(free|awk '/^Mem:/{print $2}') |
| if [ $((physmem)) -lt 409600 ]; then |
| sed -i "/^vm.vfs_cache_pressure/ c\vm.vfs_cache_pressure = 200" /etc/sysctl.conf |
| else |
| sed -i "/^vm.vfs_cache_pressure/ c\vm.vfs_cache_pressure = 100" /etc/sysctl.conf |
| fi |
| sysctl -p |
| |
| # HYPERVISOR exported by cloud-early-config |
| HYPERVISOR=$(</etc/cloudstack-agent_detected_hypervisor) |
| case $HYPERVISOR in |
| xen-pv|xen-domU) |
| systemctl stop ntpd |
| systemctl start xe-daemon |
| ;; |
| xen-hvm) |
| systemctl stop ntpd |
| systemctl start xe-daemon |
| ;; |
| kvm) |
| systemctl start qemu-guest-agent |
| VPORT=$(find /dev/virtio-ports -type l -name '*.vport' 2>/dev/null|head -1) |
| ;; |
| vmware) |
| # system time sync'd with host via vmware tools |
| systemctl stop ntpd |
| systemctl start open-vm-tools |
| ;; |
| virtualpc|hyperv) |
| # Hyper-V is recognized as virtualpc hypervisor type. Boot args are passed using KVP Daemon |
| systemctl start hyperv-daemons.hv-fcopy-daemon.service hyperv-daemons.hv-kvp-daemon.service hyperv-daemons.hv-vss-daemon.service |
| ;; |
| virtualbox) |
| # Virtualbox is used to test the virtual router |
| ;; |
| esac |
| |
| |
| |
| |
| # Restart journald for setting changes to apply |
| systemctl restart systemd-journald |
| |
| TYPE=$(grep -Po 'type=\K[a-zA-Z]*' /var/cache/cloud/cmdline) |
| if [ "$TYPE" == "router" ] || [ "$TYPE" == "vpcrouter" ] || [ "$TYPE" == "dhcpsrvr" ] |
| then |
| if [ -x /opt/cloud/bin/update_config.py ] |
| then |
| /opt/cloud/bin/update_config.py cmd_line.json || true |
| fi |
| fi |
| |
| [ ! -f /var/cache/cloud/enabled_svcs ] && touch /var/cache/cloud/enabled_svcs |
| for svc in $(cat /var/cache/cloud/enabled_svcs) |
| do |
| systemctl enable --now --no-block $svc |
| done |
| |
| [ ! -f /var/cache/cloud/disabled_svcs ] && touch /var/cache/cloud/disabled_svcs |
| for svc in $(cat /var/cache/cloud/disabled_svcs) |
| do |
| systemctl disable --now --no-block $svc |
| done |
| |
| # Restore the persistent iptables nat, rules and filters for IPv4 and IPv6 if they exist |
| ipv4="/etc/iptables/rules.v4" |
| if [ -e $ipv4 ] |
| then |
| iptables-restore < $ipv4 |
| fi |
| |
| ipv6="/etc/iptables/rules.v6" |
| if [ -e $ipv6 ] |
| then |
| ip6tables-restore < $ipv6 |
| fi |
| |
| # Enable SSH |
| systemctl enable --now --no-block ssh |
| |
| date > /var/cache/cloud/boot_up_done |