cannot use 'terraform.apply' with a plan file after Terraform 1.0
Thank you for the fork of python-terraform, dda-python-terraform has been instrumental in helping us move from Terraform 0.13 to 1.0.
Our process is to generate a .plan
file with terraform plan -out out.plan
, review it with terraform show out.plan
and then execute it with terraform apply out.plan
.
After upgrading from 0.15 to 1.0, this bit of logic: https://gitlab.com/domaindrivenarchitecture/dda-python-terraform/-/blob/master/dda_python_terraform/terraform.py?ref_type=heads#L464-468
Generates a command like:
terraform -chdir=out.plan apply -no-color -input=false -auto-approve=true
And dies with:
Error handling -chdir option: chdir out.plan: not a directory
The full output:
INFO - dda_python_terraform.terraform - Command: /path/to/builder/.tfenv/bin/terraform -chdir=out.plan apply -no-color -input=false -auto-approve=true
Error handling -chdir option: chdir out.plan: not a directory
INFO - dda_python_terraform.terraform - output: None
WARNING - dda_python_terraform.terraform - error: None
ERROR - dda_python_terraform.terraform - Error with command /path/to/builder/.tfenv/bin/terraform -chdir=out.plan apply -no-color -input=false -auto-approve=true. Reason: None
exception while executing task 'update_infrastructure': Command '/path/to/builder/.tfenv/bin/terraform -chdir=out.plan apply -no-color -input=false -auto-approve=true' returned non-zero exit status 1.
Traceback (most recent call last):
File "src/taskrunner.py", line 281, in exec_task
return_map['result'] = task_map['fn'](*task_args, **task_kwargs)
File "/path/to/builder/src/decorators.py", line 19, in wrap
result = fn(*args, **kw)
File "/path/to/builder/src/cfn.py", line 96, in update_infrastructure
terraform.update_template(stackname)
File "/path/to/builder/src/buildercore/terraform.py", line 1619, in update_template
update(stackname, context)
File "/path/to/builder/src/buildercore/context_handler.py", line 113, in decorated_with_only_if
return fn(stackname, context, **kwargs)
File "/path/to/builder/src/buildercore/terraform.py", line 1614, in update
terraform.apply('out.plan', skip_plan=True, input=False, capture_output=False, raise_on_error=True)
File "/path/to/builder/venv/lib/python3.8/site-packages/dda_python_terraform/terraform.py", line 121, in apply
return self.cmd(global_opts, "apply", *args, **option_dict)
File "/path/to/builder/venv/lib/python3.8/site-packages/dda_python_terraform/terraform.py", line 341, in cmd
raise TerraformCommandError(ret_code, " ".join(cmds), out=out, err=err)
dda_python_terraform.terraform.TerraformCommandError: Command '/path/to/builder/.tfenv/bin/terraform -chdir=out.plan apply -no-color -input=false -auto-approve=true' returned non-zero exit status 1.