diff --git a/command/job_plan.go b/command/job_plan.go index ff0fe9aeb..1872d3dfd 100644 --- a/command/job_plan.go +++ b/command/job_plan.go @@ -79,6 +79,12 @@ Plan Options: -policy-override Sets the flag to force override any soft mandatory Sentinel policies. + -var 'key=value' + Variable for template, can be used multiple times. + + -var-file=path + Path to HCL2 file containing user variables. + -verbose Increase diff verbosity. ` @@ -97,6 +103,7 @@ func (c *JobPlanCommand) AutocompleteFlags() complete.Flags { "-verbose": complete.PredictNothing, "-hcl1": complete.PredictNothing, "-var": complete.PredictAnything, + "-var-file": complete.PredictFiles("*.var"), }) } @@ -107,7 +114,7 @@ func (c *JobPlanCommand) AutocompleteArgs() complete.Predictor { func (c *JobPlanCommand) Name() string { return "job plan" } func (c *JobPlanCommand) Run(args []string) int { var diff, policyOverride, verbose bool - var varArgs cflags.AppendSliceValue + var varArgs, varFiles cflags.AppendSliceValue flags := c.Meta.FlagSet(c.Name(), FlagSetClient) flags.Usage = func() { c.Ui.Output(c.Help()) } @@ -116,6 +123,7 @@ func (c *JobPlanCommand) Run(args []string) int { flags.BoolVar(&verbose, "verbose", false, "") flags.BoolVar(&c.JobGetter.hcl1, "hcl1", false, "") flags.Var(&varArgs, "var", "") + flags.Var(&varFiles, "var-file", "") if err := flags.Parse(args); err != nil { return 255 @@ -131,7 +139,7 @@ func (c *JobPlanCommand) Run(args []string) int { path := args[0] // Get Job struct from Jobfile - job, err := c.JobGetter.ApiJobWithArgs(args[0], parseVars(varArgs)) + job, err := c.JobGetter.ApiJobWithArgs(args[0], varArgs, varFiles) if err != nil { c.Ui.Error(fmt.Sprintf("Error getting job struct: %s", err)) return 255 diff --git a/command/job_run.go b/command/job_run.go index f97912445..b10d5d04c 100644 --- a/command/job_run.go +++ b/command/job_run.go @@ -109,6 +109,12 @@ Run Options: If set, the passed Vault namespace is stored in the job before sending to the Nomad servers. + -var 'key=value' + Variable for template, can be used multiple times. + + -var-file=path + Path to HCL2 file containing user variables. + -verbose Display full information. ` @@ -133,6 +139,7 @@ func (c *JobRunCommand) AutocompleteFlags() complete.Flags { "-preserve-counts": complete.PredictNothing, "-hcl1": complete.PredictNothing, "-var": complete.PredictAnything, + "-var-file": complete.PredictFiles("*.var"), }) } @@ -145,7 +152,7 @@ func (c *JobRunCommand) Name() string { return "job run" } func (c *JobRunCommand) Run(args []string) int { var detach, verbose, output, override, preserveCounts bool var checkIndexStr, consulToken, vaultToken, vaultNamespace string - var varArgs cflags.AppendSliceValue + var varArgs, varFiles cflags.AppendSliceValue flags := c.Meta.FlagSet(c.Name(), FlagSetClient) flags.Usage = func() { c.Ui.Output(c.Help()) } @@ -160,6 +167,7 @@ func (c *JobRunCommand) Run(args []string) int { flags.StringVar(&vaultToken, "vault-token", "", "") flags.StringVar(&vaultNamespace, "vault-namespace", "", "") flags.Var(&varArgs, "var", "") + flags.Var(&varFiles, "var-file", "") if err := flags.Parse(args); err != nil { return 1 @@ -180,7 +188,7 @@ func (c *JobRunCommand) Run(args []string) int { } // Get Job struct from Jobfile - job, err := c.JobGetter.ApiJobWithArgs(args[0], parseVars(varArgs)) + job, err := c.JobGetter.ApiJobWithArgs(args[0], varArgs, varFiles) if err != nil { c.Ui.Error(fmt.Sprintf("Error getting job struct: %s", err)) return 1 diff --git a/command/job_validate.go b/command/job_validate.go index a52c24cc5..658549967 100644 --- a/command/job_validate.go +++ b/command/job_validate.go @@ -33,6 +33,13 @@ Validate Options: -hcl1 Parses the job file as HCLv1. + + -var 'key=value' + Variable for template, can be used multiple times. + + -var-file=path + Path to HCL2 file containing user variables. + ` return strings.TrimSpace(helpText) } @@ -43,8 +50,9 @@ func (c *JobValidateCommand) Synopsis() string { func (c *JobValidateCommand) AutocompleteFlags() complete.Flags { return complete.Flags{ - "-hcl1": complete.PredictNothing, - "-var": complete.PredictAnything, + "-hcl1": complete.PredictNothing, + "-var": complete.PredictAnything, + "-var-file": complete.PredictFiles("*.var"), } } @@ -55,12 +63,13 @@ func (c *JobValidateCommand) AutocompleteArgs() complete.Predictor { func (c *JobValidateCommand) Name() string { return "job validate" } func (c *JobValidateCommand) Run(args []string) int { - var varArgs cflags.AppendSliceValue + var varArgs, varFiles cflags.AppendSliceValue flags := c.Meta.FlagSet(c.Name(), FlagSetNone) flags.Usage = func() { c.Ui.Output(c.Help()) } flags.BoolVar(&c.JobGetter.hcl1, "hcl1", false, "") flags.Var(&varArgs, "var", "") + flags.Var(&varFiles, "var-file", "") if err := flags.Parse(args); err != nil { return 1 @@ -75,7 +84,7 @@ func (c *JobValidateCommand) Run(args []string) int { } // Get Job struct from Jobfile - job, err := c.JobGetter.ApiJobWithArgs(args[0], parseVars(varArgs)) + job, err := c.JobGetter.ApiJobWithArgs(args[0], varArgs, varFiles) if err != nil { c.Ui.Error(fmt.Sprintf("Error getting job struct: %s", err)) return 1