/ dev.tf
dev.tf
  1  locals {
  2    dev_env = {
  3      /* Node start command */
  4      EB_NODE_COMMAND = "node server.js"
  5      /* WARNING EB forces PORT 8081 */
  6      ENVIRONMENT        = "DEV"
  7      RATE_LIMIT_TIME    = 15 /* ms window */
  8      RATE_LIMIT_MAX_REQ = 1
  9      /* Access */
 10      ADMIN_USER     = data.pass_password.dap_ps_admin_user.password
 11      ADMIN_PASSWORD = data.pass_password.dap_ps_admin_pass.password
 12      /* Database */
 13      DB_CONNECTION = data.pass_password.dap_ps_dev_db_uri.password
 14      /* Blockchain */
 15      INFURA_KEY        = "8675214b97b44e96b70d05326c61fd6a"
 16      DISCOVER_CONTRACT = "0x15E64CA874071DaE0bf0cEdF31d36D9f7e7F7909"
 17      /* IPFS */
 18      IPFS_HOST     = "ipfs.status.im"
 19      IPFS_PORT     = 443
 20      IPFS_PROTOCOL = "https"
 21      /* Email */
 22      EMAIL_USER            = data.pass_password.dap_ps_smtp_user.password
 23      EMAIL_PASSWORD        = data.pass_password.dap_ps_smtp_pass.password
 24      EMAIL_HOST            = "email-smtp.us-east-1.amazonaws.com"
 25      EMAIL_PORT            = 465
 26      EMAIL_TLS             = "true"
 27      APPROVE_NOTIFIER_MAIL = "approvals@dap.ps" /* FROM */
 28      APPROVER_MAIL         = "dapps-approvals@status.im"
 29    }
 30  }
 31  
 32  module "dev_cert" {
 33    source  = "./modules/aws-acm-cert"
 34    stage   = "dev"
 35    domain  = "dap.ps"
 36    sans    = ["raw.dev.dap.ps"]
 37    zone_id = aws_route53_zone.dap_ps.zone_id
 38  
 39    route53_zone_id = aws_route53_zone.dap_ps.zone_id
 40  }
 41  
 42  module "dev_db_bucket" {
 43    source      = "./modules/aws-s3-bucket"
 44    bucket_name = "dev-dap-ps-db-backups"
 45    description = "Bucket for MongoDB backups on db.dev"
 46  }
 47  
 48  module "dev_db" {
 49    source     = "./modules/aws-ec2-instance"
 50    groups     = ["mongodb"]
 51    env        = "db"
 52    stage      = "dev"
 53    host_count = 1
 54    subdomain  = var.hosts_subdomain
 55    domain     = var.public_domain
 56    open_ports = [27017] /* mongodb */
 57  
 58    /* Network */
 59    vpc_id     = module.dev_env.vpc_id
 60    subnet_id  = module.dev_env.subnet_ids[0]
 61    sec_group  = module.dev_env.security_group_id
 62    /* Plumbing */
 63    keypair_name    = aws_key_pair.admin.key_name
 64    route53_zone_id = aws_route53_zone.dap_ps.zone_id
 65  }
 66  
 67  module "dev_env" {
 68    source     = "./modules/aws-eb-env"
 69    name       = "dev-dap-ps"
 70    stage      = "dev"
 71    env_vars   = local.dev_env
 72    dns_domain = var.public_domain
 73    stack_name = var.stack_name
 74  
 75    /* Plumbing */
 76    cert_arn      = module.dev_cert.arn
 77    keypair_name  = aws_key_pair.admin.key_name
 78  
 79    /* Scaling */
 80    instance_type = "t2.micro"
 81    autoscale_min = 1
 82    autoscale_max = 2
 83  }
 84  
 85  module "dev_cdn" {
 86    source       = "./modules/aws-cloud-front"
 87    env          = "dap-ps"
 88    stage        = "dev"
 89    aliases      = ["dev.dap.ps"]
 90    cert_arn     = module.dev_cert.arn
 91    origin_fqdns = module.dev_env.elb_fqdns
 92  }
 93  
 94  /* AWS DNS --------------------------------------*/
 95  
 96  /* raw subdomain for access without CDN */
 97  resource "aws_route53_record" "dev_dns_raw" {
 98    zone_id = aws_route53_zone.dap_ps.zone_id
 99    name    = "raw.dev"
100    type    = "CNAME"
101    ttl     = 3600
102    records = [for elb in module.dev_env.elb_fqdns: "${elb}."]
103  }
104  
105  resource "aws_route53_record" "dev_dns_cdn" {
106    zone_id = aws_route53_zone.dap_ps.zone_id
107    name    = "cdn.dev"
108    type    = "CNAME"
109    ttl     = 3600
110    records = ["${module.dev_cdn.cf_domain_name}."]
111  }
112  
113  resource "aws_route53_record" "dev_dns" {
114    zone_id = aws_route53_zone.dap_ps.zone_id
115    name    = "dev"
116    type    = "CNAME"
117  
118    alias {
119      name    = aws_route53_record.dev_dns_cdn.fqdn
120      zone_id = aws_route53_record.dev_dns_cdn.zone_id
121  
122      evaluate_target_health = false
123    }
124  }