mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-01-31 09:43:23 -05:00
c15e4efef6
* 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>
125 lines
3.7 KiB
HCL
125 lines
3.7 KiB
HCL
terraform {
|
|
required_providers {
|
|
azurerm = {
|
|
source = "hashicorp/azurerm"
|
|
version = "3.74.0"
|
|
}
|
|
random = {
|
|
source = "hashicorp/random"
|
|
version = "3.5.1"
|
|
}
|
|
}
|
|
}
|
|
|
|
locals {
|
|
tags = merge(
|
|
var.tags,
|
|
{ constellation-role = var.role },
|
|
{ constellation-node-group = var.node_group_name },
|
|
)
|
|
group_uid = random_id.uid.hex
|
|
name = "${var.base_name}-${var.role}-${local.group_uid}"
|
|
}
|
|
|
|
resource "random_id" "uid" {
|
|
byte_length = 4
|
|
}
|
|
resource "random_password" "password" {
|
|
length = 16
|
|
min_lower = 1
|
|
min_upper = 1
|
|
min_numeric = 1
|
|
min_special = 1
|
|
}
|
|
|
|
resource "azurerm_linux_virtual_machine_scale_set" "scale_set" {
|
|
name = local.name
|
|
resource_group_name = var.resource_group
|
|
location = var.location
|
|
sku = var.instance_type
|
|
instances = var.initial_count
|
|
admin_username = "adminuser"
|
|
admin_password = random_password.password.result
|
|
overprovision = false
|
|
provision_vm_agent = false
|
|
vtpm_enabled = true
|
|
disable_password_authentication = false
|
|
upgrade_mode = "Manual"
|
|
secure_boot_enabled = var.secure_boot
|
|
# 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]
|
|
}
|
|
|
|
boot_diagnostics {}
|
|
|
|
dynamic "os_disk" {
|
|
for_each = var.confidential_vm ? [1] : [] # if confidential_vm is true
|
|
content {
|
|
security_encryption_type = "VMGuestStateOnly"
|
|
caching = "ReadWrite"
|
|
storage_account_type = "Premium_LRS"
|
|
}
|
|
}
|
|
dynamic "os_disk" {
|
|
for_each = var.confidential_vm ? [] : [1] # else
|
|
content {
|
|
caching = "ReadWrite"
|
|
storage_account_type = "Premium_LRS"
|
|
}
|
|
}
|
|
|
|
# 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
|
|
caching = "ReadWrite"
|
|
lun = 0
|
|
}
|
|
|
|
network_interface {
|
|
name = "node-network"
|
|
primary = true
|
|
network_security_group_id = var.network_security_group_id
|
|
|
|
ip_configuration {
|
|
name = "node-network"
|
|
primary = true
|
|
subnet_id = var.subnet_id
|
|
load_balancer_backend_address_pool_ids = var.backend_address_pool_ids
|
|
}
|
|
}
|
|
|
|
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
|
|
source_image_reference, # required. update procedure modifies the image reference externally
|
|
]
|
|
}
|
|
}
|