-
Notifications
You must be signed in to change notification settings - Fork 3
Conversation
This will hold our global config to be used in other resources
7a09b5d
to
7fc4711
Compare
This commit has largely been lifted from our backing services module for Postgres Aurora. It creates a Postgres Aurora cluster and writes the outputs of that to SSM. If no master username / password is given, these are generated as a random strings and saved to SSM using SecureString where necessary. If not postgres_name is given, it defaults to using using the terraform-null-label outputted id.
This is part of terraform-root-modules backing service but I think we will likely want to create the VPC outside of this module and pass it in. I’ve left in for now but we can take out later.
This is used to pull information from our kops cluser by doing a load of data lookups based on some tags. We can then pass things like Kops node security groups around to be used by other modules.
This commit adds ActiveMQ broker and config for CodeFresh Enterprise. An admin user is created and credentials stored encrypted in SSM. A DNS hostname is created for the ActiveMQ endpoints. Note that unlike the other backing modules in here, AmazonMQ resources are not currently their own module. There are only a handful of resources for this AmazonMQ stuff but we can pull it out into a module if we so wish. The default ActiveMQ config [1] has been added. This is optional in the `aws_mq_broker` but due to Terraform not supporting conditional blocks beyond a basic count, it is a pain to conditionally add this. The schema can be found [2] [1] http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/release/conf/activemq.xml [2] https://s3-us-west-2.amazonaws.com/amazon-mq-docs/XML/amazon-mq-active-mq-5.15.0.xsd
We will be injecting these resources into an existing VPC
3.2.10 doesn’t support encryption, see below: ``` Error creating Elasticache Replication Group: InvalidParameterCombination: Encryption features are not supported for engine version 3.2.10. Please use engine version 3.2.6 ```
7fc4711
to
abaee64
Compare
aurora-postgres.tf
Outdated
@@ -0,0 +1,188 @@ | |||
variable "postgres_name" { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not needed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
use var.name
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@osterman should we move all variables from all files into variables.tf
for consistency?
since this is a low-level module and not part of terraform-root-modules
(where we include variables into the main files)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and also all outputs to outputs.tf
aurora-postgres.tf
Outdated
variable "postgres_cluster_family" { | ||
type = "string" | ||
default = "aurora-postgresql9.6" | ||
description = "Postgres cluster DB family. Currently supported values are aurora-postgresql9.6 / aurora-postgresql10" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
description = "Postgres cluster DB family. Currently supported values are aurora-postgresql9.6 / aurora-postgresql10" | |
description = "Postgres cluster DB family. Currently supported values are `aurora-postgresql9.6` and `aurora-postgresql10`" |
mq.t2.micro is likely not what you want in production.
It is in use in all the submodule we call and we delegate down to them for naming.
a6dc16e
to
7e06728
Compare
To ensure we can use enabled flags on it
Since we have the initial PR merged and have cut a release
Bump aws-mq-broker to 0.3.0, which does not feature enabled flags, so remove them. In its current incarnation the terraform-aws-mq-broker does not support the enabled variable allowing for boolean creation of resources in the module, see [1] for more context. [1] cloudposse/terraform-aws-mq-broker#4
This commit adds variables to enable overriding what VPC and subnet that EFS runs in. If you don’t provide them, it default back to the `var.vpc_id` and `var.subnet_ids` values. During testing of this module, we found something interesting. We were deploying EFS to the backing services VPC, which is a different VPC to the k8s cluster. Our pods were unable to resolve the DNS endpoint of the EFS cluster, despite there being VPC peering between the two, with DNS lookups between them enabled. AWS documentation [1] states that in this scenario, you have a few options: 1) Use the EFS IP address directly (no thanks) 2) Create a DNS entry in Route53 CNAME’ing to the EFS DNS endpoint in a private hosted zone The underlying EFS module does already create a Route53 DNS entry CNAME to the EFS DNS endpoint, but it isn’t in a private zone. The pod could not resolve the Route53 DNS. Deploying EFS into the _same_ VPC as the k8s nodes worked a treat and finally the pods were able to resolve and mount EFS volumes. [1] https://docs.aws.amazon.com/efs/latest/ug/manage-fs-access-vpc-peering.html
Remove |
Remove |
Fix To be honest I'm not sure I set |
CodeFresh Enterprise is not compatible with AmazonMQ on the protocol level and EFS will be moved into a general Kops backing service.
These should be in the caller module, not this generic module.
README.yaml
Outdated
- AWS Elasticache Redis | ||
- AWS AmazonMQ (ActiveMQ) | ||
- AWS S3 bucket with associated user and permissions | ||
- AWS EFS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- AWS EFS |
|
||
variable "redis_cluster_enabled" { | ||
type = "string" | ||
default = "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
default = "" | |
default = "true" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@goruha This is not needed and will fall back on enabled
for the whole module if we don't override a specific service enabled flag like this. It was done like this so we could turn enable/disable individual services if we needed, rather than the entire module enable/disabled
|
||
variable "postgres_cluster_enabled" { | ||
type = "string" | ||
default = "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
default = "" | |
default = "true" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@goruha This is not needed and will fall back on enabled for the whole module if we don't override a specific service enabled flag like this. It was done like this so we could turn enable/disable individual services if we needed, rather than the entire module enable/disabled
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For terraform-root-modules
I 💯 agree. For this module, I am on the fence.
|
||
variable "postgres_cluster_enabled" { | ||
type = "string" | ||
default = "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For terraform-root-modules
I 💯 agree. For this module, I am on the fence.
what
This PR is a standalone Terraform module to create CodeFresh Enterprise backing services:
Note that this is WIP until cloudposse/terraform-aws-s3-bucket#1 and https://github.com/cloudposse/terraform-aws-mq-broker have been addressed.
why
So we can run CodeFresh Enterprise in Kops clusters.
testing
Given the below variable tfvars:
Note that when ActiveMQ is running in
ACTIVE_STANDBY_MULTI_AZ
mode, it only takes 2 subnets and will error if more are given. We could just usesubnet_ids
and pick 2 of the list.Running the thing:
Note that values are written into SSM as so: