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
data/lib/terra_boi/railtie.rb
CHANGED
data/lib/terra_boi/version.rb
CHANGED
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:
|
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:
|
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
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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/
|
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.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
|
-
}
|