https://github.com/infrablocks/terraform-mongodbatlas-cluster
A Terraform module for creating a MongoDB cluster in MongoDB Atlas.
https://github.com/infrablocks/terraform-mongodbatlas-cluster
infrastructure mongodb mongodb-atlas terraform terraform-modules
Last synced: 6 months ago
JSON representation
A Terraform module for creating a MongoDB cluster in MongoDB Atlas.
- Host: GitHub
- URL: https://github.com/infrablocks/terraform-mongodbatlas-cluster
- Owner: infrablocks
- License: mit
- Created: 2021-02-18T12:36:23.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2024-10-28T18:42:26.000Z (about 1 year ago)
- Last Synced: 2024-10-28T19:46:25.704Z (about 1 year ago)
- Topics: infrastructure, mongodb, mongodb-atlas, terraform, terraform-modules
- Language: Ruby
- Homepage:
- Size: 226 KB
- Stars: 3
- Watchers: 7
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
Terraform MongoDB Atlas Cluster
===============================
[](https://circleci.com/gh/infrablocks/terraform-mongodbatlas-cluster)
A Terraform module for creating a MongoDB cluster in MongoDB Atlas.
The MongoDB cluster requires:
* An existing project within a MongoDB organisation
The MongoDB cluster consists of:
* TODO
Usage
-----
To use the module, include something like the following in your Terraform
configuration:
```hcl-terraform
module "mongodbatlas_cluster" {
source = "infrablocks/cluster/mongodbatlas"
version = "0.1.0"
}
```
As mentioned above, the cluster deploys into an existing project.
Whilst the project can be created using any mechanism you like, the
[MongoDB Atlas Project](https://github.com/infrablocks/terraform-mongodbatlas-project)
module will create everything you need. See the
[docs](https://github.com/infrablocks/terraform-mongodbatlas-project/blob/master/README.md)
for usage instructions.
See the
[Terraform registry entry](https://registry.terraform.io/modules/infrablocks/cluster/mongodbatlas/latest)
for more details.
### Inputs
| Name | Description | Default | Required |
|----------------------------------|-------------------------------------------------------------------------------|:-------------------:|:------------------------------------:|
### Outputs
| Name | Description |
|-----------------------------------------|-----------------------------------------------------------|
### Compatibility
This module is compatible with Terraform versions greater than or equal to
Terraform 1.0.
Development
-----------
### Machine Requirements
In order for the build to run correctly, a few tools will need to be installed
on your development machine:
* Ruby (3.1.1)
* Bundler
* git
* git-crypt
* gnupg
* direnv
#### Mac OS X Setup
Installing the required tools is best managed by [homebrew](http://brew.sh).
To install homebrew:
```
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
Then, to install the required tools:
```
# ruby
brew install rbenv
brew install ruby-build
echo 'eval "$(rbenv init - bash)"' >> ~/.bash_profile
echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc
eval "$(rbenv init -)"
rbenv install 3.1.1
rbenv rehash
rbenv local 3.1.1
gem install bundler
# git, git-crypt, gnupg
brew install git
brew install git-crypt
brew install gnupg
# direnv
brew install direnv
echo "$(direnv hook bash)" >> ~/.bash_profile
echo "$(direnv hook zsh)" >> ~/.zshrc
eval "$(direnv hook $SHELL)"
direnv allow
```
### Running the build
To provision module infrastructure, run tests and then destroy that
infrastructure, execute:
```bash
./go
```
To provision the module contents:
```bash
./go deployment:root:provision[]
```
To destroy the module contents:
```bash
./go deployment:root:destroy[]
```
### Common Tasks
#### Generating an SSH key pair
To generate an SSH key pair:
```
ssh-keygen -m PEM -t rsa -b 4096 -C integration-test@example.com -N '' -f config/secrets/keys/bastion/ssh
```
#### Generating a self-signed certificate
To generate a self signed certificate:
```
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
```
To decrypt the resulting key:
```
openssl rsa -in key.pem -out ssl.key
```
#### Add a git-crypt user
To adding a user to git-crypt using their GPG key:
```
gpg --import ~/path/xxxx.pub
git-crypt add-gpg-user --trusted GPG-USER-ID
```
#### Managing CircleCI keys
To encrypt a GPG key for use by CircleCI:
```bash
openssl aes-256-cbc \
-e \
-md sha1 \
-in ./config/secrets/ci/gpg.private \
-out ./.circleci/gpg.private.enc \
-k ""
```
To check decryption is working correctly:
```bash
openssl aes-256-cbc \
-d \
-md sha1 \
-in ./.circleci/gpg.private.enc \
-k ""
```
Contributing
------------
Bug reports and pull requests are welcome on GitHub at
https://github.com/infrablocks/terraform-mongodbatlas-cluster.
This project is intended to be a safe, welcoming space for collaboration, and
contributors are expected to adhere to the
[Contributor Covenant](http://contributor-covenant.org) code of conduct.
License
-------
The library is available as open source under the terms of the
[MIT License](http://opensource.org/licenses/MIT).