From 5d566ef164a65c090bb9c7753eeffd1c43ac3aed Mon Sep 17 00:00:00 2001 From: Niraj Patil Date: Thu, 27 Nov 2025 14:16:07 -0500 Subject: [PATCH 1/3] feat: add optoinal cas tfvars in aws --- examples/sample-input-optionalcas.tfvars | 137 +++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 examples/sample-input-optionalcas.tfvars diff --git a/examples/sample-input-optionalcas.tfvars b/examples/sample-input-optionalcas.tfvars new file mode 100644 index 00000000..c7e134d8 --- /dev/null +++ b/examples/sample-input-optionalcas.tfvars @@ -0,0 +1,137 @@ +# !NOTE! - These are only a subset of the variables in CONFIG-VARS.md provided +# as examples. Customize this file to add any variables from CONFIG-VARS.md whose +# default values you want to change. + +# **************** REQUIRED VARIABLES **************** +# These required variables' values MUST be provided by the User +prefix = "" +location = "" # e.g., "us-east-1" +# **************** REQUIRED VARIABLES **************** + +# !NOTE! - Without specifying your CIDR block access rules, ingress traffic +# to your cluster will be blocked by default. + +# ************** RECOMMENDED VARIABLES *************** +default_public_access_cidrs = [] # e.g., ["123.45.6.89/32"] +ssh_public_key = "~/.ssh/id_rsa.pub" +# ************** RECOMMENDED VARIABLES *************** + +# Tags for all tagable items in your cluster. +tags = {} # e.g., { "key1" = "value1", "key2" = "value2" } + +# Postgres config - By having this entry a database server is created. If you do not +# need an external database server remove the 'postgres_servers' +# block below. +postgres_servers = { + default = {}, +} + +## Cluster config +kubernetes_version = "1.32" +default_nodepool_node_count = 2 +default_nodepool_vm_type = "r6in.2xlarge" +default_nodepool_custom_data = "" + +## General +efs_performance_mode = "maxIO" +storage_type = "standard" + +# **************** OPTIONAL CAS CONFIGURATION **************** +# This configuration is optimized for SAS Viya Programming-only deployments. +# +# Two options for making CAS optional: +# 1. Keep the cas block commented out (no CAS node pool created) +# - No CAS node pool created +# - CAS cannot be deployed without infrastructure changes +# +# 2. Set min_nodes=0 for cas node pool (uncomment the cas block below) +# - Creates just node pool metadata +# - No VMs provisioned until CAS workload is deployed +# - Autoscaler provisions nodes on-demand when needed +# - Enables CAS deployment without infrastructure changes +# ****************************************************************** + +## Cluster Node Pools config +node_pools = { +# cas = { +# "vm_type" = "r6idn.2xlarge" +# "cpu_type" = "AL2023_x86_64_STANDARD" +# "os_disk_type" = "gp2" +# "os_disk_size" = 200 +# "os_disk_iops" = 0 +# "min_nodes" = 0 +# "max_nodes" = 5 +# "node_taints" = ["workload.sas.com/class=cas:NoSchedule"] +# "node_labels" = { +# "workload.sas.com/class" = "cas" +# } +# "custom_data" = "" +# "metadata_http_endpoint" = "enabled" +# "metadata_http_tokens" = "required" +# "metadata_http_put_response_hop_limit" = 1 +# }, + compute = { + "vm_type" = "m6idn.xlarge" + "cpu_type" = "AL2023_x86_64_STANDARD" + "os_disk_type" = "gp2" + "os_disk_size" = 200 + "os_disk_iops" = 0 + "min_nodes" = 1 + "max_nodes" = 5 + "node_taints" = ["workload.sas.com/class=compute:NoSchedule"] + "node_labels" = { + "workload.sas.com/class" = "compute" + "launcher.sas.com/prepullImage" = "sas-programming-environment" + } + "custom_data" = "" + "metadata_http_endpoint" = "enabled" + "metadata_http_tokens" = "required" + "metadata_http_put_response_hop_limit" = 1 + }, + stateless = { + "vm_type" = "m6in.xlarge" + "cpu_type" = "AL2023_x86_64_STANDARD" + "os_disk_type" = "gp2" + "os_disk_size" = 200 + "os_disk_iops" = 0 + "min_nodes" = 1 + "max_nodes" = 5 + "node_taints" = ["workload.sas.com/class=stateless:NoSchedule"] + "node_labels" = { + "workload.sas.com/class" = "stateless" + } + "custom_data" = "" + "metadata_http_endpoint" = "enabled" + "metadata_http_tokens" = "required" + "metadata_http_put_response_hop_limit" = 1 + }, + stateful = { + "vm_type" = "m6in.xlarge" + "cpu_type" = "AL2023_x86_64_STANDARD" + "os_disk_type" = "gp2" + "os_disk_size" = 200 + "os_disk_iops" = 0 + "min_nodes" = 1 + "max_nodes" = 3 + "node_taints" = ["workload.sas.com/class=stateful:NoSchedule"] + "node_labels" = { + "workload.sas.com/class" = "stateful" + } + "custom_data" = "" + "metadata_http_endpoint" = "enabled" + "metadata_http_tokens" = "required" + "metadata_http_put_response_hop_limit" = 1 + } +} + + +# Jump Server +create_jump_vm = true +jump_vm_admin = "jumpuser" +jump_vm_type = "t3.medium" + +# NFS Server +# required ONLY when storage_type is "standard" to create NFS Server VM +create_nfs_public_ip = false +nfs_vm_admin = "nfsuser" +nfs_vm_type = "m6in.xlarge" \ No newline at end of file From e3051633dff8e44c53b6ce4d20f9ffa35d2d4192 Mon Sep 17 00:00:00 2001 From: Niraj Patil Date: Wed, 3 Dec 2025 00:31:37 -0500 Subject: [PATCH 2/3] feat: mention only one way for optional CAS in AWS --- examples/sample-input-optionalcas.tfvars | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/examples/sample-input-optionalcas.tfvars b/examples/sample-input-optionalcas.tfvars index c7e134d8..d3e9271e 100644 --- a/examples/sample-input-optionalcas.tfvars +++ b/examples/sample-input-optionalcas.tfvars @@ -39,16 +39,9 @@ storage_type = "standard" # **************** OPTIONAL CAS CONFIGURATION **************** # This configuration is optimized for SAS Viya Programming-only deployments. # -# Two options for making CAS optional: -# 1. Keep the cas block commented out (no CAS node pool created) -# - No CAS node pool created -# - CAS cannot be deployed without infrastructure changes -# -# 2. Set min_nodes=0 for cas node pool (uncomment the cas block below) -# - Creates just node pool metadata -# - No VMs provisioned until CAS workload is deployed -# - Autoscaler provisions nodes on-demand when needed -# - Enables CAS deployment without infrastructure changes +# Keep the cas block commented out to avoid CAS node pool creation: +# - No CAS node pool or EC2 instances created +# - Zero cost for CAS infrastructure # ****************************************************************** ## Cluster Node Pools config From 65a74e8c35690cdb310c3d2f3309efc8514445e2 Mon Sep 17 00:00:00 2001 From: Niraj Patil Date: Fri, 5 Dec 2025 04:04:37 -0500 Subject: [PATCH 3/3] feat: add note for multizone deployments --- examples/sample-input-optionalcas.tfvars | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/sample-input-optionalcas.tfvars b/examples/sample-input-optionalcas.tfvars index d3e9271e..9727af46 100644 --- a/examples/sample-input-optionalcas.tfvars +++ b/examples/sample-input-optionalcas.tfvars @@ -127,4 +127,7 @@ jump_vm_type = "t3.medium" # required ONLY when storage_type is "standard" to create NFS Server VM create_nfs_public_ip = false nfs_vm_admin = "nfsuser" -nfs_vm_type = "m6in.xlarge" \ No newline at end of file +nfs_vm_type = "m6in.xlarge" + +# NOTE: For multi-zone deployments, keep the CAS configuration changes above +# and refer to sample-input-multizone.tfvars for additional zone settings \ No newline at end of file