VultrのVPSでDHCPで割り当てられるDNSリゾルバの動作が怪しいので、8.8.8.8(Google Public DNS)をフォールバックとして利用します。

ポイント

RancherOSの/etc/resolv.confはシステムDockerのnetworkコンテナ内部でdhcpcdが自動生成しています。よって、networkコンテナ内に/etc/resolv.conf.tailを置くことでdhcpcdの自動生成時に取り込まれ、生成された/etc/resolv.confをホストがbindして参照します。

手順

RancherOSなのでros config set ~とするか、cloud-config.ymlを書いてros config merge -i cloud-config.ymlで取り込みます。こうしないとOS再起動時に消滅してしまいます。今回はwrite_filesでファイルを登録するので、後者で行ったほうが良いです。

hostname: xxxxxx
rancher: xxxxx
...(snip)...
write_files:
  - container: network
    path: /etc/resolv.conf.tail
    permissions: "0644"
    owner: root
    content: |
      nameserver 8.8.8.8

/etc/resolv.conf.tailはnetworkコンテナ内に置かなくてはならないので、container: networkの指定が必要です。

このファイルをRancherOSに取り込み、networkコンテナを再起動すると/etc/resolv.confの内容が差し替えられます。

$ sudo ros config merge -i cloud-config.yml
$ sudo system-docker restart network

以上です。