Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions data/data/azure/variables-azure.tf
Original file line number Diff line number Diff line change
Expand Up @@ -134,3 +134,9 @@ This determined whether User defined routing will be used for egress to Internet
When false, Standard LB will be used for egress to the Internet.
EOF
}

variable "azure_image_path" {
type = string
default = ""
description = "A path on the host system to an Azure VHD. Used only for uploading RHCOS images to Azure Stack."
}
108 changes: 108 additions & 0 deletions data/data/azurestack/vnet/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
locals {
tags = merge(
{
"kubernetes.io_cluster.${var.cluster_id}" = "owned"
},
var.azure_extra_tags,
)
description = "Created By OpenShift Installer"
upload = var.azure_image_path != ""
rhcos_blob_uri = local.upload ? azurestackprivate_vhd_blob.rhcos_image[0].url : azurestack_storage_blob.rhcos_image[0].url
}

provider "azurestack" {
arm_endpoint = var.azure_arm_endpoint
subscription_id = var.azure_subscription_id
client_id = var.azure_client_id
client_secret = var.azure_client_secret
tenant_id = var.azure_tenant_id
}

provider "azurestackprivate" {
arm_endpoint = var.azure_arm_endpoint
subscription_id = var.azure_subscription_id
client_id = var.azure_client_id
client_secret = var.azure_client_secret
tenant_id = var.azure_tenant_id
}

resource "random_string" "storage_suffix" {
length = 5
upper = false
special = false
}

resource "azurestack_resource_group" "main" {
count = var.azure_resource_group_name == "" ? 1 : 0

name = "${var.cluster_id}-rg"
location = var.azure_region
tags = local.tags
}

data "azurestack_resource_group" "main" {
name = var.azure_resource_group_name == "" ? "${var.cluster_id}-rg" : var.azure_resource_group_name

depends_on = [azurestack_resource_group.main]
}

data "azurestack_resource_group" "network" {
count = var.azure_preexisting_network ? 1 : 0

name = var.azure_network_resource_group_name
}

resource "azurestack_storage_account" "cluster" {
name = "cluster${random_string.storage_suffix.result}"
resource_group_name = data.azurestack_resource_group.main.name
location = var.azure_region
account_tier = "Standard"
account_replication_type = "LRS"
}

# copy over the vhd to cluster resource group and create an image using that
resource "azurestack_storage_container" "vhd" {
name = "vhd"
resource_group_name = data.azurestack_resource_group.main.name
storage_account_name = azurestack_storage_account.cluster.name
}

resource "azurestack_storage_blob" "rhcos_image" {
count = local.upload ? 0 : 1

name = "rhcos${random_string.storage_suffix.result}.vhd"
resource_group_name = data.azurestack_resource_group.main.name
storage_account_name = azurestack_storage_account.cluster.name
storage_container_name = azurestack_storage_container.vhd.name
type = "page"
source_uri = var.azure_image_url
}

resource "azurestackprivate_vhd_blob" "rhcos_image" {
count = local.upload ? 1 : 0

name = "rhcos${random_string.storage_suffix.result}.vhd"
resource_group_name = data.azurestack_resource_group.main.name
storage_account_name = azurestack_storage_account.cluster.name
storage_container_name = azurestack_storage_container.vhd.name
source = var.azure_image_path
}

resource "azurestack_image" "cluster" {
name = var.cluster_id
resource_group_name = data.azurestack_resource_group.main.name
location = var.azure_region

os_disk {
os_type = "Linux"
os_state = "Generalized"
blob_uri = local.rhcos_blob_uri
}
}

resource "azurestack_availability_set" "master_availability_set" {
name = "${var.cluster_id}-master"
resource_group_name = data.azurestack_resource_group.main.name
location = var.azure_region
managed = true
}
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ require (
github.com/IBM/networking-go-sdk v0.14.0
github.com/IBM/platform-services-go-sdk v0.18.16
github.com/IBM/vpc-go-sdk v1.0.1
github.com/Microsoft/azure-vhd-utils v0.0.0-20181115010904-44cbada2ece3
github.com/Netflix/go-expect v0.0.0-20190729225929-0e00d9168667 // indirect
github.com/antchfx/xpath v1.1.2 // indirect
github.com/apparentlymart/go-cidr v1.1.0
Expand Down Expand Up @@ -60,6 +61,7 @@ require (
github.com/mitchellh/cli v1.1.1
github.com/openshift-metal3/terraform-provider-ironic v0.2.6
github.com/openshift/api v0.0.0-20210622200201-7740bfb97397
github.com/openshift/azure-sdk-for-go v4.0.0-beta.0.20160930180624-772f34e02704+incompatible
github.com/openshift/client-go v0.0.0-20210409155308-a8e62c60e930
github.com/openshift/cloud-credential-operator v0.0.0-20200316201045-d10080b52c9e
github.com/openshift/cluster-api-provider-gcp v0.0.1-0.20201203141909-4dc702fd57a5
Expand Down
6 changes: 6 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ github.com/14rcole/gopopulate v0.0.0-20180821133914-b175b219e774/go.mod h1:6/0dY
github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE=
github.com/AlecAivazis/survey/v2 v2.2.12 h1:5a07y93zA6SZ09gOa9wLVLznF5zTJMQ+pJ3cZK4IuO8=
github.com/AlecAivazis/survey/v2 v2.2.12/go.mod h1:6d4saEvBsfSHXeN1a5OA5m2+HJ2LuVokllnC77pAIKI=
github.com/Azure/azure-sdk-for-go v5.0.0-beta.0.20161118192335-3b1282355199+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/azure-sdk-for-go v36.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
Expand Down Expand Up @@ -171,6 +172,8 @@ github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy86
github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Masterminds/sprig v2.20.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
github.com/Microsoft/azure-vhd-utils v0.0.0-20181115010904-44cbada2ece3 h1:gImoAO1xAcC1oDlYmD/X7dggsodGf2DFJOVE5m0ssms=
github.com/Microsoft/azure-vhd-utils v0.0.0-20181115010904-44cbada2ece3/go.mod h1:u0H9gMieFLxkUy8RS0X8VbFWyPs2815qQAaitRbj6x0=
github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
github.com/Microsoft/go-winio v0.4.13/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
Expand Down Expand Up @@ -1427,6 +1430,8 @@ github.com/openshift/api v0.0.0-20210412212256-79bd8cfbbd59/go.mod h1:dZ4kytOo3s
github.com/openshift/api v0.0.0-20210416115537-a60c0dc032fd/go.mod h1:dZ4kytOo3svxJHNYd0J55hwe/6IQG5gAUHUE0F3Jkio=
github.com/openshift/api v0.0.0-20210622200201-7740bfb97397 h1:wp5My+8d2K2HIZw2yZblsIZawma5UrNQGPVcTev/HSA=
github.com/openshift/api v0.0.0-20210622200201-7740bfb97397/go.mod h1:izBmoXbUu3z5kUa4FjZhvekTsyzIWiOoaIgJiZBBMQs=
github.com/openshift/azure-sdk-for-go v4.0.0-beta.0.20160930180624-772f34e02704+incompatible h1:4AfrWnnXZYNWpK0bLUKi0gIKAY0PNhvL2pHdpPt2ctc=
github.com/openshift/azure-sdk-for-go v4.0.0-beta.0.20160930180624-772f34e02704+incompatible/go.mod h1:BCauxNrp488JtVPoyUV50x+FYZp8HvYd7iCL9NfpWfc=
github.com/openshift/baremetal-operator v0.0.0-20210706141527-5240e42f012a h1:7rEVkEhSyg7wxFsH5BWzG9svhlG3GSY+hhSGNjU20P8=
github.com/openshift/baremetal-operator v0.0.0-20210706141527-5240e42f012a/go.mod h1:N80LeH5dJtqtrknj5vxwRaXyfF1UdxLm74B/QpH8QI0=
github.com/openshift/baremetal-operator/apis v0.0.0-20210706141527-5240e42f012a h1:oXPw/sck0Lr0yAarZZCOCFE/3+9+UziPIIhREzhE2SU=
Expand Down Expand Up @@ -2395,6 +2400,7 @@ gopkg.in/square/go-jose.v2 v2.3.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76
gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/urfave/cli.v1 v1.19.1/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.1.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
Expand Down
7 changes: 7 additions & 0 deletions pkg/asset/rhcos/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,13 @@ func osImage(config *types.InstallConfig) (string, error) {
}
return "", fmt.Errorf("%s: No openstack build found", st.FormatPrefix(archName))
case azure.Name:
if config.Azure.CloudName == azure.StackCloud {
if a, ok := streamArch.Artifacts["azurestack"]; ok {
return rhcos.FindArtifactURL(a)
}
return "", fmt.Errorf("%s: No azurestack build found", st.FormatPrefix(archName))
}

ext := streamArch.RHELCoreOSExtensions
if ext == nil {
return "", fmt.Errorf("%s: No azure build found", st.FormatPrefix(archName))
Expand Down
15 changes: 15 additions & 0 deletions pkg/terraform/exec/plugins/azurestackprivate.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package plugins

import (
"github.com/hashicorp/terraform-plugin-sdk/plugin"
"github.com/openshift/installer/pkg/terraform/exec/plugins/azurestackprivate"
)

func init() {
azurestackPrivateProvider := func() {
plugin.Serve(&plugin.ServeOpts{
ProviderFunc: azurestackprivate.Provider,
})
}
KnownPlugins["terraform-provider-azurestackprivate"] = azurestackPrivateProvider
}
Loading