@@ -9,6 +9,14 @@ locals {
9
9
default_cloud_init_merge_type = " list(append)+dict(no_replace,recurse_list)+str(append)"
10
10
}
11
11
12
+ data "oci_core_image" "workers" {
13
+ for_each = { # Skip generation for mode = virtual-node-pool
14
+ for k , v in local . enabled_worker_pools : k => v
15
+ if lookup (v, " mode" , var. worker_pool_mode ) != " virtual-node-pool"
16
+ }
17
+ image_id = each. value . image_id
18
+ }
19
+
12
20
# https://registry.terraform.io/providers/hashicorp/template/latest/docs/data-sources/cloudinit_config.html
13
21
data "cloudinit_config" "workers" {
14
22
for_each = { # Skip generation for mode = virtual-node-pool
@@ -88,9 +96,38 @@ data "cloudinit_config" "workers" {
88
96
}
89
97
}
90
98
99
+ # OKE setup and initialization for Ubuntu images
100
+ dynamic "part" {
101
+ for_each = ! each. value . disable_default_cloud_init && lookup (local. ubuntu_worker_pools , each. key , null ) != null ? [1 ] : []
102
+ content {
103
+ content_type = " text/cloud-config"
104
+ content = jsonencode ({
105
+ # https://cloudinit.readthedocs.io/en/latest/reference/modules.html#apt-configure
106
+ apt = {
107
+ sources = {
108
+ oke-node = {
109
+ source = format (" deb [trusted=yes] https://objectstorage.us-sanjose-1.oraclecloud.com/p/45eOeErEDZqPGiymXZwpeebCNb5lnwzkcQIhtVf6iOF44eet_efdePaF7T8agNYq/n/odx-oke/b/okn-repositories-private/o/prod/ubuntu-%s/kubernetes-%s stable main" ,
110
+ lookup (lookup (local. ubuntu_worker_pools , each. key , {}), " ubuntu_release" , " 22.04" ) == " 22.04" ? " jammy" : " noble" ,
111
+ lookup (lookup (local. ubuntu_worker_pools , each. key , {}), " kubernetes_major_version" , " " ))
112
+ }
113
+ }
114
+ }
115
+ package_update = true
116
+ packages = [{
117
+ apt = [format (" oci-oke-node-all-%s" , lookup (lookup (local. ubuntu_worker_pools , each. key , {}), " kubernetes_minor_version" , " " ))]
118
+ }]
119
+ runcmd = [
120
+ " oke bootstrap"
121
+ ]
122
+ })
123
+ filename = " 50-oke-ubuntu.yml"
124
+ merge_type = local. default_cloud_init_merge_type
125
+ }
126
+ }
127
+
91
128
# OKE startup initialization
92
129
dynamic "part" {
93
- for_each = each. value . disable_default_cloud_init ? [] : [1 ]
130
+ for_each = ! each. value . disable_default_cloud_init && lookup (local . ubuntu_worker_pools , each . key , null ) == null ? [1 ] : []
94
131
content {
95
132
content_type = " text/x-shellscript"
96
133
content = file (" ${ path . module } /cloudinit-oke.sh" )
@@ -143,5 +180,17 @@ data "cloudinit_config" "workers" {
143
180
${ each . key } ["cloud_init"]: ${ try (jsonencode (each. value . cloud_init ), " invalid" )}
144
181
EOT
145
182
}
183
+
184
+ precondition {
185
+ condition = lookup (local. ubuntu_worker_pools , each. key , null ) == null || (
186
+ lookup (local. ubuntu_worker_pools , each. key , null ) != null &&
187
+ contains ([" 22.04" , " 24.04" ], lookup (lookup (local. ubuntu_worker_pools , each. key , {}), " ubuntu_release" , " " ))
188
+ )
189
+ error_message = <<- EOT
190
+ Supported Ubuntu versions are "22.04" and "24.04".
191
+ See https://docs.oracle.com/en-us/iaas/Content/ContEng/Tasks/contengcreatingubuntubasedworkernodes.htm#contengcreatingubuntubasedworkernodes_availabilitycompatibility.
192
+ ${ each . key } : ${ jsonencode (lookup (local. ubuntu_worker_pools , each. key , {}))}
193
+ EOT
194
+ }
146
195
}
147
196
}
0 commit comments