summaryrefslogtreecommitdiffstats
path: root/src/config/cloud
diff options
context:
space:
mode:
authorMichael Brown2016-01-18 09:37:27 +0100
committerMichael Brown2016-01-18 09:37:27 +0100
commitcc252605ce9e0e224fbc34f946b80e90d012dc42 (patch)
tree3542cea52aa8ee08a7ea39c2df7812ae6068e01a /src/config/cloud
parent[stp] Fix incorrectly disambiguated errors (diff)
downloadipxe-cc252605ce9e0e224fbc34f946b80e90d012dc42.tar.gz
ipxe-cc252605ce9e0e224fbc34f946b80e90d012dc42.tar.xz
ipxe-cc252605ce9e0e224fbc34f946b80e90d012dc42.zip
[build] Add named configuration for public cloud environments
Add a named CONFIG=cloud configuration, which enables console types useful for obtaining output from virtual machines in public clouds such as AWS EC2. An image suitable for use in AWS EC2 can be built using make bin/ipxe.usb CONFIG=cloud EMBED=config/cloud/aws.ipxe The embedded script will direct iPXE to download and execute the EC2 "user-data" file, which is always available to an EC2 VM via the URI http://169.254.169.254/latest/user-data (regardless of the VPC networking settings). The boot can therefore be controlled by modifying the per-instance user data, without having to modify the boot disk image. Console output can be obtained via syslog (with a syslog server configured in the user-data script), via the AWS "System Log" (after the instance has been stopped), or as a last resort from the log partition on the boot disk. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/config/cloud')
-rw-r--r--src/config/cloud/aws.ipxe7
-rw-r--r--src/config/cloud/colour.h0
-rw-r--r--src/config/cloud/console.h31
-rw-r--r--src/config/cloud/crypto.h0
-rw-r--r--src/config/cloud/general.h0
-rw-r--r--src/config/cloud/serial.h0
-rw-r--r--src/config/cloud/settings.h0
-rw-r--r--src/config/cloud/sideband.h0
-rw-r--r--src/config/cloud/usb.h0
9 files changed, 38 insertions, 0 deletions
diff --git a/src/config/cloud/aws.ipxe b/src/config/cloud/aws.ipxe
new file mode 100644
index 00000000..d857d71d
--- /dev/null
+++ b/src/config/cloud/aws.ipxe
@@ -0,0 +1,7 @@
+#!ipxe
+
+echo Amazon EC2 - iPXE boot via user-data
+ifstat ||
+dhcp ||
+route ||
+chain -ar http://169.254.169.254/latest/user-data
diff --git a/src/config/cloud/colour.h b/src/config/cloud/colour.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/config/cloud/colour.h
diff --git a/src/config/cloud/console.h b/src/config/cloud/console.h
new file mode 100644
index 00000000..dae18e55
--- /dev/null
+++ b/src/config/cloud/console.h
@@ -0,0 +1,31 @@
+/*
+ * Console configuration suitable for use in public cloud
+ * environments, or any environment where direct console access is not
+ * available.
+ *
+ */
+
+/* Log to syslog(s) server
+ *
+ * The syslog server to be used must be specified via e.g.
+ * "set syslog 192.168.0.1".
+ */
+#define CONSOLE_SYSLOG
+#define CONSOLE_SYSLOGS
+
+/* Log to serial port
+ *
+ * Note that the serial port output from an AWS EC2 virtual machine is
+ * generally available (as the "System Log") only after the instance
+ * has been stopped.
+ */
+#define CONSOLE_SERIAL
+
+/* Log to partition on local disk
+ *
+ * If all other log mechanisms fail then the VM boot disk containing
+ * the iPXE image can be detached and attached to another machine in
+ * the same cloud, allowing the log to be retrieved from the log
+ * partition.
+ */
+#define CONSOLE_INT13
diff --git a/src/config/cloud/crypto.h b/src/config/cloud/crypto.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/config/cloud/crypto.h
diff --git a/src/config/cloud/general.h b/src/config/cloud/general.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/config/cloud/general.h
diff --git a/src/config/cloud/serial.h b/src/config/cloud/serial.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/config/cloud/serial.h
diff --git a/src/config/cloud/settings.h b/src/config/cloud/settings.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/config/cloud/settings.h
diff --git a/src/config/cloud/sideband.h b/src/config/cloud/sideband.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/config/cloud/sideband.h
diff --git a/src/config/cloud/usb.h b/src/config/cloud/usb.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/config/cloud/usb.h