Skip to content

Commit

Permalink
Baremetal: Split terraform into stages
Browse files Browse the repository at this point in the history
bootstrap: create bootstrap resources
masters: create permanent cluster resources

This is needed for Terraform v0.14.6 and later since Terraform deletions now
destroy all resource dependencies.
  • Loading branch information
jhixson74 committed Jul 8, 2021
1 parent fe9a17d commit 0ce7c2e
Show file tree
Hide file tree
Showing 9 changed files with 51 additions and 105 deletions.
20 changes: 18 additions & 2 deletions data/data/baremetal/bootstrap/main.tf
@@ -1,3 +1,19 @@
provider "libvirt" {
uri = var.libvirt_uri
}

provider "ironic" {
url = var.ironic_uri
inspector = var.inspector_uri
microversion = "1.56"
timeout = 3600
auth_strategy = "http_basic"
ironic_username = var.ironic_username
ironic_password = var.ironic_password
inspector_username = var.ironic_username
inspector_password = var.ironic_password
}

resource "libvirt_pool" "bootstrap" {
name = "${var.cluster_id}-bootstrap"
type = "dir"
Expand All @@ -7,7 +23,7 @@ resource "libvirt_pool" "bootstrap" {
resource "libvirt_volume" "bootstrap-base" {
name = "${var.cluster_id}-bootstrap-base"
pool = libvirt_pool.bootstrap.name
source = var.image
source = var.bootstrap_os_image
}

resource "libvirt_volume" "bootstrap" {
Expand All @@ -22,7 +38,7 @@ resource "libvirt_volume" "bootstrap" {
resource "libvirt_ignition" "bootstrap" {
name = "${var.cluster_id}-bootstrap.ign"
pool = libvirt_pool.bootstrap.name
content = var.ignition
content = var.ignition_bootstrap
}

resource "libvirt_domain" "bootstrap" {
Expand Down
19 changes: 0 additions & 19 deletions data/data/baremetal/bootstrap/variables.tf

This file was deleted.

36 changes: 0 additions & 36 deletions data/data/baremetal/main.tf

This file was deleted.

18 changes: 17 additions & 1 deletion data/data/baremetal/masters/main.tf
@@ -1,3 +1,19 @@
provider "libvirt" {
uri = var.libvirt_uri
}

provider "ironic" {
url = var.ironic_uri
inspector = var.inspector_uri
microversion = "1.56"
timeout = 3600
auth_strategy = "http_basic"
ironic_username = var.ironic_username
ironic_password = var.ironic_password
inspector_username = var.ironic_username
inspector_password = var.ironic_password
}

resource "ironic_node_v1" "openshift-master-host" {
count = var.master_count
name = var.hosts[count.index]["name"]
Expand Down Expand Up @@ -35,7 +51,7 @@ resource "ironic_deployment" "openshift-master-deployment" {
)

instance_info = var.instance_infos[count.index]
user_data = var.ignition
user_data = var.ignition_master
}

data "ironic_introspection" "openshift-master-introspection" {
Expand Down
35 changes: 0 additions & 35 deletions data/data/baremetal/masters/variables.tf

This file was deleted.

4 changes: 0 additions & 4 deletions data/data/baremetal/versions.tf

This file was deleted.

13 changes: 13 additions & 0 deletions pkg/terraform/stages/baremetal/stages.go
@@ -0,0 +1,13 @@
package baremetal

import (
"github.com/openshift/installer/pkg/terraform"
"github.com/openshift/installer/pkg/terraform/stages"
)

// PlatformStages are the stages to run to provision the infrastructure in
// Bare Metal.
var PlatformStages = []terraform.Stage{
stages.NewStage("baremetal", "bootstrap", stages.WithNormalDestroy()),
stages.NewStage("baremetal", "masters"),
}
8 changes: 0 additions & 8 deletions pkg/terraform/stages/compat/stage.go
Expand Up @@ -9,15 +9,13 @@ import (

"github.com/openshift/installer/pkg/terraform"
gatherazure "github.com/openshift/installer/pkg/terraform/gather/azure"
gatherbaremetal "github.com/openshift/installer/pkg/terraform/gather/baremetal"
gatherkubevirt "github.com/openshift/installer/pkg/terraform/gather/kubevirt"
gatherlibvirt "github.com/openshift/installer/pkg/terraform/gather/libvirt"
gatheropenstack "github.com/openshift/installer/pkg/terraform/gather/openstack"
gatherovirt "github.com/openshift/installer/pkg/terraform/gather/ovirt"
gathervsphere "github.com/openshift/installer/pkg/terraform/gather/vsphere"
"github.com/openshift/installer/pkg/types"
azuretypes "github.com/openshift/installer/pkg/types/azure"
baremetaltypes "github.com/openshift/installer/pkg/types/baremetal"
kubevirttypes "github.com/openshift/installer/pkg/types/kubevirt"
libvirttypes "github.com/openshift/installer/pkg/types/libvirt"
openstacktypes "github.com/openshift/installer/pkg/types/openstack"
Expand Down Expand Up @@ -97,12 +95,6 @@ func extractHostAddresses(config *types.InstallConfig, tfstate *terraform.State)
if err != nil {
logrus.Error(err)
}
case baremetaltypes.Name:
bootstrap = config.Platform.BareMetal.BootstrapProvisioningIP
masters, err = gatherbaremetal.ControlPlaneIPs(config, tfstate)
if err != nil {
return
}
case libvirttypes.Name:
bootstrap, err = gatherlibvirt.BootstrapIP(tfstate)
if err != nil {
Expand Down
3 changes: 3 additions & 0 deletions pkg/terraform/stages/platform/stages.go
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/openshift/installer/pkg/terraform/stages/compat"
"github.com/openshift/installer/pkg/terraform/stages/gcp"
awstypes "github.com/openshift/installer/pkg/types/aws"
baremetaltypes "github.com/openshift/installer/pkg/types/baremetal"
gcptypes "github.com/openshift/installer/pkg/types/gcp"
)

Expand All @@ -14,6 +15,8 @@ func StagesForPlatform(platform string) []terraform.Stage {
switch platform {
case awstypes.Name:
return aws.PlatformStages
case baremetaltypes.Name:
return baremetal.PlatformStages
case gcptypes.Name:
return gcp.PlatformStages
default:
Expand Down

0 comments on commit 0ce7c2e

Please sign in to comment.