aboutsummaryrefslogtreecommitdiff
path: root/app/models/backends
Commit message (Collapse)AuthorAge
* Start tracking which store paths are in useChristopher Baines2019-01-01
| | | | | This will enable garbage collection of the Guix store, without removing things that are still in use.
* Fix libvirts to libvirtChristopher Baines2018-12-31
|
* Only show available backends on the setup pageChristopher Baines2018-07-05
|
* Improve the public ip address handlingChristopher Baines2018-07-05
| | | | | Support multiple addresses to handle the GOV.UK PaaS, which has multiple egress points.
* Use database locking to prevent concurrent Terraform jobsChristopher Baines2018-07-04
| | | | | | | | | | | | Currently, the Terraform code uses chdir in the Ruby process to change to the right working directory. This affects all threads in the process, and thus means that all Terraform jobs conflict with each other. It would be good to fix this somehow, e.g. not changing directory, and just specifying the directory in which to run Terraform when starting it, but for now, use the advisory locks to force the jobs to run sequentially.
* Pass the terraform credentials to the remote state configurationChristopher Baines2018-07-04
| | | | | This fixes the mini environment Terraform working, now that the backend is protected by basic authentication.
* Handle the Guix signing-key not existingrelease_9Christopher Baines2018-07-03
| | | | | Other parts of the code handle not having Guix locally, so add support here also.
* Use Plek for finding the GOV.UK Mini Environment Adminrelease_7Christopher Baines2018-07-03
| | | | Rather than hardcoding localhost.
* Fix the CreateDataSnapshotJobChristopher Baines2018-07-01
| | | | To better handle remote hosts.
* Neaten up SSH handlingChristopher Baines2018-06-24
| | | | | Explicitly use the specified private key where possible. Also, use a struct for the user, address and private key.
* Add locking around all Terraform actionsChristopher Baines2018-06-24
| | | | | To prevent them conflicting. Terraform itself has a locking mechanism, which isn't being used, but this should be sufficient.
* Refactor the backends to use a method for working with TerraformChristopher Baines2018-06-24
|
* Switch to using the public AWS domain of the build machineChristopher Baines2018-06-23
| | | | | | Rather than the configured domain, as the corresponding SSH key shouldn't change for the AWS domain (whereas it does for the configured domain, if the machine changes).
* Support 'Stopping' the AWS backendChristopher Baines2018-06-23
| | | | Which means just destroying the build machine.
* Support the refresh action on the terraform aws backendChristopher Baines2018-06-23
|
* Support refreshing the state of backendsChristopher Baines2018-06-23
|
* Add support for managing Terraform AWS backends from the show pageChristopher Baines2018-06-23
|
* Split out a couple of modules from the TerraformAws classChristopher Baines2018-06-23
|
* Support managing the libvirt backend from the show pageChristopher Baines2018-06-23
|
* Handle SSH keys via the databaseChristopher Baines2018-06-23
| | | | | This makes it more explicit, and works around Terraform being unpredictable when dealing with SSH agents.
* Replace the GovukGuix::BuildJobChristopher Baines2018-06-22
| | | | | With a service that performs the same function, and use the MiniEnvironmentJob instead.
* Add a refresh action to the MiniEnvironment classChristopher Baines2018-06-21
| | | | | This can then be used to update the Terraform state for the Mini Environment.
* Add a terraform_states method to MiniEnvironmentChristopher Baines2018-06-21
|
* Extract out the mini_environment_state_id to a methodChristopher Baines2018-06-21
| | | | So that it can be used in other methods.
* Split BackendMethods out of TerraformLibvirtChristopher Baines2018-06-21
| | | | This makes the TerraformLibvirt class shorter, and easier to read.
* Split MiniEnvironmentMethods out of TerraformLibvirtChristopher Baines2018-06-21
| | | | | Separate the mini environment related methods in to a module, to make both more readable.
* Also share the /var/log directory with the hostChristopher Baines2018-06-04
|
* Share /var/cache and /var/lib with the hostChristopher Baines2018-06-03
| | | | | In the AWS backend. This means that they don't end up on a tmpfs and using up RAM.
* Add support for destroying Terraform AWS backendsChristopher Baines2018-06-03
|
* Extract the backend variables out in the AWS backendChristopher Baines2018-06-03
|
* Support data snapshots for the AWS backendChristopher Baines2018-06-03
|
* Change how the EFS File System is handledChristopher Baines2018-06-03
| | | | | | | | | | For the AWS backend. Bring it in to the Terraform configuration for the backend, where previously only the id was known. Also, alter the provisioning so that it can handle an empty EFS file system. This reduces the amount of manual setup required for AWS.
* Pass the data-snapshot to govuk-system in the build jobChristopher Baines2018-06-01
| | | | For the Terraform libvirt backend.
* Support selecting a data snapshot on the services pageChristopher Baines2018-06-01
|
* Use basic authentication for mini environmentsChristopher Baines2018-05-30
| | | | | | To avoid the origin being too easy to access, which could potentially be misleading as a mini environment isn't the real GOV.UK website, although it might look similar.
* Use proper error pages for mini environmentsChristopher Baines2018-05-30
|
* Use the services specified when building mini environmentsChristopher Baines2018-05-30
|
* Remove duplicated build optionChristopher Baines2018-05-28
|
* Improve the AWS backendChristopher Baines2018-05-03
| | | | | | This gets the AWS backend to the point where you can deploy the backend, and then a mini environment without any actions outside of the govuk-mini-environment-admin.
* Add extra fields to the Terraform AWS backendChristopher Baines2018-05-03
|
* Improve the support for LibvirtChristopher Baines2018-04-12
| | | | | | | | | Separate out the backend things, like the virtual network, from the mini environment. This makes it easier to have resources shared between mini environments. Also handle the deployment of this new backend related Terraform configuration.
* Move the terraform utilities to lib/Christopher Baines2018-04-12
| | | | | | | | | Change the module to a class, which is used to represent a terraform working directory. Change the routing for the terraform http backends, to remove any connection with mini environments, and remove this concern from the new TerraformWorkingDirectory class also.
* License under the AGPLv3+Christopher Baines2018-04-12
|
* Provide the AWS access key and secret as variablesChristopher Baines2018-04-03
| | | | To terraform.
* Add domains to backends, and rework build jobsChristopher Baines2018-04-03
| | | | | | | 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.
* Add missing importsChristopher Baines2018-04-03
|
* Fix plugin_dir in Backends::TerraformChristopher Baines2018-04-03
|
* Refactor the backendsChristopher Baines2018-04-03
| | | | Add a with_terraform helper, which simplifies both backends.
* Remove a redundant methodChristopher Baines2018-04-03
| | | | This is only used in the AWS backend.
* Appease RubocopChristopher Baines2018-04-03
|