diff options
author | Alex Auvolat <alex@adnab.me> | 2022-11-29 13:14:34 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2022-11-29 13:14:34 +0100 |
commit | 2a8db433c2eb7fd96b27d6d3393b632dce9f44b0 (patch) | |
tree | 18d12ced89052a0bc9228be33635d7b14253ee4e | |
parent | fa49c13513ae5ab66157c634de244fdcf0a6cc1d (diff) | |
download | nomad-driver-nix2-2a8db433c2eb7fd96b27d6d3393b632dce9f44b0.tar.gz nomad-driver-nix2-2a8db433c2eb7fd96b27d6d3393b632dce9f44b0.zip |
Allow outside world DNS configuration to be used
-rw-r--r-- | example/example-service.hcl | 1 | ||||
-rw-r--r-- | nix2/driver.go | 16 |
2 files changed, 15 insertions, 2 deletions
diff --git a/example/example-service.hcl b/example/example-service.hcl index 18dde44..03ba0d3 100644 --- a/example/example-service.hcl +++ b/example/example-service.hcl @@ -22,6 +22,7 @@ job "nix2-example-service" { "cacert", "strace", "gnugrep", + "findutils", "mount", ] command = "python3" diff --git a/nix2/driver.go b/nix2/driver.go index 610baab..17d00e8 100644 --- a/nix2/driver.go +++ b/nix2/driver.go @@ -16,6 +16,7 @@ import ( "github.com/hashicorp/nomad/client/lib/cgutil" "github.com/hashicorp/nomad/drivers/shared/capabilities" "github.com/hashicorp/nomad/drivers/shared/eventer" + "github.com/hashicorp/nomad/drivers/shared/resolvconf" "github.com/hashicorp/nomad/helper/pluginutils/hclutils" "github.com/hashicorp/nomad/helper/pluginutils/loader" "github.com/hashicorp/nomad/helper/pointer" @@ -537,10 +538,21 @@ func (d *Driver) StartTask(cfg *drivers.TaskConfig) (*drivers.TaskHandle, *drive // Some files are necessary and should be taken from outside if not present already etcpaths := []string{ - "/etc/nsswitch.conf", // Necessary for most things + "/etc/nsswitch.conf", // Necessary for many things "/etc/passwd", // Necessary for username/UID lookup - "/etc/resolv.conf", // Necessary for DNS resolution } + + if cfg.DNS != nil { + dnsMount, err := resolvconf.GenerateDNSMount(cfg.TaskDir().Dir, cfg.DNS) + if err != nil { + return nil, nil, fmt.Errorf("failed to build mount for resolv.conf: %v", err) + } + cfg.Mounts = append(cfg.Mounts, dnsMount) + } else { + // Inherit nameserver configuration from host + etcpaths = append(etcpaths, "/etc/resolv.conf") + } + for _, f := range etcpaths { if _, ok := systemMounts[f]; !ok { systemMounts[f] = f |