Add glob parsing for --env flag

Sometimes you want to add a few environmen variables based on the last field being a "*".

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
Daniel J Walsh
2019-07-11 13:39:31 -04:00
parent df75fc62c8
commit efe9c5b0e7
3 changed files with 32 additions and 15 deletions

View File

@ -112,9 +112,22 @@ func parseEnv(env map[string]string, line string) error {
if len(data) > 1 {
env[name] = data[1]
} else {
// if only a pass-through variable is given, clean it up.
val, _ := os.LookupEnv(name)
env[name] = val
if strings.HasSuffix(name, "*") {
name = strings.TrimSuffix(name, "*")
for _, e := range os.Environ() {
part := strings.SplitN(e, "=", 2)
if len(part) < 2 {
continue
}
if strings.HasPrefix(part[0], name) {
env[part[0]] = part[1]
}
}
} else {
// if only a pass-through variable is given, clean it up.
val, _ := os.LookupEnv(name)
env[name] = val
}
}
return nil
}

View File

@ -245,7 +245,9 @@ You need to specify multi option commands in the form of a json string.
Set environment variables
This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container. If you specify a environment variable without a value, podman will check the host environment for a value or set the environment to "". See **Environment** note below for precedence.
This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container. If you specify a environment variable without a value, podman will check the host environment for a value or set the environment to "". If you specify a environment variable ending in --*--, podman will search the host environment for variables starting with the prefix and add them to the container. If you want to add an environment variable with a ***** following it, then you need to set a value.
See **Environment** note below for precedence.
**--env-host**=*true|false*
@ -905,16 +907,16 @@ required for VPN, without it containers need to be run with the --net=host flag.
## ENVIRONMENT
Environment variables within containers can be set using multiple different options: This section describes the presidence.
Environment variables within containers can be set using multiple different options: This section describes the precedence.
Presidence Order:
Precedence Order:
**--env-host** : Host environment of the process executing podman is added.
Container image : Any enviroment variables specified in the contianer image.
Container image : Any enviroment variables specified in the container image.
**--env-file** : Any environment variables specfied via env-files. If multiple files specified, then they override each other in order of entry.
**--env-file** : Any environment variables specified via env-files. If multiple files specified, then they override each other in order of entry.
**--env** : Any environment variables specified will overide previous settings.
**--env** : Any environment variables specified will override previous settings.
## FILES

View File

@ -252,7 +252,9 @@ You need to specify multi option commands in the form of a json string.
Set environment variables
This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container. If you specify a environment variable without a value, podman will check the host environment for a value or set the environment to "". See **Environment** note below for precedence.
This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container. If you specify a environment variable without a value, podman will check the host environment for a value or set the environment to "". If you specify a environment variable ending in --*--, podman will search the host environment for variables starting with the prefix and add them to the container. If you want to add an environment variable with a ***** following it, then you need to set a value.
See **Environment** note below for precedence.
**--env-host**=*true|false*
@ -1189,17 +1191,17 @@ required for VPN, without it containers need to be run with the --net=host flag.
## ENVIRONMENT
Environment variables within containers can be set using multiple different options: This section describes the presidence.
Environment variables within containers can be set using multiple different options: This section describes the precedence.
Presidence Order:
Precedence Order:
**--env-host** : Host environment of the process executing podman is added.
Container image : Any enviroment variables specified in the contianer image.
Container image : Any enviroment variables specified in the container image.
**--env-file** : Any environment variables specfied via env-files. If multiple files specified, then they override each other in order of entry.
**--env-file** : Any environment variables specified via env-files. If multiple files specified, then they override each other in order of entry.
**--env** : Any environment variables specified will overide previous settings.
**--env** : Any environment variables specified will override previous settings.
## FILES