mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
terraform: ensuring command options are applied during build_plan (#3726)
* Fixes parameters missing in planned state * Added new line at end of file * Added changelog fragment for pr 3726 * Added changes mentioned by felixfontein * Removed blank space for pep8 validation * Update changelogs/fragments/3726-terraform-missing-parameters-planned-fix.yml Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/modules/cloud/misc/terraform.py extend needs to be a list Co-authored-by: Felix Fontein <felix@fontein.de> Co-authored-by: Thomas Arringe <thomas.arringe@fouredge.se> Co-authored-by: Thomas Arringe <Thomas.Arringe@ica.se> Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
c2068641f4
commit
946430e1fb
2 changed files with 21 additions and 3 deletions
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- terraform - fix command options being ignored during planned/plan in function ``build_plan`` such as ``lock`` or ``lock_timeout``
|
||||||
|
(https://github.com/ansible-collections/community.general/issues/3707, https://github.com/ansible-collections/community.general/pull/3726).
|
|
@ -319,11 +319,25 @@ def remove_workspace(bin_path, project_path, workspace):
|
||||||
_workspace_cmd(bin_path, project_path, 'delete', workspace)
|
_workspace_cmd(bin_path, project_path, 'delete', workspace)
|
||||||
|
|
||||||
|
|
||||||
def build_plan(command, project_path, variables_args, state_file, targets, state, plan_path=None):
|
def build_plan(command, project_path, variables_args, state_file, targets, state, apply_args, plan_path=None):
|
||||||
if plan_path is None:
|
if plan_path is None:
|
||||||
f, plan_path = tempfile.mkstemp(suffix='.tfplan')
|
f, plan_path = tempfile.mkstemp(suffix='.tfplan')
|
||||||
|
|
||||||
plan_command = [command[0], 'plan', '-input=false', '-no-color', '-detailed-exitcode', '-out', plan_path]
|
local_command = command.copy()
|
||||||
|
|
||||||
|
plan_command = [command[0], 'plan']
|
||||||
|
|
||||||
|
if state == "planned":
|
||||||
|
for c in local_command[1:]:
|
||||||
|
plan_command.append(c)
|
||||||
|
|
||||||
|
if state == "present":
|
||||||
|
for a in apply_args:
|
||||||
|
local_command.remove(a)
|
||||||
|
for c in local_command[1:]:
|
||||||
|
plan_command.append(c)
|
||||||
|
|
||||||
|
plan_command.extend(['-input=false', '-no-color', '-detailed-exitcode', '-out', plan_path])
|
||||||
|
|
||||||
for t in targets:
|
for t in targets:
|
||||||
plan_command.extend(['-target', t])
|
plan_command.extend(['-target', t])
|
||||||
|
@ -461,7 +475,7 @@ def main():
|
||||||
module.fail_json(msg='Could not find plan_file "{0}", check the path and try again.'.format(plan_file))
|
module.fail_json(msg='Could not find plan_file "{0}", check the path and try again.'.format(plan_file))
|
||||||
else:
|
else:
|
||||||
plan_file, needs_application, out, err, command = build_plan(command, project_path, variables_args, state_file,
|
plan_file, needs_application, out, err, command = build_plan(command, project_path, variables_args, state_file,
|
||||||
module.params.get('targets'), state, plan_file)
|
module.params.get('targets'), state, APPLY_ARGS, plan_file)
|
||||||
if state == 'present' and check_destroy and '- destroy' in out:
|
if state == 'present' and check_destroy and '- destroy' in out:
|
||||||
module.fail_json(msg="Aborting command because it would destroy some resources. "
|
module.fail_json(msg="Aborting command because it would destroy some resources. "
|
||||||
"Consider switching the 'check_destroy' to false to suppress this error")
|
"Consider switching the 'check_destroy' to false to suppress this error")
|
||||||
|
|
Loading…
Reference in a new issue