diff --git a/data/data/libvirt/main.tf b/data/data/libvirt/main.tf index 5dbc893ba41..a66156a6f3f 100644 --- a/data/data/libvirt/main.tf +++ b/data/data/libvirt/main.tf @@ -91,6 +91,7 @@ resource "libvirt_domain" "master" { } data "libvirt_network_dns_host_template" "bootstrap" { + count = "${var.bootstrap_dns ? 1 : 0}" ip = "${var.tectonic_libvirt_bootstrap_ip}" hostname = "${var.tectonic_cluster_name}-api" } diff --git a/data/data/libvirt/variables-libvirt.tf b/data/data/libvirt/variables-libvirt.tf index 88bed42827e..e40ff850378 100644 --- a/data/data/libvirt/variables-libvirt.tf +++ b/data/data/libvirt/variables-libvirt.tf @@ -1,3 +1,8 @@ +variable "bootstrap_dns" { + default = true + description = "Whether to include DNS entries for the bootstrap node or not." +} + variable "tectonic_libvirt_uri" { type = "string" description = "libvirt connection URI" diff --git a/pkg/destroy/bootstrap/bootstrap.go b/pkg/destroy/bootstrap/bootstrap.go index 0d1c11118b1..c66f3eb7ea7 100644 --- a/pkg/destroy/bootstrap/bootstrap.go +++ b/pkg/destroy/bootstrap/bootstrap.go @@ -24,13 +24,26 @@ func Destroy(dir string) (err error) { return errors.New("no platform configured in metadata") } + copyNames := []string{terraform.StateFileName, cluster.TfVarsFileName} + + if platform == "libvirt" { + err = ioutil.WriteFile(filepath.Join(dir, "disable-bootstrap.auto.tfvars"), []byte(`{ + "bootstrap_dns": false +} +`), 0666) + if err != nil { + return err + } + copyNames = append(copyNames, "disable-bootstrap.auto.tfvars") + } + tempDir, err := ioutil.TempDir("", "openshift-install-") if err != nil { return errors.Wrap(err, "failed to create temporary directory for Terraform execution") } defer os.RemoveAll(tempDir) - for _, filename := range []string{terraform.StateFileName, cluster.TfVarsFileName} { + for _, filename := range copyNames { err = copy(filepath.Join(dir, filename), filepath.Join(tempDir, filename)) if err != nil { return errors.Wrapf(err, "failed to copy %s to the temporary directory", filename) @@ -38,9 +51,16 @@ func Destroy(dir string) (err error) { } logrus.Infof("Using Terraform to destroy bootstrap resources...") + if platform == "libvirt" { + _, err = terraform.Apply(tempDir, platform) + if err != nil { + return errors.Wrap(err, "Terraform apply") + } + } + err = terraform.Destroy(tempDir, platform, "-target=module.bootstrap") if err != nil { - return errors.Wrap(err, "failed to run terraform") + return errors.Wrap(err, "Terraform destroy") } tempStateFilePath := filepath.Join(dir, terraform.StateFileName+".new")