From 58fbe9b3d4de8ac27e9d8b7651293a7b54aa4705 Mon Sep 17 00:00:00 2001 From: jem Date: Fri, 8 Oct 2021 17:35:39 +0200 Subject: [PATCH] add exoscale --- build.py | 2 +- src/main/python/ddadevops/__init__.py | 1 + src/main/python/ddadevops/exoscale_mixin.py | 30 +++++++++++++++++++ .../terraform/exoscale_mixin_vars.tf | 5 ++++ .../resources/terraform/exoscale_provider.tf | 4 +++ .../resources/terraform/provider_registry.tf | 7 ++++- 6 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 src/main/python/ddadevops/exoscale_mixin.py create mode 100644 src/main/resources/terraform/exoscale_mixin_vars.tf create mode 100644 src/main/resources/terraform/exoscale_provider.tf diff --git a/build.py b/build.py index efbd8bf..11f13ec 100644 --- a/build.py +++ b/build.py @@ -28,7 +28,7 @@ use_plugin("python.distutils") default_task = "publish" name = "ddadevops" -version = "0.12.8-dev" +version = "0.13.0-dev" summary = "tools to support builds combining gopass, terraform, dda-pallet, aws & hetzner-cloud" description = __doc__ authors = [Author("meissa GmbH", "buero@meissa-gmbh.de")] diff --git a/src/main/python/ddadevops/__init__.py b/src/main/python/ddadevops/__init__.py index b1436e3..2c02e1a 100644 --- a/src/main/python/ddadevops/__init__.py +++ b/src/main/python/ddadevops/__init__.py @@ -9,6 +9,7 @@ from .devops_build import DevopsBuild, create_devops_build_config, get_devops_bu from .devops_terraform_build import DevopsTerraformBuild, create_devops_terraform_build_config from .devops_docker_build import DevopsDockerBuild, create_devops_docker_build_config from .hetzner_mixin import HetznerMixin, add_hetzner_mixin_config +from .exoscale_mixin import ExoscaleMixin, add_exoscale_mixin_config from .aws_backend_properties_mixin import AwsBackendPropertiesMixin, add_aws_backend_properties_mixin_config from .aws_mfa_mixin import AwsMfaMixin, add_aws_mfa_mixin_config from .aws_rds_pg_mixin import AwsRdsPgMixin, add_aws_rds_pg_mixin_config diff --git a/src/main/python/ddadevops/exoscale_mixin.py b/src/main/python/ddadevops/exoscale_mixin.py new file mode 100644 index 0000000..71ed7b1 --- /dev/null +++ b/src/main/python/ddadevops/exoscale_mixin.py @@ -0,0 +1,30 @@ +from .devops_terraform_build import DevopsTerraformBuild + + +def add_exoscale_mixin_config(config, exoscale_api_key, exoscale_secret_key): + config.update({'ExoscaleMixin': + {'exoscale_api_key': exoscale_api_key, + 'exoscale_secret_key': exoscale_secret_key}}) + return config + + +class ExoscaleMixin(DevopsTerraformBuild): + + def __init__(self, project, config): + super().__init__(project, config) + exoscale_mixin_config = config['ExoscaleMixin'] + self.exoscale_api_key = exoscale_mixin_config['exoscale_api_key'] + self.exoscale_secret_key = exoscale_mixin_config['exoscale_secret_key'] + + def project_vars(self): + ret = super().project_vars() + if self.exoscale_api_key: + ret['exoscale_api_key'] = self.exoscale_api_key + if self.exoscale_secret_key: + ret['exoscale_secret_key'] = self.exoscale_secret_key + return ret + + def copy_build_resources_from_package(self): + super().copy_build_resources_from_package() + self.copy_build_resource_file_from_package('exoscale_provider.tf') + self.copy_build_resource_file_from_package('exoscale_mixin_vars.tf') diff --git a/src/main/resources/terraform/exoscale_mixin_vars.tf b/src/main/resources/terraform/exoscale_mixin_vars.tf new file mode 100644 index 0000000..013f2b9 --- /dev/null +++ b/src/main/resources/terraform/exoscale_mixin_vars.tf @@ -0,0 +1,5 @@ +variable "exoscale_api_key" { +} + +variable "exoscale_secret_key" { +} \ No newline at end of file diff --git a/src/main/resources/terraform/exoscale_provider.tf b/src/main/resources/terraform/exoscale_provider.tf new file mode 100644 index 0000000..2740719 --- /dev/null +++ b/src/main/resources/terraform/exoscale_provider.tf @@ -0,0 +1,4 @@ +provider "exoscale" { + key = "${var.exoscale_api_key}" + secret = "${var.exoscale_secret_key}" +} \ No newline at end of file diff --git a/src/main/resources/terraform/provider_registry.tf b/src/main/resources/terraform/provider_registry.tf index d872bcc..56275f1 100644 --- a/src/main/resources/terraform/provider_registry.tf +++ b/src/main/resources/terraform/provider_registry.tf @@ -1,8 +1,13 @@ terraform { required_providers { + + exoscale = { + source = "exoscale/exoscale" + version = ">= 0.29.0" + } hcloud = { - source = "hetznercloud/hcloud" # this whole block is important + source = "hetznercloud/hcloud" version = ">= 1.23.0" }