Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .buildkite/pipeline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
steps:
- label: ":lipstick:"
command: .buildkite/shfmt.sh
- label: ":lipstick:"
command: .buildkite/terraform-fmt.sh
- label: ":lint-roller:"
command: .buildkite/shellcheck.sh
- label: ":terraform:"
command: .buildkite/terraform-validate.sh
9 changes: 9 additions & 0 deletions .buildkite/shellcheck.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env bash

set -ex

cd "$(dirname "${BASH_SOURCE[0]}")"/..

SHELL_SCRIPTS=()
while IFS='' read -r line; do SHELL_SCRIPTS+=("$line"); done < <(find . -type f -name '*.sh')
shellcheck --external-sources --source-path="SCRIPTDIR" --color=always "${SHELL_SCRIPTS[@]}"
7 changes: 7 additions & 0 deletions .buildkite/shfmt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env bash

set -ex

cd "$(dirname "${BASH_SOURCE[0]}")"/..

shfmt -i 2 -ci -d .
7 changes: 7 additions & 0 deletions .buildkite/terraform-fmt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env bash

set -ex

cd "$(dirname "${BASH_SOURCE[0]}")"/..

terraform fmt -check -recursive .
23 changes: 23 additions & 0 deletions .buildkite/terraform-validate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/usr/bin/env bash

set -ex

cd "$(dirname "${BASH_SOURCE[0]}")"/..

MODULES=(
./modules/networking
./modules/docker-mirror
./modules/executors
.
)

# Ensure terraform validate has a valid region
# https://github.com/hashicorp/terraform/issues/21408#issuecomment-495746582
export AWS_DEFAULT_REGION=us-east-2

for module in "${MODULES[@]}"; do
pushd "${module}"
terraform init
terraform validate .
popd
done
26 changes: 26 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
root = true

[*]
insert_final_newline = true
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
indent_style = space
indent_size = 4

[*.go]
indent_style = tab

[{*.json,*.yml,*.yaml,*.md}]
indent_size = 2

[*.md]
trim_trailing_whitespace = false

[{*.sh,*.bash}]
indent_style = space
indent_size = 2
switch_case_indent = true

[**/node_modules/**]
ignore = true
5 changes: 5 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"recommendations": [
"EditorConfig.editorconfig"
]
}
5 changes: 3 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
{
"editor.formatOnSave": true,
"files.exclude": {
"**/.git": true,
"**/.svn": true,
Expand All @@ -8,5 +7,7 @@
"**/.DS_Store": true,
"**/Thumbs.db": true,
"plan": true
}
},
"editor.formatOnSave": true,
"shellformat.flag": "-i 2 -ci",
}
55 changes: 39 additions & 16 deletions main.tf
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
locals {
availability_zone = "us-west-2a"
docker_mirror_static_ip = "10.0.1.4"
}

# Datasource to fetch the latest AMI of Ubuntu 20.04 for use in the docker mirror.
data "aws_ami" "ubuntu" {
most_recent = true
Expand All @@ -19,23 +14,51 @@ data "aws_ami" "ubuntu" {
}

module "aws-networking" {
source = "./modules/networking/aws"
availability_zone = local.availability_zone
source = "./modules/networking"

availability_zone = var.availability_zone
}

module "aws-docker-mirror" {
source = "./modules/docker-mirror/aws"
source = "./modules/docker-mirror"

availability_zone = local.availability_zone
vpc_id = module.aws-networking.vpc_id
subnet_id = module.aws-networking.subnet_id
machine_ami = data.aws_ami.ubuntu.id
static_ip = local.docker_mirror_static_ip
vpc_id = module.aws-networking.vpc_id
subnet_id = module.aws-networking.subnet_id
machine_ami = coalesce(var.docker_mirror_machine_ami, data.aws_ami.ubuntu.id)
machine_type = var.docker_mirror_machine_type
boot_disk_size = var.docker_mirror_boot_disk_size
static_ip = var.docker_mirror_static_ip
ssh_access_cidr_range = var.docker_mirror_ssh_access_cidr_range
http_access_cidr_range = var.docker_mirror_http_access_cidr_range
}

module "aws-executor" {
source = "./modules/executors/aws"
source = "./modules/executors"

vpc_id = module.aws-networking.vpc_id
subnet_id = module.aws-networking.subnet_id
vpc_id = module.aws-networking.vpc_id
subnet_id = module.aws-networking.subnet_id
resource_prefix = var.executor_resource_prefix
machine_image = var.executor_machine_image
machine_type = var.executor_machine_type
boot_disk_size = var.executor_boot_disk_size
preemptible_machines = var.executor_preemptible_machines
instance_tag = var.executor_instance_tag
ssh_access_cidr_range = var.executor_ssh_access_cidr_range
http_access_cidr_range = var.executor_http_access_cidr_range
sourcegraph_external_url = var.executor_sourcegraph_external_url
sourcegraph_executor_proxy_username = var.executor_sourcegraph_executor_proxy_username
sourcegraph_executor_proxy_password = var.executor_sourcegraph_executor_proxy_password
queue_name = var.executor_queue_name
maximum_runtime_per_job = var.executor_maximum_runtime_per_job
maximum_num_jobs = var.executor_maximum_num_jobs
num_total_jobs = var.executor_num_total_jobs
max_active_time = var.executor_max_active_time
firecracker_num_cpus = var.executor_firecracker_num_cpus
firecracker_memory = var.executor_firecracker_memory
firecracker_disk_space = var.executor_firecracker_disk_space
min_replicas = var.executor_min_replicas
max_replicas = var.executor_max_replicas
jobs_per_instance_scaling = var.executor_jobs_per_instance_scaling
metrics_environment_label = var.executor_metrics_environment_label
docker_registry_mirror = var.executor_docker_registry_mirror
}
4 changes: 2 additions & 2 deletions modules/docker-mirror/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ variable "static_ip" {
variable "ssh_access_cidr_range" {
type = string
default = "0.0.0.0/0"
description = "CIDR range from where SSH access to the EC2 instance is acceptable from."
description = "CIDR range from where SSH access to the EC2 instance is acceptable."
}

variable "http_access_cidr_range" {
type = string
default = "10.0.0.0/16"
description = "CIDR range from where HTTP access to the Docker registry is acceptable from."
description = "CIDR range from where HTTP access to the Docker registry is acceptable."
}
24 changes: 12 additions & 12 deletions modules/executors/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -125,18 +125,18 @@ resource "aws_launch_template" "executor" {
# Render the startup script using all variables defined.
user_data = base64encode(templatefile("${path.module}/startup-script.sh.tpl", {
environment_variables = {
"EXECUTOR_DOCKER_REGISTRY_MIRROR" = var.executor_docker_registry_mirror
"EXECUTOR_DOCKER_REGISTRY_MIRROR" = var.docker_registry_mirror
"SOURCEGRAPH_EXTERNAL_URL" = var.sourcegraph_external_url
"SOURCEGRAPH_EXECUTOR_PROXY_USERNAME" = var.sourcegraph_executor_proxy_username
"SOURCEGRAPH_EXECUTOR_PROXY_PASSWORD" = var.sourcegraph_executor_proxy_password
"EXECUTOR_MAXIMUM_NUM_JOBS" = var.executor_maximum_num_jobs
"EXECUTOR_FIRECRACKER_NUM_CPUS" = var.executor_firecracker_num_cpus
"EXECUTOR_FIRECRACKER_MEMORY" = var.executor_firecracker_memory
"EXECUTOR_FIRECRACKER_DISK_SPACE" = var.executor_firecracker_disk_space
"EXECUTOR_QUEUE_NAME" = var.executor_queue_name
"EXECUTOR_MAXIMUM_RUNTIME_PER_JOB" = var.executor_maximum_runtime_per_job
"EXECUTOR_NUM_TOTAL_JOBS" = var.executor_num_total_jobs
"EXECUTOR_MAX_ACTIVE_TIME" = var.executor_max_active_time
"EXECUTOR_MAXIMUM_NUM_JOBS" = var.maximum_num_jobs
"EXECUTOR_FIRECRACKER_NUM_CPUS" = var.firecracker_num_cpus
"EXECUTOR_FIRECRACKER_MEMORY" = var.firecracker_memory
"EXECUTOR_FIRECRACKER_DISK_SPACE" = var.firecracker_disk_space
"EXECUTOR_QUEUE_NAME" = var.queue_name
"EXECUTOR_MAXIMUM_RUNTIME_PER_JOB" = var.maximum_runtime_per_job
"EXECUTOR_NUM_TOTAL_JOBS" = var.num_total_jobs
"EXECUTOR_MAX_ACTIVE_TIME" = var.max_active_time
}
}))

Expand Down Expand Up @@ -172,7 +172,7 @@ resource "aws_autoscaling_group" "autoscaler" {
# Used for metrics scraping discovery.
tag {
key = "executor_tag"
value = var.executor_tag
value = var.instance_tag
propagate_at_launch = true
}

Expand Down Expand Up @@ -206,7 +206,7 @@ resource "aws_cloudwatch_metric_alarm" "scale_out_alarm" {

dimensions = {
"environment" = var.metrics_environment_label
"queueName" = var.executor_queue_name
"queueName" = var.queue_name
}
}
}
Expand Down Expand Up @@ -269,7 +269,7 @@ resource "aws_cloudwatch_metric_alarm" "scale_in_alarm" {

dimensions = {
"environment" = var.metrics_environment_label
"queueName" = var.executor_queue_name
"queueName" = var.queue_name
}
}
}
Expand Down
Loading