|
| 1 | +require 'rake' |
| 2 | + |
| 3 | +inputs = { |
| 4 | + 'stack_item_label' => 'expl-tst', |
| 5 | + 'stack_item_fullname' => 'Example Stack', |
| 6 | + 'vpc_id' => 'vpc-xxxxxx', |
| 7 | + 'region' => 'us-west-2', |
| 8 | + 'subnets' => 'subnet-111111,subnet-222222', |
| 9 | + 'ami' => 'ami-xxxxxx', |
| 10 | + 'instance_type' => 't2.small', |
| 11 | + 'key_name' => 'example', |
| 12 | + 'route_cidrs' => '10.10.0.0/25,10.10.0.128/25,10.10.4.0/25,10.10.4.128/25', |
| 13 | + 's3_bucket' => 'openvpn-certs', |
| 14 | + 's3_bucket_prefix' => '20160603', |
| 15 | + 'cidr_whitelist' => '0.0.0.0/0' |
| 16 | +} |
| 17 | + |
| 18 | +task :default => :verify |
| 19 | + |
| 20 | +desc "Verify the stack" |
| 21 | +task :verify do |
| 22 | + |
| 23 | + vars = [] |
| 24 | + inputs.each() do |var, value| |
| 25 | + vars.push("-var #{var}=\"#{value}\"") |
| 26 | + end |
| 27 | + |
| 28 | + ['openvpn'].each do |stack| |
| 29 | + task_args = {:stack => stack, :args => vars.join(' ')} |
| 30 | + Rake::Task['clean'].execute(Rake::TaskArguments.new(task_args.keys, task_args.values)) |
| 31 | + Rake::Task['plan'].execute(Rake::TaskArguments.new(task_args.keys, task_args.values)) |
| 32 | + end |
| 33 | +end |
| 34 | + |
| 35 | +desc "Remove existing local state if present" |
| 36 | +task :clean, [:stack] do |t, args| |
| 37 | + sh "cd examples/#{args['stack']} && rm -fr .terraform *.tfstate*" |
| 38 | +end |
| 39 | + |
| 40 | +desc "Create execution plan" |
| 41 | +task :plan, [:stack, :args] do |t, args| |
| 42 | + sh "cd examples/#{args['stack']} && terraform get && terraform plan -module-depth=-1 -input=false #{args['args']}" |
| 43 | +end |
0 commit comments