diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fe2005435eb..bac9c3f5a01d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## 0.5.1 (Unreleased) +IMPROVEMENTS: + * driver/rkt: Support rkt's `--dns=host` and `--dns=none` options [GH-2028] + BUG FIXES: * agent/config: Fix use of IPv6 addresses [GH-2036] * driver/rkt: Fix validation of rkt volumes [GH-2027] diff --git a/client/driver/rkt.go b/client/driver/rkt.go index 91df6e9cd125..8e100dd3c631 100644 --- a/client/driver/rkt.go +++ b/client/driver/rkt.go @@ -309,13 +309,18 @@ func (d *RktDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, e cmdArgs = append(cmdArgs, fmt.Sprintf("--cpu=%vm", int64(task.Resources.CPU))) // Add DNS servers - for _, ip := range driverConfig.DNSServers { - if err := net.ParseIP(ip); err == nil { - msg := fmt.Errorf("invalid ip address for container dns server %q", ip) - d.logger.Printf("[DEBUG] driver.rkt: %v", msg) - return nil, msg - } else { - cmdArgs = append(cmdArgs, fmt.Sprintf("--dns=%s", ip)) + if len(driverConfig.DNSServers) == 1 && (driverConfig.DNSServers[0] == "host" || driverConfig.DNSServers[0] == "none") { + // Special case single item lists with the special values "host" or "none" + cmdArgs = append(cmdArgs, fmt.Sprintf("--dns=%s", driverConfig.DNSServers[0])) + } else { + for _, ip := range driverConfig.DNSServers { + if err := net.ParseIP(ip); err == nil { + msg := fmt.Errorf("invalid ip address for container dns server %q", ip) + d.logger.Printf("[DEBUG] driver.rkt: %v", msg) + return nil, msg + } else { + cmdArgs = append(cmdArgs, fmt.Sprintf("--dns=%s", ip)) + } } }