aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/mini_environments_controller.rb2
-rw-r--r--app/jobs/destroy_job.rb26
-rw-r--r--app/jobs/setup_job.rb40
-rw-r--r--app/views/mini_environments/show.html.erb2
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| %>