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.
- checksums.yaml +4 -4
- data/README.md +85 -156
- data/lib/generators/extensions.rb +5 -5
- data/lib/generators/terra_boi/boilerplate_generator.rb +39 -32
- data/lib/generators/terra_boi/dockerfile_generator.rb +19 -18
- data/lib/generators/terra_boi/host_initializer_generator.rb +18 -18
- data/lib/generators/terra_boi/templates/Dockerfile.erb +4 -23
- data/lib/generators/terra_boi/templates/cert/main.tf.erb +32 -0
- data/lib/generators/terra_boi/templates/cert/var.tf.erb +15 -0
- data/lib/generators/terra_boi/templates/data_storage_config.erb +7 -7
- data/lib/generators/terra_boi/templates/ecr/ecs_role.tf.erb +41 -0
- data/lib/generators/terra_boi/templates/ecr/main.tf.erb +26 -0
- data/lib/generators/terra_boi/templates/ecr/output.tf.erb +11 -0
- data/lib/generators/terra_boi/templates/ecr/var.tf.erb +15 -0
- data/lib/generators/terra_boi/templates/{data_main.erb → env/data/main.tf.erb} +2 -2
- data/lib/generators/terra_boi/templates/{data_output.erb → env/data/output.tf.erb} +1 -1
- data/lib/generators/terra_boi/templates/env/ecs_cluster/ecs_cluster.tf.erb +24 -0
- data/lib/generators/terra_boi/templates/env/head_worker/ecs.tf.erb +55 -0
- data/lib/generators/terra_boi/templates/env/web_app/ecs.tf.erb +59 -0
- data/lib/generators/terra_boi/templates/lib/scripts/push_to_ecr.sh.erb +25 -0
- data/lib/generators/terra_boi/templates/lib/scripts/update_service_pull_from_ecr.sh.erb +18 -0
- data/lib/generators/terra_boi/templates/lib/task_templates/head_worker.json.erb +61 -0
- data/lib/generators/terra_boi/templates/lib/task_templates/web_app.json.erb +58 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_cluster/main.tf.erb +12 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_cluster/var.tf.erb +20 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/ecs_role.tf.erb +7 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/load_balancer.tf.erb +92 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/main.tf.erb +134 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/output.tf.erb +11 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/var.tf.erb +63 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/ecs_role.tf.erb +7 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/main.tf.erb +120 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/output.tf.erb +7 -0
- data/lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/var.tf.erb +57 -0
- data/lib/generators/terra_boi/templates/state_main.erb +1 -1
- data/lib/generators/terra_boi/tf_cert_generator.rb +28 -0
- data/lib/generators/terra_boi/tf_ecr_generator.rb +28 -0
- data/lib/generators/terra_boi/tf_env_generator.rb +54 -0
- data/lib/generators/terra_boi/tf_lib_generator.rb +57 -0
- data/lib/generators/terra_boi/tf_state_generator.rb +24 -0
- data/lib/tasks/terra_boi_tasks.rake +274 -4
- data/lib/terra_boi/railtie.rb +5 -2
- data/lib/terra_boi/version.rb +1 -1
- metadata +60 -32
- data/lib/generators/terra_boi/data_generator.rb +0 -38
- data/lib/generators/terra_boi/master_worker_generator.rb +0 -54
- data/lib/generators/terra_boi/packer_generator.rb +0 -26
- data/lib/generators/terra_boi/state_generator.rb +0 -25
- data/lib/generators/terra_boi/templates/master_worker_main.erb +0 -26
- data/lib/generators/terra_boi/templates/master_worker_output.erb +0 -14
- data/lib/generators/terra_boi/templates/master_worker_start_script.erb +0 -12
- data/lib/generators/terra_boi/templates/master_worker_user_data.erb +0 -27
- data/lib/generators/terra_boi/templates/packer_ami_build.erb +0 -27
- data/lib/generators/terra_boi/templates/packer_application.erb +0 -49
- data/lib/generators/terra_boi/templates/web_servers_main.erb +0 -31
- data/lib/generators/terra_boi/templates/web_servers_output.erb +0 -14
- data/lib/generators/terra_boi/templates/web_servers_user_data.erb +0 -29
- 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
|