【发布时间】:2019-03-27 15:46:30
【问题描述】:
这不是空间 VS。标签问题。
我正在编写一些 Make 目标来依次运行 Terraform 和 Helm,并且我需要捕获部分 Terraform 输出以传递给后续的 Helm 目标。这是我到目前为止所得到的:
TF := terraform
RND_ENV := deployment/envs/rnd
RND_PLAN := tfplan-rnd.out
RND_APPLY := tfapply-rnd.out
.PHONY: init-rnd plan-rnd apply-rnd deploy-rnd
init-rnd:
@$(TF) init $(RND_ENV)
plan-rnd: init-rnd
@$(TF) plan -out=$(RND_PLAN) $(RND_ENV)
apply-rnd: plan-rnd
$(TF) apply -no-color $(RND_PLAN) | tee $(RND_APPLY)
$(shell grep my_output_var $(RND_APPLY) | awk '{print $$3}' > .my_output_var)
@rm $(RND_APPLY)
# ...further steps omitted...
再一次,我可以向您保证,我在 Makefile 中使用的是 TABS 而不是 SPACES。我已经检查并仔细检查了。但是,当我运行make apply-rnd 时,它成功运行init-rnd 目标,成功运行plan-rnd 目标,但随后在该目标的第一行中断并显示以下消息:
Makefile:15: *** 缺少分隔符。停下来。
我假设它与管道有关?或者也许是变量的使用?
无论如何,当我在 Bash 中手动运行这些命令时,这些相同的命令仍然有效......我只需要让它们在这个 Makefile 中工作。
【问题讨论】:
标签: makefile