diff options
author | Chad Smith <chad.smith@canonical.com> | 2018-04-18 15:22:42 -0600 |
---|---|---|
committer | Chad Smith <chad.smith@canonical.com> | 2018-04-18 15:22:42 -0600 |
commit | 6d48d265a0548a2dc23e587f2a335d4e38e8db90 (patch) | |
tree | 897e919ba57771d1faf299d61a2e87a4f46120ea /cloudinit/config/cc_disable_ec2_metadata.py | |
parent | 4c573d0e0173d2b1e99a383c54a0a6c957aa1cbb (diff) | |
download | vyos-cloud-init-6d48d265a0548a2dc23e587f2a335d4e38e8db90.tar.gz vyos-cloud-init-6d48d265a0548a2dc23e587f2a335d4e38e8db90.zip |
net: Depend on iproute2's ip instead of net-tools ifconfig or route
The net-tools package is deprecated and will eventually be dropped. Use
"ip route", "link" or "address" instead of "ifconfig" or "route" calls.
Cloud-init can now run in an environment that no longer has net-tools.
This affects the network and route printing emitted to
cloud-config-output.log as well as the cc_disable_ec2_metadata module.
Additional changes:
- separate readResource and resourceLocation into standalone test
functions
- Fix ipv4 address rows to report scopes represented by ip addr show
- Formatted route/address ouput now handles multiple ipv4 and ipv6
addresses on a single interface
Co-authored-by: James Hogarth <james.hogarth@gmail.com>
Co-authored-by: Robert Schweikert <rjschwei@suse.com>
Diffstat (limited to 'cloudinit/config/cc_disable_ec2_metadata.py')
-rw-r--r-- | cloudinit/config/cc_disable_ec2_metadata.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/cloudinit/config/cc_disable_ec2_metadata.py b/cloudinit/config/cc_disable_ec2_metadata.py index c56319b5..885b3138 100644 --- a/cloudinit/config/cc_disable_ec2_metadata.py +++ b/cloudinit/config/cc_disable_ec2_metadata.py @@ -32,13 +32,23 @@ from cloudinit.settings import PER_ALWAYS frequency = PER_ALWAYS -REJECT_CMD = ['route', 'add', '-host', '169.254.169.254', 'reject'] +REJECT_CMD_IF = ['route', 'add', '-host', '169.254.169.254', 'reject'] +REJECT_CMD_IP = ['ip', 'route', 'add', 'prohibit', '169.254.169.254'] def handle(name, cfg, _cloud, log, _args): disabled = util.get_cfg_option_bool(cfg, "disable_ec2_metadata", False) if disabled: - util.subp(REJECT_CMD, capture=False) + reject_cmd = None + if util.which('ip'): + reject_cmd = REJECT_CMD_IP + elif util.which('ifconfig'): + reject_cmd = REJECT_CMD_IF + else: + log.error(('Neither "route" nor "ip" command found, unable to ' + 'manipulate routing table')) + return + util.subp(reject_cmd, capture=False) else: log.debug(("Skipping module named %s," " disabling the ec2 route not enabled"), name) |