// Copyright IBM Corp. 2016, 2025 // SPDX-License-Identifier: BUSL-1.1 globals { archs = ["amd64", "arm64"] artifact_sources = ["local", "crt", "artifactory"] artifact_types = ["bundle", "package"] backends = ["consul", "raft"] backend_license_path = abspath(var.backend_license_path != null ? var.backend_license_path : joinpath(path.root, "./support/consul.hclic")) backend_tag_key = "VaultStorage" build_tags = { "ce" = ["ui"] "ent" = ["ui", "enterprise", "ent"] "ent.fips1403" = ["ui", "enterprise", "cgo", "hsm", "fips", "fips_140_3", "ent.fips1403"] "ent.hsm" = ["ui", "enterprise", "cgo", "hsm", "venthsm"] "ent.hsm.fips1403" = ["ui", "enterprise", "cgo", "hsm", "fips", "fips_140_3", "ent.hsm.fips1403"] } config_modes = ["env", "file"] consul_editions = ["ce", "ent"] consul_versions = ["1.18.2", "1.19.2", "1.20.6", "1.21.1"] distros_aws = ["amzn", "rhel", "sles", "ubuntu"] distros_fyre = ["centos", "rhel", "rocky", "sles", "ubuntu"] // Different distros may require different packages, or use different aliases for the same package distro_packages = { // NOTE: These versions must always match the output of enos_host_info.target_distro. They are // also used in various modules `artifact`, `ec2_info`, and `softhsm_install`. If you are adding // or modifying keys you probably have to update those modules. amzn = { "2" = ["nc", "openldap-clients"] "2023" = ["nc", "openldap-clients"] } centos = { "9" = ["nc", "openldap-clients"] "10" = ["nc", "openldap-clients"] } rhel = { "8.10" = ["nc", "openldap-clients"] "9.6" = ["nc", "openldap-clients"] "9.7" = ["nc", "openldap-clients"] "9.8" = ["nc", "openldap-clients"] "10.0" = ["nc", "openldap-clients"] "10.1" = ["nc", "openldap-clients"] "10.2" = ["nc", "openldap-clients"] } rocky = { "8.10" = ["nc", "openldap-clients"] "9.7" = ["nc", "openldap-clients"] "9.8" = ["nc", "openldap-clients"] "10.1" = ["nc", "openldap-clients"] "10.2" = ["nc", "openldap-clients"] } sles = { // When installing Vault RPM packages on a SLES AMI, the openssl package provided // isn't named "openssl, which rpm doesn't know how to handle. Therefore we add the // "correctly" named one in our package installation before installing Vault. "15.7" = ["netcat-openbsd", "openssl", "openldap2-client"] "16.0" = ["netcat-openbsd", "openssl", "openldap2-client"] } ubuntu = { "22.04" = ["netcat", "ldap-utils"] "24.04" = ["netcat-openbsd", "ldap-utils"] "26.04" = ["netcat-openbsd", "ldap-utils"] } } distro_version = { amzn = var.distro_version_amzn centos = var.distro_version_centos rhel = var.distro_version_rhel rocky = var.distro_version_rhel sles = var.distro_version_sles ubuntu = var.distro_version_ubuntu } # NOTE: These were generated from fyre_os_info for SVL on 6/9/25. They're a # moving target so it's likely they'll need to be updated in the future. # Make sure distro_packages is updated for any changes that are made here. distro_versions_fyre = { amd64 = { centos = ["10", "9"] rhel = ["10.1", "10.0", "9.6", "8.10"] rocky = ["10.1", "9.7", "8.10"] sles = ["16.0", "15.7"] ubuntu = ["26.04", "24.04", "22.04"] } ppc64le = { centos = ["10", "9"] rhel = ["10.2", "10.0", "9.8", "9.6", "8.10"] rocky = ["10.2", "10.1", "9.7", "9.8"] sles = ["16.0", "15.7"] ubuntu = ["26.04", "24.04", "22.04"] } s390x = { centos = [] rhel = ["10.0", "8.10", "9.6"] rocky = [] sles = ["16.0", "15.7"] ubuntu = ["24.04", "22.04"] } } # The default versions we each architecture/distro combo. We currently use # the latest as that's how things are ordered up above. When we start running # these scenarios we'll use the distro_versions_fyre as sample attributes to # distribute over all versions. distro_version_fyre = { amd64 = { centos = global.distro_versions_fyre["amd64"]["centos"][0] rhel = global.distro_versions_fyre["amd64"]["rhel"][0] rocky = global.distro_versions_fyre["amd64"]["rocky"][0] sles = global.distro_versions_fyre["amd64"]["sles"][0] ubuntu = global.distro_versions_fyre["amd64"]["ubuntu"][0] } ppc64le = { centos = global.distro_versions_fyre["ppc64le"]["centos"][0] rhel = global.distro_versions_fyre["ppc64le"]["rhel"][0] rocky = global.distro_versions_fyre["ppc64le"]["rocky"][0] sles = global.distro_versions_fyre["ppc64le"]["sles"][0] ubuntu = global.distro_versions_fyre["ppc64le"]["ubuntu"][0] } s390x = { centos = null rhel = global.distro_versions_fyre["s390x"]["rhel"][0] rocky = null sles = global.distro_versions_fyre["s390x"]["sles"][0] ubuntu = global.distro_versions_fyre["s390x"]["ubuntu"][0] } } editions = ["ce", "ent", "ent.fips1403", "ent.hsm", "ent.hsm.fips1403"] enterprise_editions = [for e in global.editions : e if e != "ce"] ip_versions = ["4", "6"] package_manager = { "amzn" = "yum" "centos" = "yum" "rhel" = "yum" "rocky" = "yum" "sles" = "zypper" "ubuntu" = "apt" } packages = ["jq"] // Ports that we'll open up for ingress in the security group for all target machines. // Port protocol maps to the IpProtocol schema: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IpPermission.html // Ports that we'll open up for ingress in the security group for all Vault target machines. vault_cluster_ports = { vault_agent : { description = "Vault Agent" port = 8100 protocol = "tcp" }, vault_proxy : { description = "Vault Proxy" port = 8101 protocol = "tcp" }, vault_listener : { description = "Vault Addr listener" port = 8200 protocol = "tcp" }, vault_cluster : { description = "Vault Cluster listener" port = 8201 protocol = "tcp" } } // Ports that we'll open up for ingress in the security group for all Consul target machines. consul_cluster_ports = { consul_rpc : { description = "Consul internal communication" port = 8300 protocol = "tcp" }, consul_serf_lan_tcp : { description = "Consul Serf LAN TCP" port = 8301 protocol = "tcp" }, consul_serf_lan_udp : { description = "Consul Serf LAN UDP" port = 8301 protocol = "udp" }, consul_serf_wan_tcp : { description = "Consul Serf WAN TCP" port = 8302 protocol = "tcp" }, consul_serf_wan_udp : { description = "Consul Serf WAN UDP" port = 8302 protocol = "udp" }, consul_http : { description = "Consul HTTP API" port = 8500 protocol = "tcp" }, consul_https : { description = "Consul HTTPS API" port = 8501 protocol = "tcp" }, consul_grpc : { description = "Consul gRPC API" port = 8502 protocol = "tcp" }, consul_grpc_tls : { description = "Consul gRPC TLS API" port = 8503 protocol = "tcp" }, consul_dns_tcp : { description = "Consul TCP DNS Server" port = 8600 protocol = "tcp" }, consul_dns_udp : { description = "Consul UDP DNS Server" port = 8600 protocol = "udp" } } ingress_ports = { ssh : { description = "SSH" port = 22 protocol = "tcp" } } // Database configurations for Vault database secrets engine testing database_configs = { postgres : { port = 5432 version = "16-alpine" username = "postgres" password = "secret" database = "postgres" description = "PostgreSQL Server" }, mongodb : { port = 27017 version = "7.0" username = "admin" password = "secret" database = "admin" description = "MongoDB Server" }, mysql : { port = 3306 version = "8.0" username = "root" password = "secret" database = "mysql" description = "MySQL Server" } } // Ports that we'll open up for ingress in the security group for all external integration target machines. integration_host_ports = merge( { ldap : { description = "LDAP" port = 389 protocol = "tcp" }, ldaps : { description = "LDAPS" port = 636 protocol = "tcp" }, kmip : { description = "KMIP Server" port = 5696 protocol = "tcp" } }, // Add database ports dynamically from database_configs { for db_name, db_config in global.database_configs : db_name => { description = db_config.description port = db_config.port protocol = "tcp" } } ) // Combine all ports into a single map ports = merge( global.vault_cluster_ports, global.consul_cluster_ports, global.ingress_ports, global.integration_host_ports ) seals = ["awskms", "pkcs11", "shamir"] tags = merge({ "Project Name" : var.project_name "Project" : "Enos", "Environment" : "ci" }, var.tags) aws_api_config = { max_retries = 5 default_timeout = "5m" resource_timeout = "10m" } vault_install_dir = { bundle = "/opt/vault/bin" package = "/usr/bin" } vault_license_path = abspath(var.vault_license_path != null ? var.vault_license_path : joinpath(path.root, "./support/vault.hclic")) vault_tag_key = "vault-cluster" vault_disable_mlock = false }