From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B67E034D3B8 for ; Sat, 1 Nov 2025 00:50:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761958227; cv=none; b=rQUy1E6vDK/JneD510luFinkuYLfwtqmbEiil5jZFIv/Ms9xbvnsL1IoMLGTrrfPOqYxeMffEwQo3jyxd48/FY3czeZemG/jN9YlaZ8zkcr0mXxzKijJrtcyX7yhAS7uTili2ByizaUWqPXQRGTow5RESPL5f+KgakfcQO5Ild8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761958227; c=relaxed/simple; bh=FW8yT489N8Gt8Ka7gZsp92Np9hvaODLv1dGlOrsYLLU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PSgVHrDcMPhxy52O6Kc0LtSCIV1U2FKpRqtboGSO4GLnfyYO036F2mvf8XEstBdB7IZW8YV8OJx/SSo29AMzDGX7gyp0xGtXoPtRAikY4S7z5L/tsWhLHl5sCCGabM6XwINx32jkcIcpnE52gzaTnGFgRYRnKOXq5FTjJynpugM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=X2r/OQmd; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="X2r/OQmd" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 16AD4C4CEE7; Sat, 1 Nov 2025 00:50:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1761958227; bh=FW8yT489N8Gt8Ka7gZsp92Np9hvaODLv1dGlOrsYLLU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X2r/OQmdcOmtmzmHMm6HLv6DmDqnmZpWltD7Abbv6qhWN9QqUsAorQIhp1/Dp9OSN SY0Nb1w88v3k8JHZoFRn7RpHmgX3a67ugj0gUpDjdoht2LRIuqb5G9lS0ZUwsz43/z IP15plrhEYgLg49x4GeHZgV2mluXh0uvF2fjrYViI8yGlcQ8DbOKBX6kneO6SXf6dL cqBHdfZ+b+gVGQlxWM5GVsUSjDKoojQPMwHW6cjt0JX4NPSd4zFlevvPN38J48fPso 1wpEtPJB+YbNupwv6BWKo+lWPehoUYGsObKK7RknT1Mvvd2YM6kuJgEi2j52/GJjcz bHXmdWfQ5YykA== From: Chuck Lever To: Cc: Chuck Lever Subject: [PATCH 7/7] terraform: Remove OpenStack provider directory Date: Fri, 31 Oct 2025 20:50:20 -0400 Message-ID: <20251101005020.3492781-9-cel@kernel.org> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251101005020.3492781-1-cel@kernel.org> References: <20251101005020.3492781-1-cel@kernel.org> Precedence: bulk X-Mailing-List: kdevops@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Chuck Lever Remove the entire terraform/openstack directory and all its files including Kconfig, terraform configurations, and cloud provider setup. This removes support for deploying kdevops on OpenStack clouds. Generated-by: Claude AI Signed-off-by: Chuck Lever --- terraform/openstack/Kconfig | 66 ----------- terraform/openstack/ansible_provision_cmd.tpl | 1 - terraform/openstack/clouds-public.yaml | 19 ---- terraform/openstack/main.tf | 107 ------------------ terraform/openstack/output.tf | 28 ----- terraform/openstack/output_minicloud.tf | 51 --------- terraform/openstack/provider.tf | 23 ---- terraform/openstack/shared.tf | 1 - .../openstack/update_ssh_config_minicloud.tf | 25 ---- terraform/openstack/vars.tf | 46 -------- 10 files changed, 367 deletions(-) delete mode 100644 terraform/openstack/Kconfig delete mode 120000 terraform/openstack/ansible_provision_cmd.tpl delete mode 100644 terraform/openstack/clouds-public.yaml delete mode 100644 terraform/openstack/main.tf delete mode 100644 terraform/openstack/output.tf delete mode 100644 terraform/openstack/output_minicloud.tf delete mode 100644 terraform/openstack/provider.tf delete mode 120000 terraform/openstack/shared.tf delete mode 100644 terraform/openstack/update_ssh_config_minicloud.tf delete mode 100644 terraform/openstack/vars.tf diff --git a/terraform/openstack/Kconfig b/terraform/openstack/Kconfig deleted file mode 100644 index 61167ad152d8..000000000000 --- a/terraform/openstack/Kconfig +++ /dev/null @@ -1,66 +0,0 @@ -if TERRAFORM_OPENSTACK - -config TERRAFORM_TERRAFORM_OPENSTACK_CLOUD_NAME - string "OpenStack cloud name on your clouds.yaml" - default "minicloud" - help - This option sets the name of the cloud you will use which has - configuration settings described on the file clouds.yaml. - -config TERRAFORM_TERRAFORM_OPENSTACK_INSTANCE_PREFIX - string "Openstack instance prefix name for resources" - default "example" - help - This option will set a prefix name for openstack_compute_secgroup_v2. - This will likely be removed or replaced in the future. This is only - useful to distinguish one resource name right now. - -choice - prompt "Choose flavor name (machine type)" - default TERRAFORM_OPENSTACK_MINICLOUD_TINY - -config TERRAFORM_OPENSTACK_MINICLOUD_TINY - bool "minicloud.tiny" - depends on TARGET_ARCH_PPC64LE - help - This option will set the Openstack flavor to minicloud.tiny. - -endchoice - -config TERRAFORM_OPENSTACK_FLAVOR - string "OpenStack flavor" - default "minicloud.tiny" if TERRAFORM_OPENSTACK_MINICLOUD_TINY - help - This option will set the OpenStack flavor name. - -choice - prompt "Choose OpenStack image name" - default TERRAFORM_OPENSTACK_IMAGE_DEBIAN_10_PPC64LE - -config TERRAFORM_OPENSTACK_IMAGE_DEBIAN_10_PPC64LE - bool "Debian 10 ppc64le" - depends on TARGET_ARCH_PPC64LE - help - This option sets the image name to Debian 10 ppc64le. - -endchoice - -config TERRAFORM_OPENSTACK_IMAGE_NAME - string "OpenStack image name" - default "Debian 10 ppc64le" if TERRAFORM_OPENSTACK_IMAGE_DEBIAN_10_PPC64LE && DISTRO_DEBIAN - help - This option will set OpenStack image name to use. - -config TERRAFORM_OPENSTACK_SSH_PUBKEY_NAME - string "Name of already existing pubkey uploaded" - default "kdevops-pubkey" - help - Name of already existing pubkey or the new one you are about to - upload, this must be set - -config TERRAFORM_OPENSTACK_PUBLIC_NETWORK_NAME - string "Name of the public network" - default "public" - help - Name of an already existing public network in the cluster. -endif # TERRAFORM_OPENSTACK diff --git a/terraform/openstack/ansible_provision_cmd.tpl b/terraform/openstack/ansible_provision_cmd.tpl deleted file mode 120000 index 5c92657651f8..000000000000 --- a/terraform/openstack/ansible_provision_cmd.tpl +++ /dev/null @@ -1 +0,0 @@ -../ansible_provision_cmd.tpl \ No newline at end of file diff --git a/terraform/openstack/clouds-public.yaml b/terraform/openstack/clouds-public.yaml deleted file mode 100644 index 1786a618aaf7..000000000000 --- a/terraform/openstack/clouds-public.yaml +++ /dev/null @@ -1,19 +0,0 @@ -clouds: - minicloud: - auth: - auth_url: http://minicloud.parqtec.unicamp.br:5000/v3/ - project_name: maria.quijote - user_domain_name: Default - project_domain_name: Default - username: maria.quijote - password: verysecret - # Set to True in your clouds.yaml to disable SSL certification verification - # if you really need it. - # verify: False - region_name: RegionOne - regions: - - name: RegionOne - values: - networks: - - name: public - routes_externally: true diff --git a/terraform/openstack/main.tf b/terraform/openstack/main.tf deleted file mode 100644 index c9037ca734f9..000000000000 --- a/terraform/openstack/main.tf +++ /dev/null @@ -1,107 +0,0 @@ -# Openstack terraform provider main - -resource "openstack_networking_network_v2" "kdevops_private_net" { - count = var.private_net_enabled ? 1 : 0 - name = "kdevops_private_net" - admin_state_up = "true" -} - -resource "openstack_networking_subnet_v2" "kdevops_private_subnet" { - count = var.private_net_enabled ? 1 : 0 - name = "kdevops_private_subnet" - network_id = "${openstack_networking_network_v2.kdevops_private_net[0].id}" - cidr = format("%s/%d", var.private_net_prefix, var.private_net_mask) -} - -resource "openstack_compute_secgroup_v2" "kdevops_security_group" { - name = format("%s-%s", var.instance_prefix, "kdevops_security_group") - description = "security group for kdevops" - - # SSH - rule { - from_port = var.ssh_config_port - to_port = var.ssh_config_port - ip_protocol = "tcp" - cidr = "0.0.0.0/0" - } - - # All TCP high ports - rule { - from_port = 1024 - to_port = 65535 - ip_protocol = "tcp" - cidr = "0.0.0.0/0" - } -} - -# You can upload your ssh key to the OpenStack interface and just set -# ssh_config_pubkey_file = "" on your terraform.tfvars, this will just use the -# already existing and uploaded key. Even if you already uplaoded the key, -# if you set the ssh_config_pubkey_file variable to the same key, this will just -# upload the same pubkey key again and just use the name in ssh_pubkey_name. -# -# If you haven't yet uploaded your key through the web interface, you can -# set ssh_config_pubkey_file to your pubkey file path, and it will be uplaoded -# and the key name associated with it. Once you 'terraform destroy' only -# the public key resource will be destroyed. -# -# If you want to create a new random key this allows you to do that as well, -# just set ssh_pubkey_data = "" and ssh_config_pubkey_file = "" in your -# terraform.tfvars and a new key pair will be created for you on the fly. -# However note that once this resource is destroyed the private key will -# also be destroyed if you asked terraform to create a new key for you. -resource "openstack_compute_keypair_v2" "kdevops_keypair" { - name = var.ssh_pubkey_name - public_key = var.ssh_pubkey_data != "" ? var.ssh_pubkey_data : var.ssh_config_pubkey_file != "" ? file(var.ssh_config_pubkey_file) : "" -} - -resource "openstack_compute_instance_v2" "kdevops_instances" { - count = local.kdevops_num_boxes - name = element(var.kdevops_nodes, count.index) - image_name = var.image_name - flavor_name = var.flavor_name - key_pair = var.ssh_pubkey_name - security_groups = [openstack_compute_secgroup_v2.kdevops_security_group.name] - user_data = templatefile("${path.module}/../scripts/cloud-init.sh", { - user_data_log_dir = "/var/log/kdevops" - user_data_enabled = "yes" - ssh_config_user = var.ssh_config_user - ssh_config_port = var.ssh_config_port - new_hostname = element(var.kdevops_nodes, count.index) - }) - network { - name = var.public_network_name - } -} - -resource "openstack_compute_interface_attach_v2" "kdevops_net_attach" { - count = var.private_net_enabled ? local.kdevops_num_boxes : 0 - instance_id = "${openstack_compute_instance_v2.kdevops_instances[count.index].id}" - network_id = "${openstack_networking_network_v2.kdevops_private_net[0].id}" - # needed to work around race in openstack provider - depends_on = [openstack_networking_subnet_v2.kdevops_private_subnet] -} - -resource "openstack_blockstorage_volume_v3" "kdevops_data_disk" { - count = local.kdevops_num_boxes - name = format("kdevops-data-disk-%02d", count.index + 1) - size = 80 -} - -resource "openstack_blockstorage_volume_v3" "kdevops_scratch_disk" { - count = local.kdevops_num_boxes - name = format("kdevops-scratch-disk-%02d", count.index + 1) - size = 80 -} - -resource "openstack_compute_volume_attach_v2" "kdevops_data_disk_attach" { - count = local.kdevops_num_boxes - volume_id = openstack_blockstorage_volume_v3.kdevops_data_disk[count.index].id - instance_id = element(openstack_compute_instance_v2.kdevops_instances.*.id, count.index) -} - -resource "openstack_compute_volume_attach_v2" "kdevops_scratch_disk_attach" { - count = local.kdevops_num_boxes - volume_id = openstack_blockstorage_volume_v3.kdevops_scratch_disk[count.index].id - instance_id = element(openstack_compute_instance_v2.kdevops_instances.*.id, count.index) -} diff --git a/terraform/openstack/output.tf b/terraform/openstack/output.tf deleted file mode 100644 index 1667521a4bfc..000000000000 --- a/terraform/openstack/output.tf +++ /dev/null @@ -1,28 +0,0 @@ -# All generic output goes here - -data "null_data_source" "group_hostnames_and_ips" { - count = local.kdevops_num_boxes - inputs = { - value = format( - "%30s : %s", - element(var.kdevops_nodes, count.index), - element( - openstack_compute_instance_v2.kdevops_instances.*.access_ip_v4, - count.index, - ), - ) - } -} - -output "kdevops_hosts_and_ipv4" { - value = data.null_data_source.group_hostnames_and_ips.*.outputs -} - -# Each provider's output.tf needs to define a controller_ip_map. This -# map is used to build the Ansible controller's ssh configuration. -# Each map entry contains the node's hostname and public/private IP -# address. -output "controller_ip_map" { - description = "The IP addresses assigned to each instance" - value = zipmap(var.kdevops_nodes[*], openstack_compute_instance_v2.kdevops_instances[*].access_ip_v4) -} diff --git a/terraform/openstack/output_minicloud.tf b/terraform/openstack/output_minicloud.tf deleted file mode 100644 index cf2b5f900878..000000000000 --- a/terraform/openstack/output_minicloud.tf +++ /dev/null @@ -1,51 +0,0 @@ -# minicloud specific output - -locals { - ssh_key_i = format( - " %s%s ", - var.ssh_config_pubkey_file != "" ? "-i " : "", - var.ssh_config_pubkey_file != "" ? replace(var.ssh_config_pubkey_file, ".pub", "") : "", - ) -} - -# If using minicloud the public IPs are actually mapped to ports. This does -# the tranlation for you. -# https://github.com/Unicamp-OpenPower/minicloud/wiki/Getting-Started-with-Minicloud -data "null_data_source" "group_hostnames_and_ports_v2" { - count = var.openstack_cloud != "minicloud" ? 0 : local.kdevops_num_boxes - inputs = { - value = format( - "%30s : %s%s%03d%s ", - element(var.kdevops_nodes, count.index), - "ssh debian@minicloud.parqtec.unicamp.br -p ", - element( - split( - ".", - element( - openstack_compute_instance_v2.kdevops_instances.*.access_ip_v4, - count.index, - ), - ), - 2, - ), - ceil( - element( - split( - ".", - element( - openstack_compute_instance_v2.kdevops_instances.*.access_ip_v4, - count.index, - ), - ), - 3, - ), - ), - local.ssh_key_i, - ) - } -} - -output "kdevops_minicloud_port_ip_access_v2" { - value = data.null_data_source.group_hostnames_and_ports_v2.*.outputs -} - diff --git a/terraform/openstack/provider.tf b/terraform/openstack/provider.tf deleted file mode 100644 index 6cc0145b8324..000000000000 --- a/terraform/openstack/provider.tf +++ /dev/null @@ -1,23 +0,0 @@ -terraform { - required_providers { - openstack = { - source = "terraform-provider-openstack/openstack" - version = "~>1.47.0" - } - null = { - source = "hashicorp/null" - version = "~>2.1" - } - } -} - -provider "openstack" { - # We prefer this method as it means you also get to use standard openstack - # utilities that also use and share the same configuration files. - # First clouds-public.yaml is read, then clouds.yaml and last secure.yaml. - # - # For more details or examples see: - # https://docs.openstack.org/os-client-config/latest/user/configuration.html - # https://www.inovex.de/blog/managing-secrets-openstack-terraform/ - cloud = var.openstack_cloud -} diff --git a/terraform/openstack/shared.tf b/terraform/openstack/shared.tf deleted file mode 120000 index c10b6106ad1c..000000000000 --- a/terraform/openstack/shared.tf +++ /dev/null @@ -1 +0,0 @@ -../shared.tf \ No newline at end of file diff --git a/terraform/openstack/update_ssh_config_minicloud.tf b/terraform/openstack/update_ssh_config_minicloud.tf deleted file mode 100644 index 4fd3f0851da7..000000000000 --- a/terraform/openstack/update_ssh_config_minicloud.tf +++ /dev/null @@ -1,25 +0,0 @@ -locals { - shorthosts_minicloud = openstack_compute_instance_v2.kdevops_instances.*.name - ports_minicloud = [ - for ip in openstack_compute_instance_v2.kdevops_instances.*.access_ip_v4 : - format("%s%03d", element(split(".", ip), 2, ), ceil(element(split(".", ip), 3, ))) - ] -} - -module "ssh_config_update_host_entries_minicloud" { - source = "linux-kdevops/add-host-ssh-config/kdevops" - version = "3.0.0" - - ssh_config = var.ssh_config - update_ssh_config_enable = (var.openstack_cloud == "minicloud" && local.kdevops_num_boxes > 0) ? "true" : "" - cmd = "update" - shorthosts = join(",", slice(local.shorthosts_minicloud, 0, local.kdevops_num_boxes)) - hostnames = "minicloud.parqtec.unicamp.br" - ports = join(",", slice(local.ports_minicloud, 0, local.kdevops_num_boxes)) - user = var.ssh_config_user == "" ? "" : var.ssh_config_user - id = replace(var.ssh_config_pubkey_file, ".pub", "") - strict = var.ssh_config_use_strict_settings != "true" ? "" : "true" - use_backup = var.ssh_config_backup != "true" || var.ssh_config == "/dev/null" ? "" : "true" - backup_postfix = "kdevops" - kexalgorithms = var.ssh_config_kexalgorithms == "" ? "" : var.ssh_config_kexalgorithms -} diff --git a/terraform/openstack/vars.tf b/terraform/openstack/vars.tf deleted file mode 100644 index 1e6193124c52..000000000000 --- a/terraform/openstack/vars.tf +++ /dev/null @@ -1,46 +0,0 @@ -# This is a relatively new feature, reading cloud.yaml and friends. Even -# though older openstack solutions don't support this, we keep things simple -# and ask you to use these files for now. -# -# If its a public cloud we may add support for extra processing / output -# for each one on its respective cloudname.tf file. -variable "openstack_cloud" { - description = "Name of your cloud on clouds.yaml" - default = "minicloud" -} - -variable "ssh_pubkey_name" { - description = "Name of already existing pubkey or the new one you are about to upload, this must be set" - default = "kdevops-pubkey" -} - -variable "ssh_pubkey_data" { - description = "The ssh public key data" - - # for instance it coudl be "ssh-rsa AAetcccc" - default = "" -} - -variable "image_name" { - description = "Type of image" - default = "Debian 10 ppc64le" -} - -# Note: at least if using minicloud you're allowed 5 instances but only -# 8 cores and 10 GiB of RAM. If you use minicloud.max you max out all -# core limits right away. By default we use here the minicloud.tiny -# to let at you at least create a few instances. -variable "flavor_name" { - description = "Flavor of image" - default = "minicloud.tiny" -} - -variable "instance_prefix" { - description = "The prefix of the VM instance name" - default = "my-fun" -} - -variable "public_network_name" { - description = "The name of the network" - default = "public" -} -- 2.51.0