Skip to content

Commit

Permalink
Merge pull request #2695 from kmalec/add-selective-insecure-options
Browse files Browse the repository at this point in the history
Added insecure_options config list
  • Loading branch information
schmichael committed Jun 8, 2017
2 parents 67cd515 + 0c21187 commit 1d61afc
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 5 deletions.
20 changes: 16 additions & 4 deletions client/driver/rkt.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ type RktDriverConfig struct {
PortMapRaw []map[string]string `mapstructure:"port_map"` //
PortMap map[string]string `mapstructure:"-"` // A map of host port and the port name defined in the image manifest file
Volumes []string `mapstructure:"volumes"` // Host-Volumes to mount in, syntax: /path/to/host/directory:/destination/path/in/container
InsecureOptions []string `mapstructure:"insecure_options"` // list of args for --insecure-options

Debug bool `mapstructure:"debug"` // Enable debug option for rkt command
}
Expand Down Expand Up @@ -155,6 +156,9 @@ func (d *RktDriver) Validate(config map[string]interface{}) error {
"volumes": &fields.FieldSchema{
Type: fields.TypeArray,
},
"insecure_options": &fields.FieldSchema{
Type: fields.TypeArray,
},
},
}

Expand Down Expand Up @@ -262,6 +266,18 @@ func (d *RktDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, e
// Disble signature verification if the trust command was not run.
insecure = true
}

// if we have a selective insecure_options, prefer them
// insecure options are rkt's global argument, so we do this before the actual "run"
if len(driverConfig.InsecureOptions) > 0 {
cmdArgs = append(cmdArgs, fmt.Sprintf("--insecure-options=%s", strings.Join(driverConfig.InsecureOptions, ",")))
} else if insecure {
cmdArgs = append(cmdArgs, "--insecure-options=all")
}

// debug is rkt's global argument, so add it before the actual "run"
cmdArgs = append(cmdArgs, fmt.Sprintf("--debug=%t", debug))

cmdArgs = append(cmdArgs, "run")

// Write the UUID out to a file in the state dir so we can read it back
Expand Down Expand Up @@ -304,10 +320,6 @@ func (d *RktDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle, e
}

cmdArgs = append(cmdArgs, img)
if insecure {
cmdArgs = append(cmdArgs, "--insecure-options=all")
}
cmdArgs = append(cmdArgs, fmt.Sprintf("--debug=%t", debug))

// Inject environment variables
for k, v := range ctx.TaskEnv.Map() {
Expand Down
14 changes: 13 additions & 1 deletion website/source/docs/drivers/rkt.html.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,19 @@ The `rkt` driver supports the following configuration in the job spec:

* `trust_prefix` - (Optional) The trust prefix to be passed to rkt. Must be
reachable from the box running the nomad agent. If not specified, the image is
run without verifying the image signature.
run with `--insecure-options=all`.

* `insecure_options` - (Optional) List of insecure options for rkt. Consult `rkt --help`
for list of supported values. This list overrides the `--insecure-options=all` default when
no ```trust_prefix``` is provided in the job config, which can be effectively used to enforce
secure runs, using ```insecure_options = ["none"]``` option.

```hcl
config {
image = "example.com/image:1.0"
insecure_options = ["image", "tls", "ondisk"]
}
```

* `dns_servers` - (Optional) A list of DNS servers to be used in the container.
Alternatively a list containing just `host` or `none`. `host` uses the host's
Expand Down

0 comments on commit 1d61afc

Please sign in to comment.