mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-05-02 06:16:08 -04:00
terraform: Azure Marketplace image support (#2651)
* terraform: add Azure marketplace variable Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> * config: add Azure marketplace variable Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> * cli: use Terraform variables from config Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> * terraform: pass down marketplace variable * image: pad Azure images to 1GiB * terraform: add version attribute to marketplace image * semver: allow versions to be exported without prefix * cli: boolean var to use marketplace images * config: remove dive key * dev-docs: add instructions on how to use marketplace images * terraform: fix unit test * terraform: only fetch image for non-marketplace images * mpimage: refactor image selection Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> * [remove] increase minor version for image build Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> * terraform: ignore changes to source_image_reference on upgrade * operator: add support for parsing Azure marketplace images Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> * upgrade: fix imagefetcher call * docs: add info about azure marketplace * image: ensure more than 1GiB in size * image: test to pad to 2GiB * version: change back to v2.14.0-pre * image: GPT-conformant image size padding * [remove] increase version * mpimage: inline prefix func Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> * ci: add marketplace image e2e test Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> * [remove] register workflow * ci: fix workflow name * ci: only allow azure test * cli: add marketplace image input to interface * cli: fix argument passing * version: roll back to v2.14.0 * ci: add force-flag support * Update docs/docs/overview/license.md * Update dev-docs/workflows/marketplace-images.md Co-authored-by: Moritz Eckert <m1gh7ym0@gmail.com> --------- Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> Co-authored-by: Moritz Eckert <m1gh7ym0@gmail.com> Co-authored-by: Thomas Tendyck <51411342+thomasten@users.noreply.github.com>
This commit is contained in:
parent
e113253262
commit
c15e4efef6
40 changed files with 607 additions and 34 deletions
|
@ -46,9 +46,10 @@ resource "azurerm_linux_virtual_machine_scale_set" "scale_set" {
|
|||
disable_password_authentication = false
|
||||
upgrade_mode = "Manual"
|
||||
secure_boot_enabled = var.secure_boot
|
||||
source_image_id = var.image_id
|
||||
tags = local.tags
|
||||
zones = var.zones
|
||||
# specify the image id only if a non-marketplace image is used
|
||||
source_image_id = var.marketplace_image != null ? null : var.image_id
|
||||
tags = local.tags
|
||||
zones = var.zones
|
||||
identity {
|
||||
type = "UserAssigned"
|
||||
identity_ids = [var.user_assigned_identity]
|
||||
|
@ -72,6 +73,26 @@ resource "azurerm_linux_virtual_machine_scale_set" "scale_set" {
|
|||
}
|
||||
}
|
||||
|
||||
# Specify marketplace plan and image if set
|
||||
dynamic "plan" {
|
||||
for_each = var.marketplace_image != null ? [1] : [] # if a marketplace image is set
|
||||
content {
|
||||
name = var.marketplace_image.name
|
||||
publisher = var.marketplace_image.publisher
|
||||
product = var.marketplace_image.product
|
||||
}
|
||||
}
|
||||
dynamic "source_image_reference" {
|
||||
for_each = var.marketplace_image != null ? [1] : [] # if a marketplace image is set
|
||||
content {
|
||||
publisher = var.marketplace_image.publisher
|
||||
offer = var.marketplace_image.product
|
||||
sku = var.marketplace_image.name
|
||||
version = var.marketplace_image.version
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
data_disk {
|
||||
storage_account_type = var.state_disk_type
|
||||
disk_size_gb = var.state_disk_size
|
||||
|
@ -94,9 +115,10 @@ resource "azurerm_linux_virtual_machine_scale_set" "scale_set" {
|
|||
|
||||
lifecycle {
|
||||
ignore_changes = [
|
||||
name, # required. Allow legacy scale sets to keep their old names
|
||||
instances, # required. autoscaling modifies the instance count externally
|
||||
source_image_id, # required. update procedure modifies the image id externally
|
||||
name, # required. Allow legacy scale sets to keep their old names
|
||||
instances, # required. autoscaling modifies the instance count externally
|
||||
source_image_id, # required. update procedure modifies the image id externally
|
||||
source_image_reference, # required. update procedure modifies the image reference externally
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,3 +96,14 @@ variable "secure_boot" {
|
|||
default = false
|
||||
description = "Whether to deploy the cluster nodes with secure boot."
|
||||
}
|
||||
|
||||
variable "marketplace_image" {
|
||||
type = object({
|
||||
name = string
|
||||
publisher = string
|
||||
product = string
|
||||
version = string
|
||||
})
|
||||
default = null
|
||||
description = "Marketplace image to use for the cluster nodes."
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue