aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2022-11-29 13:14:34 +0100
committerAlex Auvolat <alex@adnab.me>2022-11-29 13:14:34 +0100
commit2a8db433c2eb7fd96b27d6d3393b632dce9f44b0 (patch)
tree18d12ced89052a0bc9228be33635d7b14253ee4e
parentfa49c13513ae5ab66157c634de244fdcf0a6cc1d (diff)
downloadnomad-driver-nix2-2a8db433c2eb7fd96b27d6d3393b632dce9f44b0.tar.gz
nomad-driver-nix2-2a8db433c2eb7fd96b27d6d3393b632dce9f44b0.zip
Allow outside world DNS configuration to be used
-rw-r--r--example/example-service.hcl1
-rw-r--r--nix2/driver.go16
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