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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
#!/bin/bash
# Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
#
# 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.
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
cd /tmp/nova-agent
./installer.sh
cat > /etc/cloud/cloud.cfg.d/80_restart_network.cfg <<'EOF'
# Restart networking if it's got no IP. This is to catch if we're on RAX
# and the baked in dhcp config didn't work, but is now probably reconfigured
# by nova-agent
runcmd:
- ip addr show eth0 | grep inet || ( ifdown -a ; ifup -a )
EOF
case "$DISTRO_NAME" in
'ubuntu'|'debian')
# cloud-init / nova-agent sad panda hacks
cat > /etc/init/nova-agent.conf <<'EOF'
# nova-agent - start before cloud-init and hup network interfaces
start on starting cloud-init-local
task
console output
script
/etc/init.d/nova-agent start
sleep 13
ifdown -a
ifup -a
end script
EOF
cat > /etc/init/xe-linux-distribution.conf <<'EOF'
# xe-linux-distribution - start the xentools before nova-agent runs
start on starting nova-agent
task
console output
script
/etc/init.d/xe-linux-distribution start
sleep 2
end script
EOF
# stop nova-agent from starting twice since we start it from upstart now
update-rc.d -f nova-agent remove
update-rc.d -f xe-linux-distribution remove
# console fix for PV Ubuntus
cat > /etc/init/hvc0.conf <<'EOF'
# hvc0 - getty
#
# This service maintains a getty on hvc0 from the point the system is
# started until it is shut down again.
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -L 115200 hvc0 vt102
EOF
;;
'fedora'|'centos'|'opensuse')
cat > /usr/local/bin/run-nova-agent.sh <<'EOF'
#!/bin/bash
/etc/init.d/nova-agent start
sleep 13
ifdown -a
ifup -a
EOF
chmod 0755 /usr/local/bin/run-nova-agent.sh
cat > /usr/local/bin/run-xe-linux-distribution.sh <<'EOF'
#!/bin/bash
/etc/init.d/xe-linux-distribution start
sleep 2
EOF
chmod 0755 /usr/local/bin/run-xe-linux-distribution.sh
cat > /etc/systemd/system/nova-agent.service <<EOF
[Unit]
Description=Rackspace nova-agent
Before=cloud-init-local
Wants=cloud-init-local
[Service]
ExecStart=/usr/local/bin/run-nova-agent.sh
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/xe-linux-distribution.service <<'EOF'
[Unit]
Description=xentools agent
Before=nova-agent
Wants=nova-agent
[Service]
ExecStart=/usr/local/bin/run-xe-linux-distribution.sh
[Install]
WantedBy=multi-user.target
EOF
# stop nova-agent from starting twice since we start it from systemd now
chkconfig nova-agent off
chkconfig xe-linux-distribution off
systemctl enable nova-agent
systemctl enable xe-linux-distribution
;;
esac
|