diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/mini_environments_controller.rb | 2 | ||||
-rw-r--r-- | app/jobs/destroy_job.rb | 26 | ||||
-rw-r--r-- | app/jobs/setup_job.rb | 40 | ||||
-rw-r--r-- | app/views/mini_environments/show.html.erb | 2 |
4 files changed, 54 insertions, 16 deletions
diff --git a/app/controllers/mini_environments_controller.rb b/app/controllers/mini_environments_controller.rb index 7e5134a..c45ed4a 100644 --- a/app/controllers/mini_environments_controller.rb +++ b/app/controllers/mini_environments_controller.rb @@ -13,7 +13,7 @@ class MiniEnvironmentsController < ApplicationController params.require(:mini_environment).permit(:name) ) - # SetupJob.enqueue(@mini_environment.id) + SetupJob.enqueue(@mini_environment.id) end redirect_to @mini_environment diff --git a/app/jobs/destroy_job.rb b/app/jobs/destroy_job.rb new file mode 100644 index 0000000..7f13fdd --- /dev/null +++ b/app/jobs/destroy_job.rb @@ -0,0 +1,26 @@ +require 'ruby_terraform' + +class DestroyJob < TerraformJob + @retry_interval = 30 + + def run_terraform + puts "Destroying #{@mini_environment.name}" + + Dir.chdir('terraform/aws') do + RubyTerraform.destroy( + vars: { + aws_region: 'eu-west-1', + slug: @mini_environment.name.parameterize, + ssh_public_key: ssh_public_key, + }, + force: true + ) + end + end + + def ssh_public_key + File.open("#{ENV['HOME']}/.ssh/id_rsa.pub") do |file| + file.readline() + end + end +end diff --git a/app/jobs/setup_job.rb b/app/jobs/setup_job.rb index 6b4f9fe..6791dd6 100644 --- a/app/jobs/setup_job.rb +++ b/app/jobs/setup_job.rb @@ -1,24 +1,34 @@ require 'ruby_terraform' class SetupJob < TerraformJob + @retry_interval = 30 + def run_terraform puts "Setting up #{@mini_environment.name}" - RubyTerraform.init( - source: 'terraform/aws', - path: 'terraform/aws', - backend: true, - backend_config: { - address: 'http://localhost:3000' + Rails.application.routes.url_helpers.terraform_http_backend_path - } - ) + Dir.chdir('terraform/aws') do + RubyTerraform.init( + backend: true, + backend_config: { + address: 'http://localhost:3000' + Rails.application.routes.url_helpers.terraform_http_backend_path + } + ) + + RubyTerraform.apply( + directory: 'mini_environment', + vars: { + aws_region: 'eu-west-1', + slug: @mini_environment.name.parameterize, + ssh_public_key: ssh_public_key, + }, + auto_approve: true + ) + end + end - RubyTerraform.apply( - directory: 'terraform/aws', - vars: { - slug: @mini_environment.name.parameterize - }, - auto_approve: true - ) + def ssh_public_key + File.open("#{ENV['HOME']}/.ssh/id_rsa.pub") do |file| + file.readline() + end end end diff --git a/app/views/mini_environments/show.html.erb b/app/views/mini_environments/show.html.erb index 5b2199e..0cc6bc6 100644 --- a/app/views/mini_environments/show.html.erb +++ b/app/views/mini_environments/show.html.erb @@ -1,5 +1,7 @@ <h1>Name: <%= @mini_environment.name %></h1> +<a href="https://signon.<%= @mini_environment.name.parameterize %>.aws.cbaines.net">View</a> + <h2>Finished jobs</h2> <% @mini_environment.finished_terraform_jobs.each do |job| %> |