Skip to content

Commit 6c1fc74

Browse files
author
Robert Chu
committed
Switches to using frontdoor version of azure terraform stack.
1 parent c5c6512 commit 6c1fc74

8 files changed

Lines changed: 85 additions & 31 deletions

File tree

.github/workflows/publish.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ jobs:
239239
env:
240240
DNS_SUBDOMAIN: ${{secrets.DNS_SUBDOMAIN}}
241241
DNS_ZONE_ID: ${{secrets.DNS_ZONE_ID}}
242-
IMAGE_TAG: ${{steps.plan.outputs.hashtag}}
242+
IMAGE_TAG: ${{steps.plan.outputs.version}}
243243

244244
- name: Setup Terraform
245245
uses: hashicorp/setup-terraform@v1
@@ -340,7 +340,8 @@ jobs:
340340
env:
341341
DNS_SUBDOMAIN: ${{secrets.DNS_SUBDOMAIN}}
342342
DNS_ZONE_NAME: ${{secrets.DNS_ZONE_NAME}}
343-
IMAGE_TAG: ${{steps.plan.outputs.hashtag}}
343+
DNS_ZONE_RESOURCE_GROUP_NAME: ${{secrets.DNS_ZONE_RESOURCE_GROUP_NAME}}
344+
IMAGE_TAG: ${{steps.plan.outputs.version}}
344345

345346
- name: Setup Terraform
346347
uses: hashicorp/setup-terraform@v1

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,5 +120,10 @@ swabseq-analysis.Rproj
120120
# VSCode
121121
.vscode/
122122

123+
# Terraform
124+
terraform.tfvars
125+
.terraform/
126+
.terraform.lock.hcl
127+
123128
# This is autogenerated during CD
124129
VERSION

docker-compose.yaml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ services:
77
context: ./
88
args:
99
SERVER_VERSION: local+devcontainer
10-
command: "python3 -m flask run --host=0.0.0.0 --port=5000"
10+
command:
11+
- "sh"
12+
- "-c"
13+
- "python3 -m flask run --host=0.0.0.0 --port=5000"
1114
environment:
1215
- FLASK_ENV=development
1316
- PORT=5000
@@ -27,7 +30,10 @@ services:
2730
context: ./
2831
args:
2932
SERVER_VERSION: local+devcontainer
30-
command: "python3 -m celery -A script_runner.analysis worker"
33+
command:
34+
- "sh"
35+
- "-c"
36+
- "python3 -m celery -A script_runner.analysis worker"
3137
environment:
3238
- "CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379"
3339
- "CELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@redis:6379"

docker/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ RUN rm -rf /script-runner
1010

1111
ENV FLASK_APP=script_runner.main:app
1212

13-
CMD "python3 -m gunicorn.app.wsgiapp --timeout 240 --bind 0.0.0.0:${PORT} --access-logfile - --error-logfile - --workers 4 ${FLASK_APP}"
13+
CMD ["sh", "-c", "python3 -m gunicorn.app.wsgiapp --timeout 240 --bind 0.0.0.0:${PORT} --access-logfile - --error-logfile - --workers 4 ${FLASK_APP}"]

docker/Dockerfile.example

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,9 @@ RUN mkdir /base-rundir
7474
RUN wget -qO- https://swabseq-analysis-examples.s3-us-west-1.amazonaws.com/bcls/H3FY3K.tar.gz \
7575
| tar xvz -C /base-rundir
7676

77+
ENV COMMAND_RUNDIR_BASE=/base-rundir
7778
ENV PYTHONPATH="${RBASE}:${PYTHONPATH}"
7879
ENV FLASK_APP=script_runner.main:app
7980
ENV SERVER_VERSION=$SERVER_VERSION
8081

81-
CMD "python3 -m gunicorn.app.wsgiapp --timeout 240 --bind 0.0.0.0:${PORT} --access-logfile - --error-logfile - --workers 4 ${FLASK_APP}"
82+
CMD ["sh", "-c", "python3 -m gunicorn.app.wsgiapp --timeout 240 --bind 0.0.0.0:${PORT} --access-logfile - --error-logfile - --workers 4 ${FLASK_APP}"]

terraform/azure/example.tfvars

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
dns_subdomain = "${DNS_SUBDOMAIN}"
2-
dns_zone_name = "${DNS_ZONE_NAME}"
1+
dns_subdomain = "${DNS_SUBDOMAIN}"
2+
dns_zone_name = "${DNS_ZONE_NAME}"
3+
dns_zone_resource_group_name = "${DNS_ZONE_RESOURCE_GROUP_NAME}"
34

45
image_tag = "${IMAGE_TAG}"

terraform/azure/main.tf

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
1+
terraform {
2+
required_providers {
3+
acme = {
4+
source = "vancluever/acme"
5+
}
6+
}
7+
}
8+
19
provider "azurerm" {
210
features {}
311
}
412

13+
provider "acme" {
14+
server_url = "https://acme-staging-v02.api.letsencrypt.org/directory"
15+
}
16+
517
terraform {
618
backend "azurerm" {
719
resource_group_name = "labgrid"
@@ -22,21 +34,43 @@ resource "azurerm_resource_group" "swabseq_analysis_example" {
2234

2335
# VPC/ECS ---------------------------------------------------------------------
2436

25-
module "vnet" {
26-
source = "Azure/vnet/azurerm"
37+
resource "azurerm_virtual_network" "vnet" {
38+
name = "${var.stack_name}-vnet"
2739
resource_group_name = azurerm_resource_group.swabseq_analysis_example.name
40+
location = var.location
2841
address_space = ["10.0.0.0/16"]
29-
subnet_prefixes = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
30-
subnet_names = [var.redis_subnet_name, var.server_subnet_name, var.worker_subnet_name]
42+
tags = var.tags
43+
}
44+
45+
resource "azurerm_subnet" "redis_subnet" {
46+
name = var.redis_subnet_name
47+
resource_group_name = azurerm_resource_group.swabseq_analysis_example.name
48+
virtual_network_name = azurerm_virtual_network.vnet.name
49+
address_prefixes = ["10.0.1.0/24"]
50+
}
3151

32-
# subnet_service_endpoints = {
33-
# subnet2 = ["Microsoft.Storage", "Microsoft.Sql"],
34-
# subnet3 = ["Microsoft.AzureActiveDirectory"]
35-
# }
52+
resource "azurerm_subnet" "worker_subnet" {
53+
name = var.worker_subnet_name
54+
resource_group_name = azurerm_resource_group.swabseq_analysis_example.name
55+
virtual_network_name = azurerm_virtual_network.vnet.name
56+
address_prefixes = ["10.0.3.0/24"]
57+
58+
delegation {
59+
name = "${var.stack_name}-script-runner-worker-delegation"
60+
service_delegation {
61+
name = "Microsoft.ContainerInstance/containerGroups"
62+
actions = ["Microsoft.Network/virtualNetworks/subnets/action"]
63+
}
64+
}
65+
}
3666

37-
tags = var.tags
67+
resource "azurerm_subnet" "gateway_subnet" {
68+
name = var.gateway_subnet_name
69+
resource_group_name = azurerm_resource_group.swabseq_analysis_example.name
70+
virtual_network_name = azurerm_virtual_network.vnet.name
71+
address_prefixes = ["10.0.4.0/24"]
3872

39-
depends_on = [azurerm_resource_group.example]
73+
service_endpoints = ["Microsoft.KeyVault"]
4074
}
4175

4276

@@ -48,17 +82,18 @@ module "swabseq_analysis" {
4882
location = var.location
4983
resource_group_name = azurerm_resource_group.swabseq_analysis_example.name
5084

51-
redis_subnet_id = module.vnet.vnet_subnets[0]
52-
server_subnet_id = module.vnet.vnet_subnets[1]
53-
worker_subnet_id = module.vnet.vnet_subnets[2]
85+
redis_subnet_id = azurerm_subnet.redis_subnet.id
86+
worker_subnet_id = azurerm_subnet.worker_subnet.id
87+
gateway_subnet_id = azurerm_subnet.gateway_subnet.id
5488

5589
stack_name = var.stack_name
5690

5791
auth_provider = "none"
5892

59-
image = "labflow/swabseq-analysis-server-example"
93+
image = "labflow/script-runner-example"
6094
image_tag = var.image_tag
6195

62-
dns_subdomain = var.dns_subdomain
63-
dns_zone_name = var.dns_zone_name
96+
dns_subdomain = var.dns_subdomain
97+
dns_zone_name = var.dns_zone_name
98+
dns_zone_resource_group_name = var.dns_zone_resource_group_name
6499
}

terraform/azure/variables.tf

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ variable "location" {
55

66
variable "stack_name" {
77
type = string
8-
default = "swabseq-analysis-example"
8+
default = "script-runner-example"
99
}
1010

1111
variable "image_tag" {
@@ -23,16 +23,15 @@ variable "dns_zone_name" {
2323
description = "Identifier of the Route53 Hosted Zone for this instance of script-runner."
2424
}
2525

26-
variable "redis_subnet_name" {
26+
variable "dns_zone_resource_group_name" {
2727
type = string
28-
default = "redis-subnet"
29-
description = "Name of the redis subnet that will be created."
28+
description = "Name of the resource group dns_zone_name is in."
3029
}
3130

32-
variable "server_subnet_name" {
31+
variable "redis_subnet_name" {
3332
type = string
34-
default = "server-subnet"
35-
description = "Name of the server subnet that will be created."
33+
default = "redis-subnet"
34+
description = "Name of the redis subnet that will be created."
3635
}
3736

3837
variable "worker_subnet_name" {
@@ -41,6 +40,12 @@ variable "worker_subnet_name" {
4140
description = "Name of the worker subnet that will be created."
4241
}
4342

43+
variable "gateway_subnet_name" {
44+
type = string
45+
default = "gateway-subnet"
46+
description = "Name of the subnet to create application gateway instances in."
47+
}
48+
4449
variable "tags" {
4550
type = map(string)
4651

0 commit comments

Comments
 (0)