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,4 +1,7 @@
1
1
  module TerraBoi
2
- class Railtie < ::Rails::Railtie
3
- end
2
+ class Railtie < ::Rails::Railtie
3
+ rake_tasks do
4
+ load 'tasks/terra_boi_tasks.rake'
5
+ end
6
+ end
4
7
  end
@@ -1,3 +1,3 @@
1
1
  module TerraBoi
2
- VERSION = '0.0.13'
2
+ VERSION = '1.0.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terra_boi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charlie Reese
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-22 00:00:00.000000000 Z
11
+ date: 2020-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,13 +30,26 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 6.0.0
33
- description: 'This gem was created to get rails applications deployed into production
34
- as quickly and easily as possible. It contains generators that create infrastructure
35
- code for load balancing / auto scaling / zero-downtime deployments, (rails) web
36
- apps (EC2 instances), DBs, and S3 buckets. List of items created by this gem''s
37
- generators: Dockerfile, Rails initializer file (for setting up config.hosts), Packer
38
- repository (for creating AWS EC2 AMIs), and Terraform repository (for creating infrastructure
39
- as code to immediately deploy staging / prod infrastructure).'
33
+ - !ruby/object:Gem::Dependency
34
+ name: colorize
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ description: |-
48
+ Deploy your rails application to AWS with `rake deploy`.
49
+
50
+ This ruby / rails gem was created by Charlie Reese (charliereese.ca/about) for Clientelify. It creates AWS infrastructure for your rails application and deploys it in 5 steps (3 installation steps and 2 rake tasks). It is free to use.
51
+
52
+ Out of the box, terra_boi provides remote state locking, load-balancing, simple scaling, zero-downtime deployments, CloudWatch logging, DBs, and S3 buckets for multiple infrastructure environments: by default, terra_boi creates staging and prod environments for your web app.
40
53
  email:
41
54
  - j.charles.reese@gmail.com
42
55
  executables: []
@@ -49,30 +62,45 @@ files:
49
62
  - lib/generators/extensions.rb
50
63
  - lib/generators/terra_boi/boilerplate_generator.rb
51
64
  - lib/generators/terra_boi/data_config_generator.rb
52
- - lib/generators/terra_boi/data_generator.rb
53
65
  - lib/generators/terra_boi/db_config_generator.rb
54
66
  - lib/generators/terra_boi/dockerfile_generator.rb
55
67
  - lib/generators/terra_boi/host_initializer_generator.rb
56
- - lib/generators/terra_boi/master_worker_generator.rb
57
- - lib/generators/terra_boi/packer_generator.rb
58
- - lib/generators/terra_boi/state_generator.rb
59
68
  - lib/generators/terra_boi/templates/Dockerfile.erb
60
- - lib/generators/terra_boi/templates/data_main.erb
61
- - lib/generators/terra_boi/templates/data_output.erb
69
+ - lib/generators/terra_boi/templates/cert/main.tf.erb
70
+ - lib/generators/terra_boi/templates/cert/var.tf.erb
62
71
  - lib/generators/terra_boi/templates/data_storage_config.erb
63
72
  - lib/generators/terra_boi/templates/db_config.erb
73
+ - lib/generators/terra_boi/templates/ecr/ecs_role.tf.erb
74
+ - lib/generators/terra_boi/templates/ecr/main.tf.erb
75
+ - lib/generators/terra_boi/templates/ecr/output.tf.erb
76
+ - lib/generators/terra_boi/templates/ecr/var.tf.erb
77
+ - lib/generators/terra_boi/templates/env/data/main.tf.erb
78
+ - lib/generators/terra_boi/templates/env/data/output.tf.erb
79
+ - lib/generators/terra_boi/templates/env/ecs_cluster/ecs_cluster.tf.erb
80
+ - lib/generators/terra_boi/templates/env/head_worker/ecs.tf.erb
81
+ - lib/generators/terra_boi/templates/env/web_app/ecs.tf.erb
64
82
  - lib/generators/terra_boi/templates/host_initializer.erb
65
- - lib/generators/terra_boi/templates/master_worker_main.erb
66
- - lib/generators/terra_boi/templates/master_worker_output.erb
67
- - lib/generators/terra_boi/templates/master_worker_start_script.erb
68
- - lib/generators/terra_boi/templates/master_worker_user_data.erb
69
- - lib/generators/terra_boi/templates/packer_ami_build.erb
70
- - lib/generators/terra_boi/templates/packer_application.erb
83
+ - lib/generators/terra_boi/templates/lib/scripts/push_to_ecr.sh.erb
84
+ - lib/generators/terra_boi/templates/lib/scripts/update_service_pull_from_ecr.sh.erb
85
+ - lib/generators/terra_boi/templates/lib/task_templates/head_worker.json.erb
86
+ - lib/generators/terra_boi/templates/lib/task_templates/web_app.json.erb
87
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_cluster/main.tf.erb
88
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_cluster/var.tf.erb
89
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/ecs_role.tf.erb
90
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/load_balancer.tf.erb
91
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/main.tf.erb
92
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/output.tf.erb
93
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_web_app/var.tf.erb
94
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/ecs_role.tf.erb
95
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/main.tf.erb
96
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/output.tf.erb
97
+ - lib/generators/terra_boi/templates/lib/terraform_modules/ecs_worker/var.tf.erb
71
98
  - lib/generators/terra_boi/templates/state_main.erb
72
- - lib/generators/terra_boi/templates/web_servers_main.erb
73
- - lib/generators/terra_boi/templates/web_servers_output.erb
74
- - lib/generators/terra_boi/templates/web_servers_user_data.erb
75
- - lib/generators/terra_boi/web_servers_generator.rb
99
+ - lib/generators/terra_boi/tf_cert_generator.rb
100
+ - lib/generators/terra_boi/tf_ecr_generator.rb
101
+ - lib/generators/terra_boi/tf_env_generator.rb
102
+ - lib/generators/terra_boi/tf_lib_generator.rb
103
+ - lib/generators/terra_boi/tf_state_generator.rb
76
104
  - lib/tasks/terra_boi_tasks.rake
77
105
  - lib/terra_boi.rb
78
106
  - lib/terra_boi/railtie.rb
@@ -81,7 +109,7 @@ homepage: https://github.com/charliereese/terra_boi
81
109
  licenses:
82
110
  - MIT
83
111
  metadata: {}
84
- post_install_message:
112
+ post_install_message:
85
113
  rdoc_options: []
86
114
  require_paths:
87
115
  - lib
@@ -96,10 +124,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
124
  - !ruby/object:Gem::Version
97
125
  version: '0'
98
126
  requirements: []
99
- rubyforge_project:
100
- rubygems_version: 2.7.7
101
- signing_key:
127
+ rubygems_version: 3.1.2
128
+ signing_key:
102
129
  specification_version: 4
103
- summary: Generators to help you get rails applications deployed into production as
104
- quickly and easily as possible.
130
+ summary: Deploy your rails application to AWS with `rake deploy`. terra_boi generates
131
+ AWS infrastructure as code, provisions AWS infrastructure, and then deploys your
132
+ application to it using Terraform, rails generators, and rake tasks.
105
133
  test_files: []
@@ -1,38 +0,0 @@
1
- require "generators/extensions"
2
-
3
- module TerraBoi
4
- class DataGenerator < Rails::Generators::Base
5
- attr_accessor :application_name, :class_options
6
- source_root File.expand_path('templates', __dir__)
7
-
8
- desc (<<-EOF
9
- Generate staging and production DB and S3 bucket
10
-
11
- To execute, run rails generate terra_boi:data
12
- EOF
13
- .gsub(/\t/, '')
14
- )
15
-
16
- def init
17
- # defined in lib/generators/extensions
18
- self.application_name = generate_application_name
19
- self.class_options = options
20
- end
21
-
22
- def create_main_terraform_file
23
- generate_terraform_files({
24
- template: 'data_main.erb',
25
- file_path: 'data/main.tf',
26
- env: ['staging', 'prod']
27
- })
28
- end
29
-
30
- def create_output_terraform_file
31
- generate_terraform_files({
32
- template: 'data_output.erb',
33
- file_path: 'data/output.tf',
34
- env: ['staging', 'prod']
35
- })
36
- end
37
- end
38
- end
@@ -1,54 +0,0 @@
1
- require "generators/extensions"
2
- require 'fileutils'
3
-
4
- module TerraBoi
5
- class MasterWorkerGenerator < Rails::Generators::Base
6
- attr_accessor :application_name, :id_rsa_pub, :class_options
7
- class_option :domain_name, type: :string
8
- source_root File.expand_path('templates', __dir__)
9
-
10
- desc (<<-EOF
11
- Generate staging and production terraform master worker server files
12
-
13
- To execute, run rails generate terra_boi:master_worker
14
- EOF
15
- .gsub(/\t/, '')
16
- )
17
-
18
- def init
19
- # defined in lib/generators/extensions
20
- self.application_name = generate_application_name
21
- self.id_rsa_pub = open(ENV['HOME'] + "/.ssh/id_rsa.pub").read.chomp
22
- end
23
-
24
- def create_main_terraform_file
25
- generate_terraform_files({
26
- template: 'master_worker_main.erb',
27
- file_path: 'master_worker/main.tf',
28
- env: ['staging', 'prod']
29
- })
30
- end
31
-
32
- def create_output_terraform_file
33
- generate_terraform_files({
34
- template: 'master_worker_output.erb',
35
- file_path: 'master_worker/output.tf',
36
- env: ['staging', 'prod']
37
- })
38
- end
39
-
40
- def create_user_data_terraform_file
41
- generate_terraform_files({
42
- template: 'master_worker_user_data.erb',
43
- file_path: 'master_worker/user-data.sh',
44
- env: ['staging', 'prod']
45
- })
46
- end
47
-
48
- def create_master_worker_docker_entrypoint_script
49
- filename = "scripts/start_master_worker.sh"
50
- template "master_worker_start_script.erb", filename
51
- FileUtils.chmod 0755, filename
52
- end
53
- end
54
- end
@@ -1,26 +0,0 @@
1
- require "generators/extensions"
2
-
3
- module TerraBoi
4
- class PackerGenerator < Rails::Generators::Base
5
- attr_accessor :application_name
6
- source_root File.expand_path('templates', __dir__)
7
-
8
- desc (<<-EOF
9
- Generate packer files for building AWS EC2 AMI
10
-
11
- To execute, run rails generate terra_boi:packer
12
- EOF
13
- .gsub(/\t/, '')
14
- )
15
-
16
- def init
17
- # defined in lib/generators/extensions
18
- self.application_name = generate_application_name
19
- end
20
-
21
- def create_packer_files
22
- template "packer_ami_build.erb", "packer/ami_build.sh"
23
- template "packer_application.erb", "packer/application.json"
24
- end
25
- end
26
- end
@@ -1,25 +0,0 @@
1
- require "generators/extensions"
2
-
3
- module TerraBoi
4
- class StateGenerator < Rails::Generators::Base
5
- attr_accessor :application_name, :class_options
6
- source_root File.expand_path('templates', __dir__)
7
-
8
- desc (<<-EOF
9
- Generate DB and S3 bucket for storing and locking terraform state
10
-
11
- To execute, run rails generate terra_boi:state
12
- EOF
13
- .gsub(/\t/, '')
14
- )
15
-
16
- def init
17
- self.application_name = generate_application_name
18
- self.class_options = options
19
- end
20
-
21
- def create_main_terraform_file
22
- template "state_main.erb", "terraform/state/main.tf"
23
- end
24
- end
25
- end
@@ -1,26 +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/master-worker"
9
- region = "us-east-2"
10
- dynamodb_table = "<%= application_name %>-terraform-state-lock"
11
- encrypt = true
12
- }
13
- }
14
-
15
- # -------------------------------------------------------------------
16
- # 2. MASTER WORKER MODULE
17
- # -------------------------------------------------------------------
18
-
19
- module "master_worker_cluster" {
20
- source = "github.com/charliereese/terraform_modules//master_worker?ref=v0.0.24"
21
-
22
- instance_type = "t2.micro"
23
- env = "<%= config[:env] %>"
24
- app_name = "<%= application_name %>"
25
- id_rsa_pub = "<%= id_rsa_pub %>"
26
- }
@@ -1,14 +0,0 @@
1
- output "master_worker_ip_address" {
2
- value = module.master_worker_cluster.master_worker_ip_address
3
- description = "The domain name of the application load balancer"
4
- }
5
-
6
- output "master_worker_id" {
7
- value = module.master_worker_cluster.master_worker_id
8
- description = "The ID of the master worker"
9
- }
10
-
11
- output "master_worker_arn" {
12
- value = module.master_worker_cluster.master_worker_arn
13
- description = "The ARN of the master worker"
14
- }
@@ -1,12 +0,0 @@
1
- #!/bin/sh
2
- # Master worker entrypoint for staging and prod docker containers
3
-
4
- rake db:migrate
5
-
6
- # Fix link-count, as cron is being a pain, and docker is making hardlink count > 0 (very high)
7
- touch /etc/crontab /etc/cron.*/*
8
-
9
- service cron start
10
- whenever --update-crontab
11
-
12
- rake jobs:work
@@ -1,27 +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 rake jobs:work
16
- # https://medium.com/@oprearocks/how-to-properly-override-the-entrypoint-using-docker-run-2e081e5feb9d
17
- docker container run --entrypoint "./scripts/start_master_worker.sh" -p 3000:3000 --name $APPLICATION_NAME --restart always -d \
18
- -e DB_HOST=$DB_HOST \
19
- -e DB_USERNAME=$DB_USERNAME \
20
- -e DB_PASSWORD=$DB_PASSWORD \
21
- -e RAILS_ENV=$RAILS_ENV \
22
- -e INFRASTRUCTURE_ENV=$INFRASTRUCTURE_ENV \
23
- -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
24
- -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
25
- -e RAILS_MASTER_KEY=$RAILS_MASTER_KEY \
26
- -e RAILS_SERVE_STATIC_FILES=true \
27
- $DOCKERHUB_USERNAME/$APPLICATION_NAME:latest
@@ -1,27 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Update to the latest current version of packages
4
- sudo apt-get update
5
- sudo apt -y install docker.io
6
- docker --version
7
-
8
- # Set DB and DockerHub usernames
9
- RAILS_MASTER_KEY=`sudo cat /tmp/master.key`
10
- sudo bash -c "echo 'RAILS_MASTER_KEY=$RAILS_MASTER_KEY' >> /etc/environment"
11
- sudo bash -c "echo 'DB_PASSWORD=$DB_PASSWORD' >> /etc/environment"
12
- sudo bash -c "echo 'DOCKERHUB_USERNAME=$DOCKERHUB_USERNAME' >> /etc/environment"
13
- sudo bash -c "echo 'AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID' >> /etc/environment"
14
- sudo bash -c "echo 'AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY' >> /etc/environment"
15
-
16
- # # Start the Docker service
17
- sudo service docker start
18
- sudo usermod -aG docker ubuntu
19
-
20
- # # Automatically start Docker service when the system boots, i.e. when the EC2 instance created from this AMI is launched or rebooted
21
- sudo systemctl enable docker
22
-
23
- # Log in
24
- sudo docker login --username $DOCKERHUB_USERNAME -p $DOCKERHUB_ACCESS_TOKEN
25
-
26
- # Pull the container:
27
- sudo docker pull $DOCKERHUB_USERNAME/<%= application_name %>:latest
@@ -1,49 +0,0 @@
1
- {
2
- "variables": {
3
- "DOCKERHUB_ACCESS_TOKEN": "",
4
- "DOCKERHUB_USERNAME": "",
5
- "DB_PASSWORD": ""
6
- },
7
-
8
- "builders": [{
9
- "type": "amazon-ebs",
10
- "region": "us-east-2",
11
- "source_ami_filter": {
12
- "filters": {
13
- "virtualization-type": "hvm",
14
- "name": "ubuntu/images/*ubuntu-disco-19.04-amd64-server-*",
15
- "root-device-type": "ebs"
16
- },
17
- "owners": ["099720109477"],
18
- "most_recent": true
19
- },
20
- "instance_type": "t2.micro",
21
- "ssh_username": "ubuntu",
22
- "ami_name": "<%= application_name %>-ec2 {{timestamp}}",
23
- "tags": {
24
- "application": "<%= application_name %>-web-server"
25
- }
26
- }],
27
-
28
- "provisioners": [{
29
- "type": "file",
30
- "source": "../config/master.key",
31
- "destination": "/tmp/master.key"
32
- },{
33
- "type": "shell",
34
- "inline": [
35
- "sleep 30"
36
- ]
37
- },
38
- {
39
- "type":"shell",
40
- "environment_vars": [
41
- "DOCKERHUB_ACCESS_TOKEN={{user `DOCKERHUB_ACCESS_TOKEN`}}",
42
- "DOCKERHUB_USERNAME={{user `DOCKERHUB_USERNAME`}}",
43
- "DB_PASSWORD={{user `DB_PASSWORD`}}",
44
- "AWS_ACCESS_KEY_ID={{user `AWS_ACCESS_KEY_ID`}}",
45
- "AWS_SECRET_ACCESS_KEY={{user `AWS_SECRET_ACCESS_KEY`}}"
46
- ],
47
- "script": "ami_build.sh"
48
- }]
49
- }