summaryrefslogtreecommitdiff
path: root/doc/rtd/topics/datasources/ec2.rst
diff options
context:
space:
mode:
authorGuilherme G. Piccoli <gpiccoli@canonical.com>2019-02-14 20:37:32 +0000
committerServer Team CI Bot <josh.powers+server-team-bot@canonical.com>2019-02-14 20:37:32 +0000
commit0bb4c74e7f2d008b015d5453a1be88ae807b1f9b (patch)
tree2c0b7c2bf7c2441fd9979b13b69dfc709fa5171c /doc/rtd/topics/datasources/ec2.rst
parentfff37e7dc6849fd16db504b0d338fae20a7beb39 (diff)
downloadvyos-cloud-init-0bb4c74e7f2d008b015d5453a1be88ae807b1f9b.tar.gz
vyos-cloud-init-0bb4c74e7f2d008b015d5453a1be88ae807b1f9b.zip
EC2: Rewrite network config on AWS Classic instances every boot
AWS EC2 instances' network come in 2 basic flavors: Classic and VPC (Virtual Private Cloud). The former has an interesting behavior of having its MAC address changed whenever the instance is stopped/restarted. This behavior is not observed in VPC instances. In Ubuntu 18.04 (Bionic) the network "management" changed from ENI-style (etc/network/interfaces) to netplan, and when using netplan we observe the following block present in /etc/netplan/50-cloud-init.yaml: match: macaddress: aa:bb:cc:dd:ee:ff Jani Ollikainen noticed in Launchpad bug #1802073 that the EC2 Classic instances were booting without network access in Bionic after stop/restart procedure, due to their MAC address change behavior. It was narrowed down to the netplan MAC match block, that kept the old MAC address after stopping and restarting an instance, since the network configuration writing happens by default only once in EC2 instances, in the first boot. This patch changes the network configuration write to every boot in EC2 Classic instances, by checking against the "vpc-id" metadata information provided only in the VPC instances - if we don't have this metadata value, cloud-init will rewrite the network configuration file in every boot. This was tested in an EC2 Classic instance and proved to fix the issue; unit tests were also added for the new method is_classic_instance(). LP: #1802073 Reported-by: Jani Ollikainen <jani.ollikainen@ik.fi> Suggested-by: Ryan Harper <ryan.harper@canonical.com> Co-developed-by: Chad Smith <chad.smith@canonical.com> Signed-off-by: Guilherme G. Piccoli <gpiccoli@canonical.com>
Diffstat (limited to 'doc/rtd/topics/datasources/ec2.rst')
-rw-r--r--doc/rtd/topics/datasources/ec2.rst11
1 files changed, 11 insertions, 0 deletions
diff --git a/doc/rtd/topics/datasources/ec2.rst b/doc/rtd/topics/datasources/ec2.rst
index 64c325d8..76beca92 100644
--- a/doc/rtd/topics/datasources/ec2.rst
+++ b/doc/rtd/topics/datasources/ec2.rst
@@ -90,4 +90,15 @@ An example configuration with the default values is provided below:
max_wait: 120
timeout: 50
+Notes
+-----
+ * There are 2 types of EC2 instances network-wise: VPC ones (Virtual Private
+ Cloud) and Classic ones (also known as non-VPC). One major difference
+ between them is that Classic instances have their MAC address changed on
+ stop/restart operations, so cloud-init will recreate the network config
+ file for EC2 Classic instances every boot. On VPC instances this file is
+ generated only in the first boot of the instance.
+ The check for the instance type is performed by is_classic_instance()
+ method.
+
.. vi: textwidth=78