Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move Code Build and Code Pipeline setup to terraform #12

Closed
hellais opened this issue Mar 6, 2024 · 0 comments · Fixed by #13
Closed

Move Code Build and Code Pipeline setup to terraform #12

hellais opened this issue Mar 6, 2024 · 0 comments · Fixed by #13
Assignees
Labels
enhancement improving existing code or new feature funder/otffoss2023-2024 priority/low

Comments

@hellais
Copy link
Member

hellais commented Mar 6, 2024

As part of ooni/backend#796 I wrote the Code Build and Code Pipeline workflows directly from the AWS UI (it was easier to understand what was going on and how they worked from the web interface).

We should at some point move that into the terraform configuration so that it's reproducibly deployed and can be easily extended to other projects without needing to click through UIs.

@hellais hellais added enhancement improving existing code or new feature priority/low labels Mar 6, 2024
@hellais hellais assigned hellais and unassigned DecFox Mar 7, 2024
hellais added a commit that referenced this issue Mar 14, 2024
… Github User (#13)

Refactor the various resource groups into modules to make
it easier to develop the test environment.

See: #6

Convert to terraform the CodeBuild and CodePipeline projects that were
previously created through the web UI (fixes:
#12) and add support for an nginx
based API gateway (fixes: #7)

Also includes changes implemented by @DecFox

feat: add OONI Dev User for GH actions (#17)

This adds a new IAM user: ooni_dev_user which shall be used as the
github user to run terraform apply. This IAM user has been given minimal
ReadOnly permissions to resources which allow it to successfully run
`terraform plan`

Regarding CodeBuild and CodePipeline terraform conversion we made use the of the
terraformer tool running it like this:

```
terraformer import aws --resources=ec2,codebuild,codepipeline,iam --regions=eu-central-1
```

The output of this tool cannot be used as-is, but instead required a bit
of massaging to adapt it to the conventions used in the ooni terraform
scripts and hook it up to the existing variables, however it was very
helpful to bootstrap the config.

For the nginx API gateway, the actual configuration is still missing,
but the general idea is that we will have a Elastic Load Balancer rule
to forward requests to the nginx reverse proxy running in EC2 or the
dataapi running on ECS.

Note:

As part of this work I also did some refactoring of the names of some of
the resources and items inside of the terraform config. In doing so this
triggered a destruction and re-creation of all relevant resources, which
is I guess a nice lesson learned (I actually saw it from the plan, but
was curious to see what would happen).

In the future if we would like to do this kind of refactoring we should
be sure to make use of the `moved` syntax in terraform like this:
https://developer.hashicorp.com/terraform/language/modules/develop/refactoring#moved-block-syntax
or manually move the state by running `terraform mv`.

---------

Co-authored-by: DecFox <33030671+DecFox@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement improving existing code or new feature funder/otffoss2023-2024 priority/low
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants