diff options
author | Christopher Baines <mail@cbaines.net> | 2018-03-27 23:04:41 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2018-04-03 21:58:55 +0100 |
commit | 94f9e2a768327479c8b2da99cd57ac717cf1589a (patch) | |
tree | 819c093f8fb7c37c6017ede36db4f01854a8bcc8 /app/models | |
parent | fa06e98228d8dd80a46622c9f393bb90e680d254 (diff) | |
download | govuk-mini-environment-admin-94f9e2a768327479c8b2da99cd57ac717cf1589a.tar govuk-mini-environment-admin-94f9e2a768327479c8b2da99cd57ac717cf1589a.tar.gz |
Add domains to backends, and rework build jobs
Add a domain to the libvirt and AWS Terraform backends. Along the way,
improve the backend controllers and views, and rework the build jobs,
simplifying them in to a single new class GovukGuix::BuildJob, which
uses configuration from the respective backend.
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/backends/terraform_aws.rb | 22 | ||||
-rw-r--r-- | app/models/backends/terraform_libvirt.rb | 25 |
2 files changed, 37 insertions, 10 deletions
diff --git a/app/models/backends/terraform_aws.rb b/app/models/backends/terraform_aws.rb index 6741204..bc131ef 100644 --- a/app/models/backends/terraform_aws.rb +++ b/app/models/backends/terraform_aws.rb @@ -9,6 +9,7 @@ # aws_secret_access_key :string # created_at :datetime not null # updated_at :datetime not null +# domain :string # require 'ruby_terraform' @@ -29,8 +30,15 @@ class Backends::TerraformAws < ApplicationRecord end def build(mini_environment) - GovukGuix::GenerateStartCommandJob.enqueue( - mini_environment.id + slug = mini_environment.name.parameterize + + GovukGuix::BuildJob.enqueue( + mini_environment.id, + %w(whitehall government-frontend), + type: 'container-start-script', + app_domain: "#{slug}.#{domain}", + web_domain: "www.#{slug}.#{domain}", + use_https: 'certbot' ) end @@ -54,13 +62,17 @@ class Backends::TerraformAws < ApplicationRecord end end + def signon_url(mini_environment) + "https://signon.#{mini_environment.name.parameterize}.#{domain}" + end + def terraform_variables(mini_environment) - mini_environment.backend_data.merge( + { aws_region: aws_region, slug: mini_environment.name.parameterize, ssh_public_key: ssh_public_key, - start_command: mini_environment.start_command - ) + start_command: mini_environment.backend_data['build_output'] + } end def ssh_public_key diff --git a/app/models/backends/terraform_libvirt.rb b/app/models/backends/terraform_libvirt.rb index 2cb46c6..9b92176 100644 --- a/app/models/backends/terraform_libvirt.rb +++ b/app/models/backends/terraform_libvirt.rb @@ -7,6 +7,7 @@ # uri :string # created_at :datetime not null # updated_at :datetime not null +# domain :string # require 'ruby_terraform' @@ -27,8 +28,17 @@ class Backends::TerraformLibvirt < ApplicationRecord end def build(mini_environment) - GovukGuix::GenerateVmImageAndSystemJob.enqueue( - mini_environment.id + slug = mini_environment.name.parameterize + + GovukGuix::BuildJob.enqueue( + mini_environment.id, + %w(whitehall government-frontend), + type: 'vm-image-and-system', + app_domain: "#{slug}.#{domain}", + web_domain: "www.#{slug}.#{domain}", + # Assume that this is a local environment, and not externally + # accessible + use_https: 'development' ) end @@ -52,10 +62,15 @@ class Backends::TerraformLibvirt < ApplicationRecord end end + def signon_url(mini_environment) + "https://signon.#{mini_environment.name.parameterize}.#{domain}" + end + def terraform_variables(mini_environment) - mini_environment.backend_data.merge( + { uri: uri, - machine_name: mini_environment.name.parameterize - ) + machine_name: mini_environment.name.parameterize, + vm_image_and_system: mini_environment.backend_data['build_output'] + } end end |