@@ -92,6 +92,122 @@ locals {
92
92
]
93
93
94
94
docker_machine_adds_name_tag = signum (sum (local. docker_machine_version_test )) <= 0
95
+
96
+ template_user_data = templatefile (" ${ path . module } /template/user-data.tftpl" ,
97
+ {
98
+ eip = var.runner_instance.use_eip ? local.template_eip : " "
99
+ logging = var.runner_cloudwatch.enable ? local.logging_user_data : " "
100
+ gitlab_runner = local.template_gitlab_runner
101
+ user_data_trace_log = var.debug.trace_runner_user_data
102
+ yum_update = var.runner_install.yum_update ? local.file_yum_update : " "
103
+ extra_config = var.runner_install.start_script
104
+ })
105
+
106
+ file_yum_update = file (" ${ path . module } /template/yum_update.tftpl" )
107
+
108
+ template_eip = templatefile (" ${ path . module } /template/eip.tftpl" , {
109
+ eip = join (" ," , [for eip in aws_eip . gitlab_runner : eip . public_ip ])
110
+ })
111
+
112
+ template_gitlab_runner = templatefile (" ${ path . module } /template/gitlab-runner.tftpl" ,
113
+ {
114
+ gitlab_runner_version = var.runner_gitlab.runner_version
115
+ docker_machine_version = var.runner_install.docker_machine_version
116
+ docker_machine_download_url = var.runner_install.docker_machine_download_url
117
+ runners_config = local.template_runner_config
118
+ runners_userdata = var.runner_worker_docker_machine_instance.start_script
119
+ runners_executor = var.runner_worker.type
120
+ runners_install_amazon_ecr_credential_helper = var.runner_install.amazon_ecr_credential_helper
121
+ curl_cacert = length (var. runner_gitlab . certificate ) > 0 ? " --cacert /etc/gitlab-runner/certs/gitlab.crt" : " "
122
+ pre_install_certificates = local.pre_install_certificates
123
+ pre_install = var.runner_install.pre_install_script
124
+ post_install = var.runner_install.post_install_script
125
+ runners_gitlab_url = var.runner_gitlab.url
126
+ runners_token = var.runner_gitlab.registration_token
127
+ secure_parameter_store_gitlab_runner_registration_token_name = var.runner_gitlab_registration_token_secure_parameter_store_name
128
+ secure_parameter_store_runner_token_key = local.secure_parameter_store_runner_token_key
129
+ secure_parameter_store_runner_sentry_dsn = local.secure_parameter_store_runner_sentry_dsn
130
+ secure_parameter_store_gitlab_token_name = var.runner_gitlab.access_token_secure_parameter_store_name
131
+ secure_parameter_store_region = data.aws_region.current.name
132
+ gitlab_runner_registration_token = var.runner_gitlab_registration_config.registration_token
133
+ gitlab_runner_description = var.runner_gitlab_registration_config[" description" ]
134
+ gitlab_runner_tag_list = var.runner_gitlab_registration_config[" tag_list" ]
135
+ gitlab_runner_locked_to_project = var.runner_gitlab_registration_config[" locked_to_project" ]
136
+ gitlab_runner_run_untagged = var.runner_gitlab_registration_config[" run_untagged" ]
137
+ gitlab_runner_maximum_timeout = var.runner_gitlab_registration_config[" maximum_timeout" ]
138
+ gitlab_runner_type = var.runner_gitlab_registration_config[" type" ]
139
+ gitlab_runner_group_id = var.runner_gitlab_registration_config[" group_id" ]
140
+ gitlab_runner_project_id = var.runner_gitlab_registration_config[" project_id" ]
141
+ gitlab_runner_access_level = var.runner_gitlab_registration_config.access_level
142
+ sentry_dsn = var.runner_manager.sentry_dsn
143
+ public_key = var.runner_worker_docker_machine_fleet.enable == true ? tls_private_key.fleet[0 ].public_key_openssh : " "
144
+ use_fleet = var.runner_worker_docker_machine_fleet.enable
145
+ private_key = var.runner_worker_docker_machine_fleet.enable == true ? tls_private_key.fleet[0 ].private_key_pem : " "
146
+ use_new_runner_authentication_gitlab_16 = var.runner_gitlab_registration_config.type != " "
147
+ })
148
+
149
+ template_runner_config = templatefile (" ${ path . module } /template/runner-config.tftpl" ,
150
+ {
151
+ aws_region = data.aws_region.current.name
152
+ gitlab_url = var.runner_gitlab.url
153
+ gitlab_clone_url = var.runner_gitlab.url_clone
154
+ tls_ca_file = length (var. runner_gitlab . certificate ) > 0 ? " tls-ca-file=\" /etc/gitlab-runner/certs/gitlab.crt\" " : " "
155
+ runners_machine_autoscaling = [for config in var . runner_worker_docker_machine_autoscaling_options : {
156
+ for key , value in config :
157
+ # Convert key from snake_case to PascalCase which is the casing for this section.
158
+ join (" " , [for subkey in split (" _" , key) : title (subkey)]) => jsonencode (value) if value != null
159
+ }]
160
+ runners_vpc_id = var.vpc_id
161
+ runners_subnet_id = var.subnet_id
162
+ runners_subnet_ids = length (var. runner_worker_docker_machine_instance . subnet_ids ) > 0 ? var.runner_worker_docker_machine_instance.subnet_ids : [var.subnet_id]
163
+ runners_aws_zone = data.aws_availability_zone.runners.name_suffix
164
+ runners_instance_types = var.runner_worker_docker_machine_instance.types
165
+ runners_spot_price_bid = var.runner_worker_docker_machine_instance_spot.max_price == " on-demand-price" || var.runner_worker_docker_machine_instance_spot.max_price == null ? " " : var.runner_worker_docker_machine_instance_spot.max_price
166
+ runners_ami = var.runner_worker.type == " docker+machine" ? data.aws_ami.docker- machine[0 ].id : " "
167
+ runners_security_group_name = var.runner_worker.type == " docker+machine" ? aws_security_group.docker_machine[0 ].name : " "
168
+ runners_max_growth_rate = var.runner_worker_docker_machine_instance.max_growth_rate
169
+ runners_monitoring = var.runner_worker_docker_machine_instance.monitoring
170
+ runners_ebs_optimized = var.runner_worker_docker_machine_instance.ebs_optimized
171
+ runners_instance_profile = var.runner_worker.type == " docker+machine" ? aws_iam_instance_profile.docker_machine[0 ].name : " "
172
+ docker_machine_options = length (local. docker_machine_options_string ) == 1 ? " " : local.docker_machine_options_string
173
+ docker_machine_name = format (" %s-%s" , local. runner_tags_merged [" Name" ], " %s" ) # %s is always needed
174
+ runners_name = var.runner_instance.name
175
+ runners_tags = replace (replace (local. runner_tags_string , " ,," , " ," ), " /,$/" , " " )
176
+ runners_token = var.runner_gitlab.registration_token
177
+ runners_userdata = var.runner_worker_docker_machine_instance.start_script
178
+ runners_executor = var.runner_worker.type
179
+ runners_limit = var.runner_worker.max_jobs
180
+ runners_concurrent = var.runner_manager.maximum_concurrent_jobs
181
+ runners_pull_policies = local.runners_pull_policies
182
+ runners_idle_count = var.runner_worker_docker_machine_instance.idle_count
183
+ runners_idle_time = var.runner_worker_docker_machine_instance.idle_time
184
+ runners_max_builds = local.runners_max_builds_string
185
+ runners_root_size = var.runner_worker_docker_machine_instance.root_size
186
+ runners_volume_type = var.runner_worker_docker_machine_instance.volume_type
187
+ runners_iam_instance_profile_name = var.runner_worker_docker_machine_role.profile_name
188
+ runners_use_private_address_only = var.runner_worker_docker_machine_instance.private_address_only
189
+ runners_use_private_address = ! var.runner_worker_docker_machine_instance.private_address_only
190
+ runners_request_spot_instance = var.runner_worker_docker_machine_instance_spot.enable
191
+ runners_environment_vars = jsonencode (var. runner_worker . environment_variables )
192
+ runners_pre_build_script = var.runner_worker_gitlab_pipeline.pre_build_script
193
+ runners_post_build_script = var.runner_worker_gitlab_pipeline.post_build_script
194
+ runners_pre_clone_script = var.runner_worker_gitlab_pipeline.pre_clone_script
195
+ runners_request_concurrency = var.runner_worker.request_concurrency
196
+ runners_output_limit = var.runner_worker.output_limit
197
+ runners_check_interval = var.runner_manager.gitlab_check_interval
198
+ runners_volumes_tmpfs = join (" \n " , [for v in var . runner_worker_docker_volumes_tmpfs : format (" \" %s\" = \" %s\" " , v. volume , v. options )])
199
+ runners_services_volumes_tmpfs = join (" \n " , [for v in var . runner_worker_docker_services_volumes_tmpfs : format (" \" %s\" = \" %s\" " , v. volume , v. options )])
200
+ runners_docker_services = local.runners_docker_services
201
+ runners_docker_options = local.runners_docker_options_toml
202
+ bucket_name = local.bucket_name
203
+ shared_cache = var.runner_worker_cache.shared
204
+ sentry_dsn = var.runner_manager.sentry_dsn
205
+ prometheus_listen_address = var.runner_manager.prometheus_listen_address
206
+ auth_type = var.runner_worker_cache.authentication_type
207
+ use_fleet = var.runner_worker_docker_machine_fleet.enable
208
+ launch_template = var.runner_worker_docker_machine_fleet.enable == true ? aws_launch_template.fleet_gitlab_runner[0 ].name : " "
209
+ }
210
+ )
95
211
}
96
212
97
213
resource "local_file" "config_toml" {
0 commit comments