terra_boi 0.0.13 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +85 -156
  3. data/lib/generators/extensions.rb +5 -5
  4. data/lib/generators/terra_boi/boilerplate_generator.rb +39 -32
  5. data/lib/generators/terra_boi/dockerfile_generator.rb +19 -18
  6. data/lib/generators/terra_boi/host_initializer_generator.rb +18 -18
  7. data/lib/generators/terra_boi/templates/Dockerfile.erb +4 -23
  8. data/lib/generators/terra_boi/templates/cert/main.tf.erb +32 -0
  9. data/lib/generators/terra_boi/templates/cert/var.tf.erb +15 -0
  10. data/lib/generators/terra_boi/templates/data_storage_config.erb +7 -7
  11. data/lib/generators/terra_boi/templates/ecr/ecs_role.tf.erb +41 -0
  12. data/lib/generators/terra_boi/templates/ecr/main.tf.erb +26 -0
  13. data/lib/generators/terra_boi/templates/ecr/output.tf.erb +11 -0
  14. data/lib/generators/terra_boi/templates/ecr/var.tf.erb +15 -0
  15. data/lib/generators/terra_boi/templates/{data_main.erb → env/data/main.tf.erb} +2 -2
  16. data/lib/generators/terra_boi/templates/{data_output.erb → env/data/output.tf.erb} +1 -1
  17. data/lib/generators/terra_boi/templates/env/ecs_cluster/ecs_cluster.tf.erb +24 -0
  18. data/lib/generators/terra_boi/templates/env/head_worker/ecs.tf.erb +55 -0
  19. data/lib/generators/terra_boi/templates/env/web_app/ecs.tf.erb +59 -0
  20. data/lib/generators/terra_boi/templates/lib/scripts/push_to_ecr.sh.erb +25 -0
  21. data/lib/generators/terra_boi/templates/lib/scripts/update_service_pull_from_ecr.sh.erb +18 -0
  22. data/lib/generators/terra_boi/templates/lib/task_templates/head_worker.json.erb +61 -0
  23. data/lib/generators/terra_boi/templates/lib/task_templates/web_app.json.erb +58 -0
  24. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_cluster/main.tf.erb +12 -0
  25. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_cluster/var.tf.erb +20 -0
  26. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/ecs_role.tf.erb +7 -0
  27. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/load_balancer.tf.erb +92 -0
  28. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/main.tf.erb +134 -0
  29. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/output.tf.erb +11 -0
  30. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/var.tf.erb +63 -0
  31. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/ecs_role.tf.erb +7 -0
  32. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/main.tf.erb +120 -0
  33. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/output.tf.erb +7 -0
  34. data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/var.tf.erb +57 -0
  35. data/lib/generators/terra_boi/templates/state_main.erb +1 -1
  36. data/lib/generators/terra_boi/tf_cert_generator.rb +28 -0
  37. data/lib/generators/terra_boi/tf_ecr_generator.rb +28 -0
  38. data/lib/generators/terra_boi/tf_env_generator.rb +54 -0
  39. data/lib/generators/terra_boi/tf_lib_generator.rb +57 -0
  40. data/lib/generators/terra_boi/tf_state_generator.rb +24 -0
  41. data/lib/tasks/terra_boi_tasks.rake +274 -4
  42. data/lib/terra_boi/railtie.rb +5 -2
  43. data/lib/terra_boi/version.rb +1 -1
  44. metadata +60 -32
  45. data/lib/generators/terra_boi/data_generator.rb +0 -38
  46. data/lib/generators/terra_boi/master_worker_generator.rb +0 -54
  47. data/lib/generators/terra_boi/packer_generator.rb +0 -26
  48. data/lib/generators/terra_boi/state_generator.rb +0 -25
  49. data/lib/generators/terra_boi/templates/master_worker_main.erb +0 -26
  50. data/lib/generators/terra_boi/templates/master_worker_output.erb +0 -14
  51. data/lib/generators/terra_boi/templates/master_worker_start_script.erb +0 -12
  52. data/lib/generators/terra_boi/templates/master_worker_user_data.erb +0 -27
  53. data/lib/generators/terra_boi/templates/packer_ami_build.erb +0 -27
  54. data/lib/generators/terra_boi/templates/packer_application.erb +0 -49
  55. data/lib/generators/terra_boi/templates/web_servers_main.erb +0 -31
  56. data/lib/generators/terra_boi/templates/web_servers_output.erb +0 -14
  57. data/lib/generators/terra_boi/templates/web_servers_user_data.erb +0 -29
  58. data/lib/generators/terra_boi/web_servers_generator.rb +0 -48
@@ -1,31 +0,0 @@
1
- # ---------------------------------------------------------------------------------------------------------------------
2
- # 1. STATE
3
- # ---------------------------------------------------------------------------------------------------------------------
4
-
5
- terraform {
6
- backend "s3" {
7
- bucket = "<%= application_name %>-terraform-state-storage"
8
- key = "terraform/<%= config[:env] %>-state/web-servers"
9
- region = "us-east-2"
10
- dynamodb_table = "<%= application_name %>-terraform-state-lock"
11
- encrypt = true
12
- }
13
- }
14
-
15
- # ---------------------------------------------------------------------------------------------------------------------
16
- # 2. WEB SERVERS MODULE
17
- # ---------------------------------------------------------------------------------------------------------------------
18
-
19
- module "webserver_cluster" {
20
- source = "github.com/charliereese/terraform_modules//web_servers?ref=v0.0.24"
21
-
22
- instance_type = "t2.micro"
23
- env = "<%= config[:env] %>"
24
- app_name = "<%= application_name %>"
25
- domain_name = "<%= config[:domain_name] %>"
26
- id_rsa_pub = "<%= id_rsa_pub %>"
27
- min_size = 1
28
- max_size = 1
29
- business_hours_size = 1
30
- night_hours_size = 1
31
- }
@@ -1,14 +0,0 @@
1
- output "alb_dns_name" {
2
- value = module.webserver_cluster.alb_dns_name
3
- description = "The domain name of the application load balancer"
4
- }
5
-
6
- output "asg_name" {
7
- value = module.webserver_cluster.asg_name
8
- description = "autoscaling group name"
9
- }
10
-
11
- output "alb_security_group_id" {
12
- value = module.webserver_cluster.alb_security_group_id
13
- description = "ID of Security Group attached to ALB"
14
- }
@@ -1,29 +0,0 @@
1
- #!/bin/bash
2
- sleep 5
3
-
4
- # Set ENV vars from terraform
5
- echo "APPLICATION_NAME=${application_name}" >> /etc/environment
6
- echo "DB_HOST=${db_address}" >> /etc/environment
7
- echo "DB_USERNAME=${db_username}" >> /etc/environment
8
- echo "RAILS_ENV=production" >> /etc/environment
9
- echo "INFRASTRUCTURE_ENV=${env}" >> /etc/environment
10
-
11
- # Load ENV vars in current session
12
- for line in $( cat /etc/environment ); do export $line; done
13
-
14
- # Set DB environment variables in docker container and
15
- # start rails container
16
- docker container run -p 3000:3000 --name $APPLICATION_NAME --restart always -d \
17
- -e DB_HOST=$DB_HOST \
18
- -e DB_USERNAME=$DB_USERNAME \
19
- -e DB_PASSWORD=$DB_PASSWORD \
20
- -e RAILS_ENV=$RAILS_ENV \
21
- -e INFRASTRUCTURE_ENV=$INFRASTRUCTURE_ENV \
22
- -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
23
- -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
24
- -e RAILS_MASTER_KEY=$RAILS_MASTER_KEY \
25
- -e RAILS_SERVE_STATIC_FILES=true \
26
- $DOCKERHUB_USERNAME/$APPLICATION_NAME:latest
27
-
28
- # Run outstanding DB migrations
29
- docker container exec $APPLICATION_NAME rake db:migrate
@@ -1,48 +0,0 @@
1
- require "generators/extensions"
2
-
3
- module TerraBoi
4
- class WebServersGenerator < Rails::Generators::Base
5
- attr_accessor :application_name, :id_rsa_pub, :class_options
6
- class_option :domain_name, type: :string
7
- source_root File.expand_path('templates', __dir__)
8
-
9
- desc (<<-EOF
10
- Generate staging and production terraform web server files
11
-
12
- To execute, run rails generate terra_boi:web_servers --domain_name example.com
13
- EOF
14
- .gsub(/\t/, '')
15
- )
16
-
17
- def init
18
- # defined in lib/generators/extensions
19
- self.application_name = generate_application_name
20
- self.id_rsa_pub = open(ENV['HOME'] + "/.ssh/id_rsa.pub").read.chomp
21
- self.class_options = options
22
- end
23
-
24
- def create_main_terraform_file
25
- generate_terraform_files({
26
- template: 'web_servers_main.erb',
27
- file_path: 'web_servers/main.tf',
28
- env: ['staging', 'prod']
29
- })
30
- end
31
-
32
- def create_output_terraform_file
33
- generate_terraform_files({
34
- template: 'web_servers_output.erb',
35
- file_path: 'web_servers/output.tf',
36
- env: ['staging', 'prod']
37
- })
38
- end
39
-
40
- def create_user_data_terraform_file
41
- generate_terraform_files({
42
- template: 'web_servers_user_data.erb',
43
- file_path: 'web_servers/user-data.sh',
44
- env: ['staging', 'prod']
45
- })
46
- end
47
- end
48
- end