Merge pull request #139 from int128/inline-values
Inline values support
This commit is contained in:
		
						commit
						fb781be560
					
				
							
								
								
									
										12
									
								
								README.md
								
								
								
								
							
							
						
						
									
										12
									
								
								README.md
								
								
								
								
							|  | @ -45,7 +45,11 @@ releases: | ||||||
|       foo: bar |       foo: bar | ||||||
|     chart: roboll/vault-secret-manager     # the chart being installed to create this release, referenced by `repository/chart` syntax |     chart: roboll/vault-secret-manager     # the chart being installed to create this release, referenced by `repository/chart` syntax | ||||||
|     version: ~1.24.1                       # the semver of the chart. range constraint is supported |     version: ~1.24.1                       # the semver of the chart. range constraint is supported | ||||||
|     values: [ vault.yaml ]                 # value files (--values) |     values: | ||||||
|  |       - vault.yaml                         # value files (--values) | ||||||
|  |       - db:                                # inline values. Passed via a temporary values file (--values) | ||||||
|  |           username: {{ requiredEnv "DB_USERNAME" }} | ||||||
|  |           password: {{ requiredEnv "DB_PASSWORD" }} | ||||||
|     secrets: |     secrets: | ||||||
|       - vault_secret.yaml                  # will attempt to decrypt it using helm-secrets plugin |       - vault_secret.yaml                  # will attempt to decrypt it using helm-secrets plugin | ||||||
|     set:                                   # values (--set) |     set:                                   # values (--set) | ||||||
|  | @ -78,7 +82,7 @@ If the environment variable is unset or empty, the template rendering will fail | ||||||
| 
 | 
 | ||||||
| ## Using environment variables | ## Using environment variables | ||||||
| 
 | 
 | ||||||
| Environment variables can be used in most places for templating the helmfile. Currently this is supported for `name`, `namespace`, `value` (in set) and `url` (in repositories). | Environment variables can be used in most places for templating the helmfile. Currently this is supported for `name`, `namespace`, `value` (in set), `values` and `url` (in repositories). | ||||||
| 
 | 
 | ||||||
| Examples: | Examples: | ||||||
| 
 | 
 | ||||||
|  | @ -93,6 +97,10 @@ releases: | ||||||
|   - name: {{ requiredEnv "NAME" }}-vault |   - name: {{ requiredEnv "NAME" }}-vault | ||||||
|     namespace: {{ requiredEnv "NAME" }} |     namespace: {{ requiredEnv "NAME" }} | ||||||
|     chart: roboll/vault-secret-manager |     chart: roboll/vault-secret-manager | ||||||
|  |     values: | ||||||
|  |       - db: | ||||||
|  |           username: {{ requiredEnv "DB_USERNAME" }} | ||||||
|  |           password: {{ requiredEnv "DB_PASSWORD" }} | ||||||
|     set: |     set: | ||||||
|       - name: proxy.domain |       - name: proxy.domain | ||||||
|         value: {{ requiredEnv "PLATFORM_ID" }}.my-domain.com |         value: {{ requiredEnv "PLATFORM_ID" }}.my-domain.com | ||||||
|  |  | ||||||
|  | @ -49,7 +49,7 @@ type ReleaseSpec struct { | ||||||
| 	Name      string            `yaml:"name"` | 	Name      string            `yaml:"name"` | ||||||
| 	Namespace string            `yaml:"namespace"` | 	Namespace string            `yaml:"namespace"` | ||||||
| 	Labels    map[string]string `yaml:"labels"` | 	Labels    map[string]string `yaml:"labels"` | ||||||
| 	Values    []string          `yaml:"values"` | 	Values    []interface{}     `yaml:"values"` | ||||||
| 	Secrets   []string          `yaml:"secrets"` | 	Secrets   []string          `yaml:"secrets"` | ||||||
| 	SetValues []SetValue        `yaml:"set"` | 	SetValues []SetValue        `yaml:"set"` | ||||||
| 
 | 
 | ||||||
|  | @ -479,12 +479,28 @@ func flagsForRelease(helm helmexec.Interface, basePath string, release *ReleaseS | ||||||
| 		flags = append(flags, "--namespace", release.Namespace) | 		flags = append(flags, "--namespace", release.Namespace) | ||||||
| 	} | 	} | ||||||
| 	for _, value := range release.Values { | 	for _, value := range release.Values { | ||||||
| 		path := filepath.Join(basePath, value) | 		switch typedValue := value.(type) { | ||||||
| 		if _, err := os.Stat(path); os.IsNotExist(err) { | 		case string: | ||||||
| 			return nil, err | 			path := filepath.Join(basePath, typedValue) | ||||||
| 		} | 			if _, err := os.Stat(path); os.IsNotExist(err) { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			flags = append(flags, "--values", path) | ||||||
| 
 | 
 | ||||||
| 		flags = append(flags, "--values", path) | 		case map[interface{}]interface{}: | ||||||
|  | 			valfile, err := ioutil.TempFile("", "values") | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			defer valfile.Close() | ||||||
|  | 			encoder := yaml.NewEncoder(valfile) | ||||||
|  | 			defer encoder.Close() | ||||||
|  | 			if err := encoder.Encode(typedValue); err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			release.generatedValues = append(release.generatedValues, valfile.Name()) | ||||||
|  | 			flags = append(flags, "--values", valfile.Name()) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	for _, value := range release.Secrets { | 	for _, value := range release.Secrets { | ||||||
| 		path := filepath.Join(basePath, value) | 		path := filepath.Join(basePath, value) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue