From c693c73d29b63dd07c435e0609a5cec2147a9b83 Mon Sep 17 00:00:00 2001 From: Joshua N Haupt Date: Fri, 17 Apr 2026 06:51:04 -0500 Subject: [PATCH] Doc Fix: OpenStack Terraform Contrib README - added missing group_vars_path, updated instructions for cloud_provider, and added links to useful resources (#12889) - Added setting the $CLUSTER bash variable as part of initial setup - Add group_vars_path to inventory variables - Update cloud_provider instructions - Added relevant links to relevant 3rd party tutorials --- contrib/terraform/openstack/README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/contrib/terraform/openstack/README.md b/contrib/terraform/openstack/README.md index c4cde2935..22812c7c6 100644 --- a/contrib/terraform/openstack/README.md +++ b/contrib/terraform/openstack/README.md @@ -134,6 +134,7 @@ Terraform will be used to provision all of the OpenStack resources with base sof Create an inventory directory for your cluster by copying the existing sample and linking the `hosts` script (used to build the inventory based on Terraform state): ```ShellSession +CLUSTER=your-cluster-name cp -LRp contrib/terraform/openstack/sample-inventory inventory/$CLUSTER cd inventory/$CLUSTER ln -s ../../contrib/terraform/openstack/hosts @@ -267,6 +268,7 @@ For your cluster, edit `inventory/$CLUSTER/cluster.tfvars`. |`image_uuid`,`image_gfs_uuid`, `image_master_uuid` | UUID of the image to use in provisioning the compute resources. Should already be loaded into glance. | |`ssh_user`,`ssh_user_gfs` | The username to ssh into the image with. This usually depends on the image you have selected | |`public_key_path` | Path on your local workstation to the public key file you wish to use in creating the key pairs | +|`group_vars_path` | path to the inventory group vars directory, `./group_vars` by default | |`number_of_k8s_masters`, `number_of_k8s_masters_no_floating_ip` | Number of nodes that serve as both master and etcd. These can be provisioned with or without floating IP addresses| |`number_of_k8s_masters_no_etcd`, `number_of_k8s_masters_no_floating_ip_no_etcd` | Number of nodes that serve as just master with no etcd. These can be provisioned with or without floating IP addresses | |`number_of_etcd` | Number of pure etcd nodes | @@ -616,7 +618,13 @@ Edit `inventory/$CLUSTER/group_vars/all/all.yml`: bin_dir: /opt/bin ``` -- and **cloud_provider**: +- **external_cloud_provider**: + +```yml +external_cloud_provider: openstack +``` + +- **Only if K8s < v1.31 - cloud_provider**: ```yml cloud_provider: openstack @@ -722,6 +730,12 @@ Basically you will install Gluster as ansible-playbook --become -i inventory/$CLUSTER/hosts ./contrib/network-storage/glusterfs/glusterfs.yml ``` +## Relevant Resources + +- [HauptJ - Example cluster.tfvars using floating IPs for all Master and Nodes](https://gist.github.com/HauptJ/d72e2a8fe0698d448283a51e847a5dfa) +- [openmetal - Deploying a Kubespray cluster to OpenStack using Terraform](https://openmetal.io/docs/manuals/kubernetes-guides/deploying-a-kubespray-cluster-to-openstack-using-terraform/) +- [Guoqiang Lan - Deploy Kubernetes with Kubespray on OpenStack](https://guoqianglan.github.io/tutorial/cloud/deploy-kubernetes-with-kubespray-on-openstack/) + ## What's next Try out your new Kubernetes cluster with the [Hello Kubernetes service](https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/).