Add rax-nova-agent element
VMs on Rackspace Cloud need nova-agent installed to get networking information set up properly. Add a nova-agent element so that dib can be used to create images to use on Rackspace cloud. Change-Id: I075a50e9a2d7ae7641905b66bbbc627ad708b5ea
This commit is contained in:
		
							
								
								
									
										6
									
								
								elements/rax-nova-agent/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								elements/rax-nova-agent/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | Images for Rackspace Cloud currently require nova-agent to get networking | ||||||
|  | information. | ||||||
|  |  | ||||||
|  | Many of the things here are adapted from: | ||||||
|  |  | ||||||
|  | https://developer.rackspace.com/blog/bootstrap-your-qcow-images-for-the-rackspace-public-cloud/ | ||||||
							
								
								
									
										1
									
								
								elements/rax-nova-agent/element-deps
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								elements/rax-nova-agent/element-deps
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | source-repositories | ||||||
							
								
								
									
										40
									
								
								elements/rax-nova-agent/install.d/05-xen-tools
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										40
									
								
								elements/rax-nova-agent/install.d/05-xen-tools
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,40 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | set -eu | ||||||
|  | set -o pipefail | ||||||
|  |  | ||||||
|  | DIST=$(lsb_release -is) | ||||||
|  | [ -n "$DIST" ] | ||||||
|  |  | ||||||
|  | XS_TOOLS_DIR=$(mktemp -d) | ||||||
|  | mount -o loop /tmp/xs-tools.iso $XS_TOOLS_DIR | ||||||
|  | pushd $XS_TOOLS_DIR/Linux | ||||||
|  | case $DIST in | ||||||
|  |     'Ubuntu'|'Debian') | ||||||
|  |         # Seriously | ||||||
|  |         source versions.deb | ||||||
|  |         dpkg -i $XE_GUEST_UTILITIES_PKG_FILE_amd64 | ||||||
|  |         ;; | ||||||
|  |     'Fedora'|'CentOS' | 'openSUSE project') | ||||||
|  |         source versions.rpm | ||||||
|  |         rpm -Uvh $XE_GUEST_UTILITIES_PKG_FILE_x86_64 | ||||||
|  |         ;; | ||||||
|  | esac | ||||||
|  |  | ||||||
|  | popd | ||||||
|  | umount $XS_TOOLS_DIR | ||||||
							
								
								
									
										137
									
								
								elements/rax-nova-agent/install.d/10-nova-agent
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										137
									
								
								elements/rax-nova-agent/install.d/10-nova-agent
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,137 @@ | |||||||
|  | #!/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. | ||||||
|  |  | ||||||
|  | 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 | ||||||
|  |  | ||||||
|  | DIST=$(lsb_release -is) | ||||||
|  | [ -n "$DIST" ] | ||||||
|  | case $DIST 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 project') | ||||||
|  |  | ||||||
|  |     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 | ||||||
							
								
								
									
										2
									
								
								elements/rax-nova-agent/package-installs.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								elements/rax-nova-agent/package-installs.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | cloud-init: | ||||||
|  |   phase: pre-install.d | ||||||
							
								
								
									
										1
									
								
								elements/rax-nova-agent/source-repository-nova-agent
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								elements/rax-nova-agent/source-repository-nova-agent
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | nova-agent tar /tmp/nova-agent https://f97f271e9fde8f434e2a-fa73b8821af96cee574a861a54d04230.ssl.cf3.rackcdn.com/files/nova-agent/nova-agent-Linux-x86_64-1.39.0.tar.gz . | ||||||
							
								
								
									
										1
									
								
								elements/rax-nova-agent/source-repository-xen-tools
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								elements/rax-nova-agent/source-repository-xen-tools
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | xen-tools file /tmp/xs-tools.iso https://f97f271e9fde8f434e2a-fa73b8821af96cee574a861a54d04230.ssl.cf3.rackcdn.com/files/xentools/xs-tools-6.2.0.iso | ||||||
		Reference in New Issue
	
	Block a user
	 Monty Taylor
					Monty Taylor