diff --git a/glean/cmd.py b/glean/cmd.py index eb58078..850f839 100644 --- a/glean/cmd.py +++ b/glean/cmd.py @@ -26,6 +26,7 @@ import subprocess import sys import time +from glean import install from glean import systemlock from glean import utils from glean._vendor import distro @@ -959,7 +960,10 @@ def write_debian_interfaces(interfaces, sys_interfaces, args): return files_to_write -def write_dns_info(dns_servers): +def write_dns_info(dns_servers, args): + # exit early if there are no DNS servers + if not dns_servers: + return {} # will fail on non-systemd systems (what we want) # will exit 1 if not enabled (what we want) # will exit 0 if enabled (or indirectly enabled) @@ -994,6 +998,12 @@ def write_dns_info(dns_servers): resolved_conf_fd.close() # add the config to files to be written resolve_confs['/etc/systemd/resolved.conf'] = resolved_conf_output + # make sure NetworkManager does not override our configuration + if args.use_nm: + install.install( + 'nm-no-resolv-handling.conf', + '/etc/NetworkManager/conf.d/nm-no-resolv-handling.conf', + mode='0644') return resolve_confs @@ -1383,7 +1393,7 @@ def write_network_info_from_config_drive(args, meta_data): dns = {} if not args.skip_dns: - dns = write_dns_info(get_dns_from_config_drive(network_info)) + dns = write_dns_info(get_dns_from_config_drive(network_info), args) interfaces = get_config_drive_interfaces(network_info) if 'meta' in meta_data and 'glean_ignore_interfaces' in meta_data['meta']: # Force DHCP to be used ignoring the interface information. diff --git a/glean/install.py b/glean/install.py index 722f471..f3e3837 100755 --- a/glean/install.py +++ b/glean/install.py @@ -152,12 +152,6 @@ def main(): '/etc/udev/rules.d/99-glean.rules', mode='0644') if args.use_nm: - # glean handles resolv.conf, so this turns off nm touching - # it - install('nm-no-resolv-handling.conf', - '/etc/NetworkManager/conf.d/nm-no-resolv-handling.conf', - mode='0644') - # NetworkManager has a "after" network-pre, and # glean@ services have a "before". However, if # udev has not yet triggered and started the glean