From bf780ea7387b4cbfb10dd4ef28c15e3fea76b94e Mon Sep 17 00:00:00 2001 From: LanceNero Date: Thu, 13 Apr 2023 12:55:52 +0800 Subject: [PATCH] terraform: remote state file exists check issue (#6296) * remote state file exists check In the official CLI implementation of Terraform, if the state file does not exist, a new one will be created, and there is no need to check that the state file already exists and with an error if file not exists. ```bash # Test command terraform apply -state test.tfstate. # if state file not exists ,terraform will create a new one terraform destroy -state test1.tfstate ### Terraform will not throw any error, the command will succeed execute, only report no resource has destroy ``` * Update terraform.py add 1 blank line to function end * Create 6296-LanceNero-Terraform_statefile_check remove file exists check (https://github.com/ansible-collections/community.general/pull/6296) * resolve if case issue * Add blank line * Update 6296-LanceNero-Terraform_statefile_check * Update changelogs/fragments/6296-LanceNero-Terraform_statefile_check Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> * update code style Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> * Update suffix to correct CI issue * Update Code Style * Update bug-fix to feature release --------- Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> --- .../6296-LanceNero-Terraform_statefile_check.yml | 2 ++ plugins/modules/terraform.py | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 changelogs/fragments/6296-LanceNero-Terraform_statefile_check.yml diff --git a/changelogs/fragments/6296-LanceNero-Terraform_statefile_check.yml b/changelogs/fragments/6296-LanceNero-Terraform_statefile_check.yml new file mode 100644 index 0000000000..f55129db82 --- /dev/null +++ b/changelogs/fragments/6296-LanceNero-Terraform_statefile_check.yml @@ -0,0 +1,2 @@ +minor_changes: + - terraform - remove state file check condition and error block, because in the native implementation of terraform will not cause errors due to the non-existent file (https://github.com/ansible-collections/community.general/pull/6296). diff --git a/plugins/modules/terraform.py b/plugins/modules/terraform.py index 0247da68cf..bbafad0e9e 100644 --- a/plugins/modules/terraform.py +++ b/plugins/modules/terraform.py @@ -312,11 +312,11 @@ def preflight_validation(bin_path, project_path, version, variables_args=None, p def _state_args(state_file): - if state_file and os.path.exists(state_file): - return ['-state', state_file] - if state_file and not os.path.exists(state_file): - module.fail_json(msg='Could not find state_file "{0}", check the path and try again.'.format(state_file)) - return [] + if not state_file: + return [] + if not os.path.exists(state_file): + module.warn(msg='Could not find state_file "{0}", the process will not destroy any resources, please check your state file path.'.format(state_file)) + return ['-state', state_file] def init_plugins(bin_path, project_path, backend_config, backend_config_files, init_reconfigure, provider_upgrade, plugin_paths, workspace):