>> Would it also work with >> >>auto eth0 >>iface eth0 inet dhcp >>dns-nameservers X.X.X.X yes it should work >>Where can I read more about this ? Well, cloud-init doc is pretty poor. I have digged inside cloud-init git ;) https://github.com/number5/cloud-init/blob/74e61ab27addbfcceac4eba254f739ef9964b0ed/cloudinit/sources/DataSourceConfigDrive.py def on_first_boot(data, distro=None): """Performs any first-boot actions using data read from a config-drive.""" if not isinstance(data, dict): raise TypeError("Config-drive data expected to be a dict; not %s" % (type(data))) net_conf = data.get("network_config", '') if net_conf and distro: LOG.debug("Updating network interfaces from config drive") distro.apply_network(net_conf) then https://github.com/number5/cloud-init/blob/74e61ab27addbfcceac4eba254f739ef9964b0ed/cloudinit/distros/__init__.py def apply_network(self, settings, bring_up=True): # Write it out dev_names = self._write_network(settings) debian (simply write the /etc/network/interfaces) ------------------------------------------------- https://github.com/number5/cloud-init/blob/74e61ab27addbfcceac4eba254f739ef9964b0ed/cloudinit/distros/debian.py def _write_network(self, settings): util.write_file(self.network_conf_fn, settings) return ['all'] redhat (translate to redhat network conf file and resolv.conf) ------------------------------------------------------------------ https://github.com/number5/cloud-init/blob/74e61ab27addbfcceac4eba254f739ef9964b0ed/cloudinit/distros/rhel.py def _write_network(self, settings): # TODO(harlowja) fix this... since this is the ubuntu format entries = net_util.translate_network(settings) LOG.debug("Translated ubuntu style network settings %s into %s", settings, entries) # Make the intermediate format as the rhel format... nameservers = [] searchservers = [] dev_names = entries.keys() use_ipv6 = False for (dev, info) in entries.items(): net_fn = self.network_script_tpl % (dev) net_cfg = { 'DEVICE': dev, 'NETMASK': info.get('netmask'), 'IPADDR': info.get('address'), 'BOOTPROTO': info.get('bootproto'), 'GATEWAY': info.get('gateway'), 'BROADCAST': info.get('broadcast'), 'MACADDR': info.get('hwaddress'), 'ONBOOT': _make_sysconfig_bool(info.get('auto')), } if info.get('inet6'): use_ipv6 = True net_cfg.update({ 'IPV6INIT': _make_sysconfig_bool(True), 'IPV6ADDR': info.get('ipv6').get('address'), 'IPV6_DEFAULTGW': info.get('ipv6').get('gateway'), }) rhel_util.update_sysconfig_file(net_fn, net_cfg) if 'dns-nameservers' in info: nameservers.extend(info['dns-nameservers']) if 'dns-search' in info: searchservers.extend(info['dns-search']) if nameservers or searchservers: rhel_util.update_resolve_conf_file(self.resolve_conf_fn, nameservers, searchservers) if dev_names: net_cfg = { 'NETWORKING': _make_sysconfig_bool(True), } # If IPv6 interface present, enable ipv6 networking if use_ipv6: net_cfg['NETWORKING_IPV6'] = _make_sysconfig_bool(True) net_cfg['IPV6_AUTOCONF'] = _make_sysconfig_bool(False) rhel_util.update_sysconfig_file(self.network_conf_fn, net_cfg) return dev_names ----- Mail original ----- De: "Loic Dachary" <loic@xxxxxxxxxxx> À: "aderumier" <aderumier@xxxxxxxxx> Cc: "ceph-devel" <ceph-devel@xxxxxxxxxxxxxxx> Envoyé: Vendredi 12 Juin 2015 09:17:47 Objet: Re: cloud-init resolv.conf updates Hi Alexandre, That's an interesting trick :-) Would it also work with auto eth0 iface eth0 inet dhcp dns-nameservers X.X.X.X Where can I read more about this ? Cheers On 12/06/2015 07:01, Alexandre DERUMIER wrote: > Hi Loic, > > I'm always playing with cloudinit currently, > and I never can get working resolv_conf module too (with configdrive datasource) > > > Finaly, I manage it with this configdrive: > > /latest/meta_data.json > { > "uuid": "c5240fed-76a8-48d9-b417-45b46599d999", > "network_config" :{ "content_path": "/content/0000"} > } > > /content/0000 > > auto eth0 > iface eth0 inet static > address x.X.X.X > netmask 255.255.255.0 > gateway X.X.X.X > dns-nameservers X.X.X.X > dns-search mydomain > > > The config is at debian format, but each cloud-init agent on different os parse it, > and transform it to correct distro format. (/sysconfig/.. for redhat). > > > > ----- Mail original ----- > De: "Loic Dachary" <loic@xxxxxxxxxxx> > À: "Mehdi Abaakouk" <sileht@xxxxxxxxxx> > Cc: "ceph-devel" <ceph-devel@xxxxxxxxxxxxxxx> > Envoyé: Jeudi 11 Juin 2015 23:37:39 > Objet: cloud-init resolv.conf updates > > Hi Mehdi, > > I tried to > > manage_resolv_conf: true > > resolv_conf: > nameservers: ['8.8.4.4', '8.8.8.8'] > > but did not get any result and according to /var/log/cloud-init.log it does not seem to be taken into account. > > It looks like this is still an open issue according to > > https://answers.launchpad.net/ubuntu/+source/cloud-init/+question/234041 > https://bugs.launchpad.net/cloud-init/+bug/1394061 > > even when you get past the misleading example that spells manage-resolv-conf instead of manag_resolv_conf at > > http://cloudinit.readthedocs.org/en/stable/topics/examples.html#configure-an-instances-resolv-conf > > It looks like there would be a need to add > > cloud_config_modules: > - resolv_conf > > according to http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/view/head:/doc/examples/cloud-config.txt#L300 but I don't know which modules I need and which are optional and if the list is going to be merged with the default or override. > > so I ended up doing: > > #cloud-config > bootcmd: > - echo "nameserver 10.0.3.31" | sudo tee -a /etc/resolvconf/resolv.conf.d/head > - sudo resolvconf -u > > Which works for Ubuntu 14.04 but isn't going to work for every operating system ;-) > > I'm sure you faced something similar in the past and I'd very much appreciate a pointer in the right direction. > > Cheers > -- Loïc Dachary, Artisan Logiciel Libre -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html