mirror of
https://github.com/kemko/nomad.git
synced 2026-01-05 18:05:42 +03:00
Merge pull request #11206 from hashicorp/b-gh-11202
client: task env vars should take precedence over host env vars.
This commit is contained in:
3
.changelog/11206.txt
Normal file
3
.changelog/11206.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
```release-note:bug
|
||||
client: Task vars should take precedence over host vars when performing interpolation.
|
||||
```
|
||||
@@ -551,9 +551,14 @@ func (b *Builder) buildEnv(allocDir, localDir, secretsDir string,
|
||||
envMap[hargs.ReplaceEnv(k, nodeAttrs, envMap)] = hargs.ReplaceEnv(v, nodeAttrs, envMap)
|
||||
}
|
||||
|
||||
// Interpolate and add environment variables
|
||||
// Interpolate and add environment variables from the host. Only do this if
|
||||
// the variable is not present in the map; we do not want to override task
|
||||
// variables in favour of the same variable found within the host OS env
|
||||
// vars.
|
||||
for k, v := range b.hostEnv {
|
||||
envMap[k] = hargs.ReplaceEnv(v, nodeAttrs, envMap)
|
||||
if _, ok := envMap[k]; !ok {
|
||||
envMap[k] = hargs.ReplaceEnv(v, nodeAttrs, envMap)
|
||||
}
|
||||
}
|
||||
|
||||
// Copy interpolated task env vars second as they override host env vars
|
||||
|
||||
@@ -299,6 +299,17 @@ func TestEnvironment_AllValues(t *testing.T) {
|
||||
&drivers.DriverNetwork{PortMap: map[string]int{"https": 443}},
|
||||
)
|
||||
|
||||
// Add a host environment variable which matches a task variable. It means
|
||||
// we can test to ensure the allocation ID variable from the task overrides
|
||||
// that found on the host. The second entry tests to ensure other host env
|
||||
// vars are added as expected.
|
||||
env.mu.Lock()
|
||||
env.hostEnv = map[string]string{
|
||||
AllocID: "94fa69a3-73a5-4099-85c3-7a1b6e228796",
|
||||
"LC_CTYPE": "C.UTF-8",
|
||||
}
|
||||
env.mu.Unlock()
|
||||
|
||||
values, errs, err := env.Build().AllValues()
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -385,6 +396,9 @@ func TestEnvironment_AllValues(t *testing.T) {
|
||||
"NOMAD_ALLOC_PORT_admin": "9000",
|
||||
"NOMAD_HOST_PORT_admin": "32000",
|
||||
|
||||
// Env vars from the host.
|
||||
"LC_CTYPE": "C.UTF-8",
|
||||
|
||||
// 0.9 style env map
|
||||
`env["taskEnvKey"]`: "taskEnvVal",
|
||||
`env["NOMAD_ADDR_http"]`: "127.0.0.1:80",
|
||||
|
||||
Reference in New Issue
Block a user