Skip to content

Commit

Permalink
terraform: bugfix: init command when default workspace doesn't exists (
Browse files Browse the repository at this point in the history
…#5735)

* feat: init when default workspace doesn't exists

* doc: add changelogs fragment and docs update

* fix: changelog formating fix
  • Loading branch information
dorkamotorka authored Jan 7, 2023
1 parent dc531b1 commit fc2b1aa
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
bugfixes:
- terraform - fix ``current`` workspace never getting appended to the ``all`` key in the ``workspace_ctf`` object (https://github.com/ansible-collections/community.general/pull/5735).
- terraform - fix ``terraform init`` failure when there are multiple workspaces on the remote backend and when ``default`` workspace is missing by setting ``TF_WORKSPACE`` environmental variable to the value of ``workspace`` when used (https://github.com/ansible-collections/community.general/pull/5735).
11 changes: 7 additions & 4 deletions plugins/modules/terraform.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@
version_added: 3.0.0
workspace:
description:
- The terraform workspace to work with.
- The terraform workspace to work with. This sets the C(TF_WORKSPACE) environmental variable
that is used to override workspace selection. For more information about workspaces
have a look at U(https://developer.hashicorp.com/terraform/language/state/workspaces).
type: str
default: default
purge_workspace:
Expand Down Expand Up @@ -310,7 +312,7 @@ def _state_args(state_file):
return []


def init_plugins(bin_path, project_path, backend_config, backend_config_files, init_reconfigure, provider_upgrade, plugin_paths):
def init_plugins(bin_path, project_path, backend_config, backend_config_files, init_reconfigure, provider_upgrade, plugin_paths, workspace):
command = [bin_path, 'init', '-input=false', '-no-color']
if backend_config:
for key, val in backend_config.items():
Expand All @@ -328,7 +330,7 @@ def init_plugins(bin_path, project_path, backend_config, backend_config_files, i
if plugin_paths:
for plugin_path in plugin_paths:
command.extend(['-plugin-dir', plugin_path])
rc, out, err = module.run_command(command, check_rc=True, cwd=project_path)
rc, out, err = module.run_command(command, check_rc=True, cwd=project_path, environ_update={"TF_WORKSPACE": workspace})


def get_workspace_context(bin_path, project_path):
Expand All @@ -343,6 +345,7 @@ def get_workspace_context(bin_path, project_path):
continue
elif stripped_item.startswith('* '):
workspace_ctx["current"] = stripped_item.replace('* ', '')
workspace_ctx["all"].append(stripped_item.replace('* ', ''))
else:
workspace_ctx["all"].append(stripped_item)
return workspace_ctx
Expand Down Expand Up @@ -485,7 +488,7 @@ def main():

if force_init:
if overwrite_init or not os.path.isfile(os.path.join(project_path, ".terraform", "terraform.tfstate")):
init_plugins(command[0], project_path, backend_config, backend_config_files, init_reconfigure, provider_upgrade, plugin_paths)
init_plugins(command[0], project_path, backend_config, backend_config_files, init_reconfigure, provider_upgrade, plugin_paths, workspace)

workspace_ctx = get_workspace_context(command[0], project_path)
if workspace_ctx["current"] != workspace:
Expand Down

0 comments on commit fc2b1aa

Please sign in to comment.