使用cloud-init更改resolv.conf

GAU*_*ARG 6 nameservers openstack cloud-init

我希望我的 openstack 设置能够正常工作,以便当我启动新实例时,8.8.8.8 应添加到 dns-nameservers 中。

这是我的旧 /etc/resolv.conf (在 openstack 中生成的新虚拟机中)-

nameserver 10.0.0.2
search openstacklocal
Run Code Online (Sandbox Code Playgroud)

这是我想要的新 resolv.conf -

nameserver 8.8.8.8
nameserver 10.0.0.2
search openstacklocal
Run Code Online (Sandbox Code Playgroud)

我遵循了教程,并添加了必要的信息。resolv conf 到我的 cloud-init 的配置文件(/etc/cloud/cloud.cfg) -

manage_resolv_conf: true

resolv_conf:
  nameservers: ['8.8.4.4', '8.8.8.8']
  searchdomains:
    - foo.example.com
    - bar.example.com
  domain: example.com
  options:
    rotate: true
    timeout: 1
Run Code Online (Sandbox Code Playgroud)

这些更改是在 openstack 主机的 /etc/cloud/cloud.cfg 文件中进行的。然而,这些变化似乎并没有得到体现。

有什么建议么?

小智 2

它不会工作,因为 cloud-init 网络配置在启动过程中发生得太早。

请参阅 cloud-init 阶段:https://cloudinit.readthedocs.io/en/latest/topics/boot.html

网络配置是在“Local”阶段完成的,但来自 Openstack 的用户数据仅在网络启动后的“Config”阶段下载。在此阶段,网络配置将被忽略。

相反,您需要编辑网络文件,然后通过使用runcmd.