This repository has been archived by the owner on Jun 21, 2022. It is now read-only.
/
Rakefile
84 lines (73 loc) · 2.1 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Copyright 2016 Chris Marchesi
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require 'bundler/gem_tasks'
require 'ubuntu_ami'
require 'vancluever_hello/version'
# Return a default region if not defined
def region
if ENV.include?('REGION')
ENV['REGION']
else
'us-west-2'
end
end
# Return a default Terraform command if not defined
def tf_cmd
if ENV.include?('TF_CMD')
ENV['TF_CMD']
else
'apply'
end
end
# Return a default Terraform directory if not defined
def tf_dir
if ENV.include?('TF_DIR')
ENV['TF_DIR']
else
'terraform'
end
end
# Make sure I don't release/push this to rubygems by mistake
Rake::Task['release'].clear
# Also no system install
Rake::Task['install:local'].clear
Rake::Task['install'].clear
desc 'Vendors dependent cookbooks in berks-cookbooks (for Packer)'
task :berks_cookbooks do
sh 'rm -rf berks-cookbooks'
sh 'berks vendor -b cookbooks/packer_payload/Berksfile'
end
desc 'Gets Terraform modules'
task :tf_modules do
sh "terraform get -update #{tf_dir}"
end
desc 'Create an application AMI with Packer'
task :ami => [:build, :berks_cookbooks] do
sh "SRC_REGION=#{region} \
APP_VERSION=#{VanclueverHello::VERSION} \
packer build packer/ami.json"
end
desc 'Deploy infrastructure using Terraform'
task :infrastructure => [:tf_modules] do
sh "AWS_DEFAULT_REGION=#{region} \
terraform #{tf_cmd} #{tf_dir}"
end
desc 'Run test-kitchen on packer_payload cookbook'
task :kitchen do
sh "cd cookbooks/packer_payload && \
KITCHEN_YAML=.kitchen.cloud.yml \
AWS_REGION=#{region} \
KITCHEN_APP_VERSION=#{VanclueverHello::VERSION} \
kitchen test -d always"
end