terra_boi 0.0.15 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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 +3 -3
- 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 +65 -37
- 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
data/lib/terra_boi/railtie.rb
CHANGED
data/lib/terra_boi/version.rb
CHANGED
metadata
CHANGED
@@ -1,42 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: terra_boi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.4
|
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: 2020-
|
11
|
+
date: 2020-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 6.0.0
|
20
17
|
- - "~>"
|
21
18
|
- !ruby/object:Gem::Version
|
22
19
|
version: '6.0'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 6.0.0
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '6.0'
|
27
30
|
- - ">="
|
28
31
|
- !ruby/object:Gem::Version
|
29
32
|
version: 6.0.0
|
30
|
-
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: colorize
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
31
38
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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/
|
61
|
-
- lib/generators/terra_boi/templates/
|
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/
|
66
|
-
- lib/generators/terra_boi/templates/
|
67
|
-
- lib/generators/terra_boi/templates/
|
68
|
-
- lib/generators/terra_boi/templates/
|
69
|
-
- lib/generators/terra_boi/templates/
|
70
|
-
- lib/generators/terra_boi/templates/
|
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/
|
73
|
-
- lib/generators/terra_boi/
|
74
|
-
- lib/generators/terra_boi/
|
75
|
-
- lib/generators/terra_boi/
|
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
|
-
|
100
|
-
|
101
|
-
signing_key:
|
127
|
+
rubygems_version: 3.1.2
|
128
|
+
signing_key:
|
102
129
|
specification_version: 4
|
103
|
-
summary:
|
104
|
-
|
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.25"
|
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-bionic-18.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
|
-
}
|