aboutsummaryrefslogtreecommitdiff
path: root/app/models
Commit message (Collapse)AuthorAge
* Add a new AWS backend using Amazon Machine ImagesChristopher Baines2019-05-30
| | | | | | | | | | | | | | | | | | | | | | | The existing AWS backend uses system containers backed on to the AWS hosted NFS service (EFS). This has some advantages, but also some disadvantages. Using the EFS service allows building a container on one instance, with the state being held on the EFS, and then launching a new instance to run the container. Using EFS also provides persistence, at least beyond individual EC2 instances. However, build performance when using EFS is poor compared with a local store without the overhead of the network latency. Additionally, the startup speed of the container running off EFS is slow compared to local storage. This backend doesn't use EFS, instead the Guix store sits on instance storage. Rather than using a system container for a Mini Environment, an Amazon Machine Image (AMI) is built instead. The fast local storage makes builds faster, and using EBS storage for the Mini Envirnoments as well as not having the overhead of starting Ubuntu, then starting the container also makes startup faster.
* Add support for archiving mini environmentsChristopher Baines2019-01-06
|
* Support archiving govuk-guix revisionsChristopher Baines2019-01-06
|
* 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 some basic status support for mini environmentsChristopher Baines2018-06-21
| | | | | This should enable making the show page better, as it can actually start displaying the status, and appropriate actions.
* Remove FinishedTerraformJobChristopher Baines2018-06-21
| | | | | This is no longer necessary, as Que now supports keeping the job entries around in the que_jobs table.
* Replace the has_many terraform_states with a methodChristopher Baines2018-06-21
| | | | As the has_many didn't work, as the key is not what Rails expects.
* 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.
* Remove some redundant loggingChristopher Baines2018-06-21
|
* Add some methods to the TerraformState classChristopher Baines2018-06-21
|
* 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.
* Update Que to 1.0.0 (beta 3)Christopher Baines2018-06-21
|
* 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
|
* Add an optional DataSnapshot to the MiniEnvironment modelChristopher Baines2018-06-01
| | | | To store if a DataSnapshot is being used.
* Add a basic description method to GovukGuix::DataSnapshotChristopher Baines2018-06-01
| | | | This is for use when rendering these in a view.
* Add an optional association to backends for data snapshotsChristopher Baines2018-06-01
| | | | | | | I'm a bit unsure about this, but it feels like generating snapshots remotely is useful, but if that is supported, then a remote snapshot won't be available locally to use. Adding the option of making them backend specific is one way of working around this.
* Change the signature of Backends.find_by_type_and_idChristopher Baines2018-06-01
| | | | | | | It now takes two arguments, and when used by the MiniEnvironmentsController, the split is performed there. This makes it easier to reuse elsewhere in the codebase.
* Add the GovukGuix::Revision commit_hash to the DataSnapshot modelChristopher Baines2018-06-01
| | | | | This is to record the revision of govuk-guix used to create the snapshot.
* Add a new DataSnapshot model to store data snapshotsChristopher Baines2018-05-30
|
* 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.